-
-
Save fabiconcept/2982e510f2f8301bb6398586d68c273e to your computer and use it in GitHub Desktop.
// SPDX-License-Identifier: MIT | |
// OpenZeppelin Contracts (last updated v4.8.0) (access/AccessControl.sol) | |
pragma solidity ^0.8.0; | |
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol"; | |
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol"; | |
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol"; | |
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol"; | |
/** | |
* @dev Contract module that allows children to implement role-based access | |
* control mechanisms. This is a lightweight version that doesn't allow enumerating role | |
* members except through off-chain means by accessing the contract event logs. Some | |
* applications may benefit from on-chain enumerability, for those cases see | |
* {AccessControlEnumerable}. | |
* | |
* Roles are referred to by their `bytes32` identifier. These should be exposed | |
* in the external API and be unique. The best way to achieve this is by | |
* using `public constant` hash digests: | |
* | |
* ``` | |
* bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); | |
* ``` | |
* | |
* Roles can be used to represent a set of permissions. To restrict access to a | |
* function call, use {hasRole}: | |
* | |
* ``` | |
* function foo() public { | |
* require(hasRole(MY_ROLE, msg.sender)); | |
* ... | |
* } | |
* ``` | |
* | |
* Roles can be granted and revoked dynamically via the {grantRole} and | |
* {revokeRole} functions. Each role has an associated admin role, and only | |
* accounts that have a role's admin role can call {grantRole} and {revokeRole}. | |
* | |
* By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means | |
* that only accounts with this role will be able to grant or revoke other | |
* roles. More complex role relationships can be created by using | |
* {_setRoleAdmin}. | |
* | |
* WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to | |
* grant and revoke this role. Extra precautions should be taken to secure | |
* accounts that have been granted it. | |
*/ | |
abstract contract AccessControl is Context, IAccessControl, ERC165 { | |
struct RoleData { | |
mapping(address => bool) members; | |
bytes32 adminRole; | |
} | |
mapping(bytes32 => RoleData) private _roles; | |
bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; | |
/** | |
* @dev Modifier that checks that an account has a specific role. Reverts | |
* with a standardized message including the required role. | |
* | |
* The format of the revert reason is given by the following regular expression: | |
* | |
* /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ | |
* | |
* _Available since v4.1._ | |
*/ | |
modifier onlyRole(bytes32 role) { | |
_checkRole(role); | |
_; | |
} | |
/** | |
* @dev See {IERC165-supportsInterface}. | |
*/ | |
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { | |
return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); | |
} | |
/** | |
* @dev Returns `true` if `account` has been granted `role`. | |
*/ | |
function hasRole(bytes32 role, address account) public view virtual override returns (bool) { | |
return _roles[role].members[account]; | |
} | |
/** | |
* @dev Revert with a standard message if `_msgSender()` is missing `role`. | |
* Overriding this function changes the behavior of the {onlyRole} modifier. | |
* | |
* Format of the revert message is described in {_checkRole}. | |
* | |
* _Available since v4.6._ | |
*/ | |
function _checkRole(bytes32 role) internal view virtual { | |
_checkRole(role, _msgSender()); | |
} | |
/** | |
* @dev Revert with a standard message if `account` is missing `role`. | |
* | |
* The format of the revert reason is given by the following regular expression: | |
* | |
* /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ | |
*/ | |
function _checkRole(bytes32 role, address account) internal view virtual { | |
if (!hasRole(role, account)) { | |
revert( | |
string( | |
abi.encodePacked( | |
"AccessControl: account ", | |
Strings.toHexString(account), | |
" is missing role ", | |
Strings.toHexString(uint256(role), 32) | |
) | |
) | |
); | |
} | |
} | |
/** | |
* @dev Returns the admin role that controls `role`. See {grantRole} and | |
* {revokeRole}. | |
* | |
* To change a role's admin, use {_setRoleAdmin}. | |
*/ | |
function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { | |
return _roles[role].adminRole; | |
} | |
/** | |
* @dev Grants `role` to `account`. | |
* | |
* If `account` had not been already granted `role`, emits a {RoleGranted} | |
* event. | |
* | |
* Requirements: | |
* | |
* - the caller must have ``role``'s admin role. | |
* | |
* May emit a {RoleGranted} event. | |
*/ | |
function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { | |
_grantRole(role, account); | |
} | |
/** | |
* @dev Revokes `role` from `account`. | |
* | |
* If `account` had been granted `role`, emits a {RoleRevoked} event. | |
* | |
* Requirements: | |
* | |
* - the caller must have ``role``'s admin role. | |
* | |
* May emit a {RoleRevoked} event. | |
*/ | |
function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { | |
_revokeRole(role, account); | |
} | |
/** | |
* @dev Revokes `role` from the calling account. | |
* | |
* Roles are often managed via {grantRole} and {revokeRole}: this function's | |
* purpose is to provide a mechanism for accounts to lose their privileges | |
* if they are compromised (such as when a trusted device is misplaced). | |
* | |
* If the calling account had been revoked `role`, emits a {RoleRevoked} | |
* event. | |
* | |
* Requirements: | |
* | |
* - the caller must be `account`. | |
* | |
* May emit a {RoleRevoked} event. | |
*/ | |
function renounceRole(bytes32 role, address account) public virtual override { | |
require(account == _msgSender(), "AccessControl: can only renounce roles for self"); | |
_revokeRole(role, account); | |
} | |
/** | |
* @dev Grants `role` to `account`. | |
* | |
* If `account` had not been already granted `role`, emits a {RoleGranted} | |
* event. Note that unlike {grantRole}, this function doesn't perform any | |
* checks on the calling account. | |
* | |
* May emit a {RoleGranted} event. | |
* | |
* [WARNING] | |
* ==== | |
* This function should only be called from the constructor when setting | |
* up the initial roles for the system. | |
* | |
* Using this function in any other way is effectively circumventing the admin | |
* system imposed by {AccessControl}. | |
* ==== | |
* | |
* NOTE: This function is deprecated in favor of {_grantRole}. | |
*/ | |
function _setupRole(bytes32 role, address account) internal virtual { | |
_grantRole(role, account); | |
} | |
/** | |
* @dev Sets `adminRole` as ``role``'s admin role. | |
* | |
* Emits a {RoleAdminChanged} event. | |
*/ | |
function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { | |
bytes32 previousAdminRole = getRoleAdmin(role); | |
_roles[role].adminRole = adminRole; | |
emit RoleAdminChanged(role, previousAdminRole, adminRole); | |
} | |
/** | |
* @dev Grants `role` to `account`. | |
* | |
* Internal function without access restriction. | |
* | |
* May emit a {RoleGranted} event. | |
*/ | |
function _grantRole(bytes32 role, address account) internal virtual { | |
if (!hasRole(role, account)) { | |
_roles[role].members[account] = true; | |
emit RoleGranted(role, account, _msgSender()); | |
} | |
} | |
/** | |
* @dev Revokes `role` from `account`. | |
* | |
* Internal function without access restriction. | |
* | |
* May emit a {RoleRevoked} event. | |
*/ | |
function _revokeRole(bytes32 role, address account) internal virtual { | |
if (hasRole(role, account)) { | |
_roles[role].members[account] = false; | |
emit RoleRevoked(role, account, _msgSender()); | |
} | |
} | |
} |
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"gasEstimates": null, | |
"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" | |
} | |
}, | |
"abi": [ | |
{ | |
"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": "account", | |
"type": "address" | |
} | |
], | |
"name": "renounceRole", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "bytes32", | |
"name": "role", | |
"type": "bytes32" | |
}, | |
{ | |
"internalType": "address", | |
"name": "account", | |
"type": "address" | |
} | |
], | |
"name": "revokeRole", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "bytes4", | |
"name": "interfaceId", | |
"type": "bytes4" | |
} | |
], | |
"name": "supportsInterface", | |
"outputs": [ | |
{ | |
"internalType": "bool", | |
"name": "", | |
"type": "bool" | |
} | |
], | |
"stateMutability": "view", | |
"type": "function" | |
} | |
] | |
} |
{ | |
"compiler": { | |
"version": "0.8.17+commit.8df45f5f" | |
}, | |
"language": "Solidity", | |
"output": { | |
"abi": [ | |
{ | |
"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": "account", | |
"type": "address" | |
} | |
], | |
"name": "renounceRole", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "bytes32", | |
"name": "role", | |
"type": "bytes32" | |
}, | |
{ | |
"internalType": "address", | |
"name": "account", | |
"type": "address" | |
} | |
], | |
"name": "revokeRole", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "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: ``` bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.", | |
"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 `account`. 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": "See {IERC165-supportsInterface}." | |
} | |
}, | |
"version": 1 | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
}, | |
"settings": { | |
"compilationTarget": { | |
".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol": "AccessControl" | |
}, | |
"evmVersion": "london", | |
"libraries": {}, | |
"metadata": { | |
"bytecodeHash": "ipfs" | |
}, | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"remappings": [] | |
}, | |
"sources": { | |
".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol": { | |
"keccak256": "0xc6aeb9f1673d5380dc76e9ce85962ccf3a05fac9a1f10d2a51d3c3814e12e9a2", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://566492414470a188702c2ad47f57b58855638da935261700bd2f0c2320498940", | |
"dweb:/ipfs/QmQUKa1MyCz7149VJUW66xBJyj9omdp79QugKFi2U92W47" | |
] | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol": { | |
"keccak256": "0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a", | |
"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh" | |
] | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol": { | |
"keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", | |
"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" | |
] | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol": { | |
"keccak256": "0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634", | |
"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb" | |
] | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol": { | |
"keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d", | |
"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43" | |
] | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol": { | |
"keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", | |
"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy" | |
] | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol": { | |
"keccak256": "0xba1ae0497d71bf30f3710c38aba13a5b68c31d81ff04dd73e5dd55a05a9c903d", | |
"license": "MIT", | |
"urls": [ | |
"bzz-raw://d77f4aee3f6534fe2dbc6583385fc123340f8ccb9bf3c8c04555e538a3d9a4b5", | |
"dweb:/ipfs/QmVtP4Fz9tB2DFvMHJaSFbLxnEHE1NKDA92fviV7jDkEnL" | |
] | |
} | |
}, | |
"version": 1 | |
} |
{ | |
"id": "c9b05aa2d921dcd97dade753fc02457e", | |
"_format": "hh-sol-build-info-1", | |
"solcVersion": "0.8.17", | |
"solcLongVersion": "0.8.17+commit.8df45f5f", | |
"input": { | |
"language": "Solidity", | |
"sources": { | |
".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol": { | |
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.0;\n\nimport \"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol\";\nimport \"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol\";\nimport \"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol\";\nimport \"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\n struct RoleData {\n mapping(address => bool) members;\n bytes32 adminRole;\n }\n\n mapping(bytes32 => RoleData) private _roles;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with a standardized message including the required role.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n *\n * _Available since v4.1._\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual override returns (bool) {\n return _roles[role].members[account];\n }\n\n /**\n * @dev Revert with a standard message if `_msgSender()` is missing `role`.\n * Overriding this function changes the behavior of the {onlyRole} modifier.\n *\n * Format of the revert message is described in {_checkRole}.\n *\n * _Available since v4.6._\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Revert with a standard message if `account` is missing `role`.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert(\n string(\n abi.encodePacked(\n \"AccessControl: account \",\n Strings.toHexString(account),\n \" is missing role \",\n Strings.toHexString(uint256(role), 32)\n )\n )\n );\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) {\n return _roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address account) public virtual override {\n require(account == _msgSender(), \"AccessControl: can only renounce roles for self\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event. Note that unlike {grantRole}, this function doesn't perform any\n * checks on the calling account.\n *\n * May emit a {RoleGranted} event.\n *\n * [WARNING]\n * ====\n * This function should only be called from the constructor when setting\n * up the initial roles for the system.\n *\n * Using this function in any other way is effectively circumventing the admin\n * system imposed by {AccessControl}.\n * ====\n *\n * NOTE: This function is deprecated in favor of {_grantRole}.\n */\n function _setupRole(bytes32 role, address account) internal virtual {\n _grantRole(role, account);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n bytes32 previousAdminRole = getRoleAdmin(role);\n _roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual {\n if (!hasRole(role, account)) {\n _roles[role].members[account] = true;\n emit RoleGranted(role, account, _msgSender());\n }\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual {\n if (hasRole(role, account)) {\n _roles[role].members[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n }\n }\n}\n" | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol": { | |
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 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 *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n" | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol": { | |
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n}\n" | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol": { | |
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n" | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol": { | |
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) external;\n}\n" | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol": { | |
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n" | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol": { | |
"content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(\n uint256 x,\n uint256 y,\n uint256 denominator\n ) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1, \"Math: mulDiv overflow\");\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(\n uint256 x,\n uint256 y,\n uint256 denominator,\n Rounding rounding\n ) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10**64) {\n value /= 10**64;\n result += 64;\n }\n if (value >= 10**32) {\n value /= 10**32;\n result += 32;\n }\n if (value >= 10**16) {\n value /= 10**16;\n result += 16;\n }\n if (value >= 10**8) {\n value /= 10**8;\n result += 8;\n }\n if (value >= 10**4) {\n value /= 10**4;\n result += 4;\n }\n if (value >= 10**2) {\n value /= 10**2;\n result += 2;\n }\n if (value >= 10**1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n}\n" | |
} | |
}, | |
"settings": { | |
"optimizer": { | |
"enabled": false, | |
"runs": 200 | |
}, | |
"outputSelection": { | |
"*": { | |
"": [ | |
"ast" | |
], | |
"*": [ | |
"abi", | |
"metadata", | |
"devdoc", | |
"userdoc", | |
"storageLayout", | |
"evm.legacyAssembly", | |
"evm.bytecode", | |
"evm.deployedBytecode", | |
"evm.methodIdentifiers", | |
"evm.gasEstimates", | |
"evm.assembly" | |
] | |
} | |
} | |
} | |
}, | |
"output": { | |
"contracts": { | |
".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol": { | |
"AccessControl": { | |
"abi": [ | |
{ | |
"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": "account", | |
"type": "address" | |
} | |
], | |
"name": "renounceRole", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "bytes32", | |
"name": "role", | |
"type": "bytes32" | |
}, | |
{ | |
"internalType": "address", | |
"name": "account", | |
"type": "address" | |
} | |
], | |
"name": "revokeRole", | |
"outputs": [], | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"inputs": [ | |
{ | |
"internalType": "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: ``` bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.", | |
"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 `account`. 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": "See {IERC165-supportsInterface}." | |
} | |
}, | |
"version": 1 | |
}, | |
"evm": { | |
"assembly": "", | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"gasEstimates": null, | |
"legacyAssembly": null, | |
"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.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"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: ``` bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.\",\"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 `account`. 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\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xc6aeb9f1673d5380dc76e9ce85962ccf3a05fac9a1f10d2a51d3c3814e12e9a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://566492414470a188702c2ad47f57b58855638da935261700bd2f0c2320498940\",\"dweb:/ipfs/QmQUKa1MyCz7149VJUW66xBJyj9omdp79QugKFi2U92W47\"]},\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xba1ae0497d71bf30f3710c38aba13a5b68c31d81ff04dd73e5dd55a05a9c903d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d77f4aee3f6534fe2dbc6583385fc123340f8ccb9bf3c8c04555e538a3d9a4b5\",\"dweb:/ipfs/QmVtP4Fz9tB2DFvMHJaSFbLxnEHE1NKDA92fviV7jDkEnL\"]}},\"version\":1}", | |
"storageLayout": { | |
"storage": [ | |
{ | |
"astId": 24, | |
"contract": ".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol:AccessControl", | |
"label": "_roles", | |
"offset": 0, | |
"slot": "0", | |
"type": "t_mapping(t_bytes32,t_struct(RoleData)19_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)19_storage)": { | |
"encoding": "mapping", | |
"key": "t_bytes32", | |
"label": "mapping(bytes32 => struct AccessControl.RoleData)", | |
"numberOfBytes": "32", | |
"value": "t_struct(RoleData)19_storage" | |
}, | |
"t_struct(RoleData)19_storage": { | |
"encoding": "inplace", | |
"label": "struct AccessControl.RoleData", | |
"members": [ | |
{ | |
"astId": 16, | |
"contract": ".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol:AccessControl", | |
"label": "members", | |
"offset": 0, | |
"slot": "0", | |
"type": "t_mapping(t_address,t_bool)" | |
}, | |
{ | |
"astId": 18, | |
"contract": ".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol:AccessControl", | |
"label": "adminRole", | |
"offset": 0, | |
"slot": "1", | |
"type": "t_bytes32" | |
} | |
], | |
"numberOfBytes": "64" | |
} | |
} | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
} | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol": { | |
"IAccessControl": { | |
"abi": [ | |
{ | |
"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": "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" | |
} | |
], | |
"devdoc": { | |
"details": "External interface of AccessControl declared to support ERC165 detection.", | |
"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 signaling this. _Available since v3.1._" | |
}, | |
"RoleGranted(bytes32,address,address)": { | |
"details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}." | |
}, | |
"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 `account`." | |
}, | |
"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": { | |
"assembly": "", | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"gasEstimates": null, | |
"legacyAssembly": null, | |
"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.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"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\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC165 detection.\",\"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 signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"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 `account`.\"},\"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\":{\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]}},\"version\":1}", | |
"storageLayout": { | |
"storage": [], | |
"types": null | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
} | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/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": { | |
"assembly": "", | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"gasEstimates": null, | |
"legacyAssembly": null, | |
"methodIdentifiers": {} | |
}, | |
"metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"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\":{\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}", | |
"storageLayout": { | |
"storage": [], | |
"types": null | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
} | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol": { | |
"Strings": { | |
"abi": [], | |
"devdoc": { | |
"details": "String operations.", | |
"kind": "dev", | |
"methods": {}, | |
"version": 1 | |
}, | |
"evm": { | |
"assembly": " /* \"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol\":188:2253 library Strings {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol\":188:2253 library Strings {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa26469706673582212206d227f80733c39c10e51052619b17c75804f4542685928226f9dd473612d96a364736f6c63430008110033\n}\n", | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206d227f80733c39c10e51052619b17c75804f4542685928226f9dd473612d96a364736f6c63430008110033", | |
"opcodes": "PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH14 0x227F80733C39C10E51052619B17C PUSH22 0x804F4542685928226F9DD473612D96A364736F6C6343 STOP ADDMOD GT STOP CALLER ", | |
"sourceMap": "188:2065:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206d227f80733c39c10e51052619b17c75804f4542685928226f9dd473612d96a364736f6c63430008110033", | |
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH14 0x227F80733C39C10E51052619B17C PUSH22 0x804F4542685928226F9DD473612D96A364736F6C6343 STOP ADDMOD GT STOP CALLER ", | |
"sourceMap": "188:2065:3:-:0;;;;;;;;" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "17200", | |
"executionCost": "97", | |
"totalCost": "17297" | |
}, | |
"internal": { | |
"toHexString(address)": "infinite", | |
"toHexString(uint256)": "infinite", | |
"toHexString(uint256,uint256)": "infinite", | |
"toString(uint256)": "infinite" | |
} | |
}, | |
"legacyAssembly": { | |
".code": [ | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH #[$]", | |
"source": 3, | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH [$]", | |
"source": 3, | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "B" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "DUP3", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "DUP3", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "DUP3", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "CODECOPY", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "DUP1", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "MLOAD", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "0" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "BYTE", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "73" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "EQ", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH [tag]", | |
"source": 3, | |
"value": "1" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "JUMPI", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "4E487B7100000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "0" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "MSTORE", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "0" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "4" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "MSTORE", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "24" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "0" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "REVERT", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "tag", | |
"source": 3, | |
"value": "1" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "JUMPDEST", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "ADDRESS", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "0" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "MSTORE", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "73" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "DUP2", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "MSTORE8", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "DUP3", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "DUP2", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "RETURN", | |
"source": 3 | |
} | |
], | |
".data": { | |
"0": { | |
".auxdata": "a26469706673582212206d227f80733c39c10e51052619b17c75804f4542685928226f9dd473612d96a364736f6c63430008110033", | |
".code": [ | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSHDEPLOYADDRESS", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "ADDRESS", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "EQ", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "80" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "40" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "MSTORE", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "PUSH", | |
"source": 3, | |
"value": "0" | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "DUP1", | |
"source": 3 | |
}, | |
{ | |
"begin": 188, | |
"end": 2253, | |
"name": "REVERT", | |
"source": 3 | |
} | |
] | |
} | |
}, | |
"sourceList": [ | |
".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol", | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol", | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol", | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol", | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol", | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol", | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol", | |
"#utility.yul" | |
] | |
}, | |
"methodIdentifiers": {} | |
}, | |
"metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xba1ae0497d71bf30f3710c38aba13a5b68c31d81ff04dd73e5dd55a05a9c903d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d77f4aee3f6534fe2dbc6583385fc123340f8ccb9bf3c8c04555e538a3d9a4b5\",\"dweb:/ipfs/QmVtP4Fz9tB2DFvMHJaSFbLxnEHE1NKDA92fviV7jDkEnL\"]}},\"version\":1}", | |
"storageLayout": { | |
"storage": [], | |
"types": null | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
} | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/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 ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.", | |
"kind": "dev", | |
"methods": { | |
"supportsInterface(bytes4)": { | |
"details": "See {IERC165-supportsInterface}." | |
} | |
}, | |
"version": 1 | |
}, | |
"evm": { | |
"assembly": "", | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"gasEstimates": null, | |
"legacyAssembly": null, | |
"methodIdentifiers": { | |
"supportsInterface(bytes4)": "01ffc9a7" | |
} | |
}, | |
"metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"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 ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}", | |
"storageLayout": { | |
"storage": [], | |
"types": null | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
} | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.", | |
"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[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas." | |
} | |
}, | |
"version": 1 | |
}, | |
"evm": { | |
"assembly": "", | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "", | |
"opcodes": "", | |
"sourceMap": "" | |
}, | |
"gasEstimates": null, | |
"legacyAssembly": null, | |
"methodIdentifiers": { | |
"supportsInterface(bytes4)": "01ffc9a7" | |
} | |
}, | |
"metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"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 ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"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[EIP 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\":{\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}", | |
"storageLayout": { | |
"storage": [], | |
"types": null | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
} | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol": { | |
"Math": { | |
"abi": [], | |
"devdoc": { | |
"details": "Standard math utilities missing in the Solidity language.", | |
"kind": "dev", | |
"methods": {}, | |
"version": 1 | |
}, | |
"evm": { | |
"assembly": " /* \"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol\":202:12530 library Math {... */\n dataSize(sub_0)\n dataOffset(sub_0)\n 0x0b\n dup3\n dup3\n dup3\n codecopy\n dup1\n mload\n 0x00\n byte\n 0x73\n eq\n tag_1\n jumpi\n mstore(0x00, 0x4e487b7100000000000000000000000000000000000000000000000000000000)\n mstore(0x04, 0x00)\n revert(0x00, 0x24)\ntag_1:\n mstore(0x00, address)\n 0x73\n dup2\n mstore8\n dup3\n dup2\n return\nstop\n\nsub_0: assembly {\n /* \"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol\":202:12530 library Math {... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n 0x00\n dup1\n revert\n\n auxdata: 0xa264697066735822122027187657f5796c05915fe48cc2f3032897ef0bb5fefe211eb584556c19b822e964736f6c63430008110033\n}\n", | |
"bytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"linkReferences": {}, | |
"object": "60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122027187657f5796c05915fe48cc2f3032897ef0bb5fefe211eb584556c19b822e964736f6c63430008110033", | |
"opcodes": "PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 XOR PUSH23 0x57F5796C05915FE48CC2F3032897EF0BB5FEFE211EB584 SSTORE PUSH13 0x19B822E964736F6C6343000811 STOP CALLER ", | |
"sourceMap": "202:12328:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" | |
}, | |
"deployedBytecode": { | |
"functionDebugData": {}, | |
"generatedSources": [], | |
"immutableReferences": {}, | |
"linkReferences": {}, | |
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122027187657f5796c05915fe48cc2f3032897ef0bb5fefe211eb584556c19b822e964736f6c63430008110033", | |
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 XOR PUSH23 0x57F5796C05915FE48CC2F3032897EF0BB5FEFE211EB584 SSTORE PUSH13 0x19B822E964736F6C6343000811 STOP CALLER ", | |
"sourceMap": "202:12328:6:-:0;;;;;;;;" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "17200", | |
"executionCost": "97", | |
"totalCost": "17297" | |
}, | |
"internal": { | |
"average(uint256,uint256)": "infinite", | |
"ceilDiv(uint256,uint256)": "infinite", | |
"log10(uint256)": "infinite", | |
"log10(uint256,enum Math.Rounding)": "infinite", | |
"log2(uint256)": "infinite", | |
"log2(uint256,enum Math.Rounding)": "infinite", | |
"log256(uint256)": "infinite", | |
"log256(uint256,enum Math.Rounding)": "infinite", | |
"max(uint256,uint256)": "infinite", | |
"min(uint256,uint256)": "infinite", | |
"mulDiv(uint256,uint256,uint256)": "infinite", | |
"mulDiv(uint256,uint256,uint256,enum Math.Rounding)": "infinite", | |
"sqrt(uint256)": "infinite", | |
"sqrt(uint256,enum Math.Rounding)": "infinite" | |
} | |
}, | |
"legacyAssembly": { | |
".code": [ | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH #[$]", | |
"source": 6, | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH [$]", | |
"source": 6, | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "B" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "DUP3", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "DUP3", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "DUP3", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "CODECOPY", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "DUP1", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "MLOAD", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "0" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "BYTE", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "73" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "EQ", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH [tag]", | |
"source": 6, | |
"value": "1" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "JUMPI", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "4E487B7100000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "0" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "MSTORE", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "0" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "4" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "MSTORE", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "24" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "0" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "REVERT", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "tag", | |
"source": 6, | |
"value": "1" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "JUMPDEST", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "ADDRESS", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "0" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "MSTORE", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "73" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "DUP2", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "MSTORE8", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "DUP3", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "DUP2", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "RETURN", | |
"source": 6 | |
} | |
], | |
".data": { | |
"0": { | |
".auxdata": "a264697066735822122027187657f5796c05915fe48cc2f3032897ef0bb5fefe211eb584556c19b822e964736f6c63430008110033", | |
".code": [ | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSHDEPLOYADDRESS", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "ADDRESS", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "EQ", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "80" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "40" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "MSTORE", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "PUSH", | |
"source": 6, | |
"value": "0" | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "DUP1", | |
"source": 6 | |
}, | |
{ | |
"begin": 202, | |
"end": 12530, | |
"name": "REVERT", | |
"source": 6 | |
} | |
] | |
} | |
}, | |
"sourceList": [ | |
".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol", | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol", | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol", | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol", | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol", | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol", | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol", | |
"#utility.yul" | |
] | |
}, | |
"methodIdentifiers": {} | |
}, | |
"metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"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\":{\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xba1ae0497d71bf30f3710c38aba13a5b68c31d81ff04dd73e5dd55a05a9c903d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d77f4aee3f6534fe2dbc6583385fc123340f8ccb9bf3c8c04555e538a3d9a4b5\",\"dweb:/ipfs/QmVtP4Fz9tB2DFvMHJaSFbLxnEHE1NKDA92fviV7jDkEnL\"]}},\"version\":1}", | |
"storageLayout": { | |
"storage": [], | |
"types": null | |
}, | |
"userdoc": { | |
"kind": "user", | |
"methods": {}, | |
"version": 1 | |
} | |
} | |
} | |
}, | |
"sources": { | |
".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol": { | |
"ast": { | |
"absolutePath": ".deps/github/OpenZeppelin/openzeppelin-contracts/contracts/access/AccessControl.sol", | |
"exportedSymbols": { | |
"AccessControl": [ | |
315 | |
], | |
"Context": [ | |
410 | |
], | |
"ERC165": [ | |
609 | |
], | |
"IAccessControl": [ | |
388 | |
], | |
"IERC165": [ | |
621 | |
], | |
"Math": [ | |
1487 | |
], | |
"Strings": [ | |
585 | |
] | |
}, | |
"id": 316, | |
"license": "MIT", | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 1, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.8", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "108:23:0" | |
}, | |
{ | |
"absolutePath": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol", | |
"file": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol", | |
"id": 2, | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "ImportDirective", | |
"scope": 316, | |
"sourceUnit": 389, | |
"src": "133:112:0", | |
"symbolAliases": [], | |
"unitAlias": "" | |
}, | |
{ | |
"absolutePath": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol", | |
"file": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol", | |
"id": 3, | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "ImportDirective", | |
"scope": 316, | |
"sourceUnit": 411, | |
"src": "246:104:0", | |
"symbolAliases": [], | |
"unitAlias": "" | |
}, | |
{ | |
"absolutePath": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol", | |
"file": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol", | |
"id": 4, | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "ImportDirective", | |
"scope": 316, | |
"sourceUnit": 586, | |
"src": "351:104:0", | |
"symbolAliases": [], | |
"unitAlias": "" | |
}, | |
{ | |
"absolutePath": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol", | |
"file": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol", | |
"id": 5, | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "ImportDirective", | |
"scope": 316, | |
"sourceUnit": 610, | |
"src": "456:117:0", | |
"symbolAliases": [], | |
"unitAlias": "" | |
}, | |
{ | |
"abstract": true, | |
"baseContracts": [ | |
{ | |
"baseName": { | |
"id": 7, | |
"name": "Context", | |
"nameLocations": [ | |
"2145:7:0" | |
], | |
"nodeType": "IdentifierPath", | |
"referencedDeclaration": 410, | |
"src": "2145:7:0" | |
}, | |
"id": 8, | |
"nodeType": "InheritanceSpecifier", | |
"src": "2145:7:0" | |
}, | |
{ | |
"baseName": { | |
"id": 9, | |
"name": "IAccessControl", | |
"nameLocations": [ | |
"2154:14:0" | |
], | |
"nodeType": "IdentifierPath", | |
"referencedDeclaration": 388, | |
"src": "2154:14:0" | |
}, | |
"id": 10, | |
"nodeType": "InheritanceSpecifier", | |
"src": "2154:14:0" | |
}, | |
{ | |
"baseName": { | |
"id": 11, | |
"name": "ERC165", | |
"nameLocations": [ | |
"2170:6:0" | |
], | |
"nodeType": "IdentifierPath", | |
"referencedDeclaration": 609, | |
"src": "2170:6:0" | |
}, | |
"id": 12, | |
"nodeType": "InheritanceSpecifier", | |
"src": "2170:6:0" | |
} | |
], | |
"canonicalName": "AccessControl", | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": { | |
"id": 6, | |
"nodeType": "StructuredDocumentation", | |
"src": "575:1534: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 ```\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 ```\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." | |
}, | |
"fullyImplemented": true, | |
"id": 315, | |
"linearizedBaseContracts": [ | |
315, | |
609, | |
621, | |
388, | |
410 | |
], | |
"name": "AccessControl", | |
"nameLocation": "2128:13:0", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"canonicalName": "AccessControl.RoleData", | |
"id": 19, | |
"members": [ | |
{ | |
"constant": false, | |
"id": 16, | |
"mutability": "mutable", | |
"name": "members", | |
"nameLocation": "2234:7:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 19, | |
"src": "2209:32:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", | |
"typeString": "mapping(address => bool)" | |
}, | |
"typeName": { | |
"id": 15, | |
"keyType": { | |
"id": 13, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "2217:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "2209:24:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", | |
"typeString": "mapping(address => bool)" | |
}, | |
"valueType": { | |
"id": 14, | |
"name": "bool", | |
"nodeType": "ElementaryTypeName", | |
"src": "2228:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 18, | |
"mutability": "mutable", | |
"name": "adminRole", | |
"nameLocation": "2259:9:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 19, | |
"src": "2251:17:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 17, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "2251:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"name": "RoleData", | |
"nameLocation": "2190:8:0", | |
"nodeType": "StructDefinition", | |
"scope": 315, | |
"src": "2183:92:0", | |
"visibility": "public" | |
}, | |
{ | |
"constant": false, | |
"id": 24, | |
"mutability": "mutable", | |
"name": "_roles", | |
"nameLocation": "2318:6:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 315, | |
"src": "2281:43:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$", | |
"typeString": "mapping(bytes32 => struct AccessControl.RoleData)" | |
}, | |
"typeName": { | |
"id": 23, | |
"keyType": { | |
"id": 20, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "2289:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "2281:28:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$", | |
"typeString": "mapping(bytes32 => struct AccessControl.RoleData)" | |
}, | |
"valueType": { | |
"id": 22, | |
"nodeType": "UserDefinedTypeName", | |
"pathNode": { | |
"id": 21, | |
"name": "RoleData", | |
"nameLocations": [ | |
"2300:8:0" | |
], | |
"nodeType": "IdentifierPath", | |
"referencedDeclaration": 19, | |
"src": "2300:8:0" | |
}, | |
"referencedDeclaration": 19, | |
"src": "2300:8:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_struct$_RoleData_$19_storage_ptr", | |
"typeString": "struct AccessControl.RoleData" | |
} | |
} | |
}, | |
"visibility": "private" | |
}, | |
{ | |
"constant": true, | |
"functionSelector": "a217fddf", | |
"id": 27, | |
"mutability": "constant", | |
"name": "DEFAULT_ADMIN_ROLE", | |
"nameLocation": "2355:18:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 315, | |
"src": "2331:49:0", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 25, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "2331:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"value": { | |
"hexValue": "30783030", | |
"id": 26, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "2376:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0x00" | |
}, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 37, | |
"nodeType": "Block", | |
"src": "2799:44:0", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"id": 33, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 30, | |
"src": "2820:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
], | |
"id": 32, | |
"name": "_checkRole", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
92, | |
131 | |
], | |
"referencedDeclaration": 92, | |
"src": "2809:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$__$", | |
"typeString": "function (bytes32) view" | |
} | |
}, | |
"id": 34, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "2809:16:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 35, | |
"nodeType": "ExpressionStatement", | |
"src": "2809:16:0" | |
}, | |
{ | |
"id": 36, | |
"nodeType": "PlaceholderStatement", | |
"src": "2835:1:0" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 28, | |
"nodeType": "StructuredDocumentation", | |
"src": "2387:375:0", | |
"text": " @dev Modifier that checks that an account has a specific role. Reverts\n with a standardized message including the required role.\n The format of the revert reason is given by the following regular expression:\n /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/\n _Available since v4.1._" | |
}, | |
"id": 38, | |
"name": "onlyRole", | |
"nameLocation": "2776:8:0", | |
"nodeType": "ModifierDefinition", | |
"parameters": { | |
"id": 31, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 30, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "2793:4:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 38, | |
"src": "2785:12:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 29, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "2785:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "2784:14:0" | |
}, | |
"src": "2767:76:0", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"baseFunctions": [ | |
608 | |
], | |
"body": { | |
"id": 59, | |
"nodeType": "Block", | |
"src": "3001:111:0", | |
"statements": [ | |
{ | |
"expression": { | |
"commonType": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"id": 57, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
}, | |
"id": 52, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 47, | |
"name": "interfaceId", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 41, | |
"src": "3018:11:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"expression": { | |
"arguments": [ | |
{ | |
"id": 49, | |
"name": "IAccessControl", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 388, | |
"src": "3038:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_contract$_IAccessControl_$388_$", | |
"typeString": "type(contract IAccessControl)" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_type$_t_contract$_IAccessControl_$388_$", | |
"typeString": "type(contract IAccessControl)" | |
} | |
], | |
"id": 48, | |
"name": "type", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4294967269, | |
"src": "3033:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_metatype_pure$__$returns$__$", | |
"typeString": "function () pure" | |
} | |
}, | |
"id": 50, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "3033:20:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_meta_type_t_contract$_IAccessControl_$388", | |
"typeString": "type(contract IAccessControl)" | |
} | |
}, | |
"id": 51, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"memberLocation": "3054:11:0", | |
"memberName": "interfaceId", | |
"nodeType": "MemberAccess", | |
"src": "3033:32:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
} | |
}, | |
"src": "3018:47:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "||", | |
"rightExpression": { | |
"arguments": [ | |
{ | |
"id": 55, | |
"name": "interfaceId", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 41, | |
"src": "3093:11:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
} | |
], | |
"expression": { | |
"id": 53, | |
"name": "super", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4294967271, | |
"src": "3069:5:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_super$_AccessControl_$315_$", | |
"typeString": "type(contract super AccessControl)" | |
} | |
}, | |
"id": 54, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberLocation": "3075:17:0", | |
"memberName": "supportsInterface", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 608, | |
"src": "3069:23:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", | |
"typeString": "function (bytes4) view returns (bool)" | |
} | |
}, | |
"id": 56, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "3069:36:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"src": "3018:87:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"functionReturnParameters": 46, | |
"id": 58, | |
"nodeType": "Return", | |
"src": "3011:94:0" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 39, | |
"nodeType": "StructuredDocumentation", | |
"src": "2849:56:0", | |
"text": " @dev See {IERC165-supportsInterface}." | |
}, | |
"functionSelector": "01ffc9a7", | |
"id": 60, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "supportsInterface", | |
"nameLocation": "2919:17:0", | |
"nodeType": "FunctionDefinition", | |
"overrides": { | |
"id": 43, | |
"nodeType": "OverrideSpecifier", | |
"overrides": [], | |
"src": "2977:8:0" | |
}, | |
"parameters": { | |
"id": 42, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 41, | |
"mutability": "mutable", | |
"name": "interfaceId", | |
"nameLocation": "2944:11:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 60, | |
"src": "2937:18:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
}, | |
"typeName": { | |
"id": 40, | |
"name": "bytes4", | |
"nodeType": "ElementaryTypeName", | |
"src": "2937:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "2936:20:0" | |
}, | |
"returnParameters": { | |
"id": 46, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 45, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 60, | |
"src": "2995:4:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"typeName": { | |
"id": 44, | |
"name": "bool", | |
"nodeType": "ElementaryTypeName", | |
"src": "2995:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "2994:6:0" | |
}, | |
"scope": 315, | |
"src": "2910:202:0", | |
"stateMutability": "view", | |
"virtual": true, | |
"visibility": "public" | |
}, | |
{ | |
"baseFunctions": [ | |
355 | |
], | |
"body": { | |
"id": 78, | |
"nodeType": "Block", | |
"src": "3291:53:0", | |
"statements": [ | |
{ | |
"expression": { | |
"baseExpression": { | |
"expression": { | |
"baseExpression": { | |
"id": 71, | |
"name": "_roles", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 24, | |
"src": "3308:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$", | |
"typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" | |
} | |
}, | |
"id": 73, | |
"indexExpression": { | |
"id": 72, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 63, | |
"src": "3315:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "3308:12:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_struct$_RoleData_$19_storage", | |
"typeString": "struct AccessControl.RoleData storage ref" | |
} | |
}, | |
"id": 74, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberLocation": "3321:7:0", | |
"memberName": "members", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 16, | |
"src": "3308:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", | |
"typeString": "mapping(address => bool)" | |
} | |
}, | |
"id": 76, | |
"indexExpression": { | |
"id": 75, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 65, | |
"src": "3329:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "3308:29:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"functionReturnParameters": 70, | |
"id": 77, | |
"nodeType": "Return", | |
"src": "3301:36:0" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 61, | |
"nodeType": "StructuredDocumentation", | |
"src": "3118:76:0", | |
"text": " @dev Returns `true` if `account` has been granted `role`." | |
}, | |
"functionSelector": "91d14854", | |
"id": 79, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "hasRole", | |
"nameLocation": "3208:7:0", | |
"nodeType": "FunctionDefinition", | |
"overrides": { | |
"id": 67, | |
"nodeType": "OverrideSpecifier", | |
"overrides": [], | |
"src": "3267:8:0" | |
}, | |
"parameters": { | |
"id": 66, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 63, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "3224:4:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 79, | |
"src": "3216:12:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 62, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "3216:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 65, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "3238:7:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 79, | |
"src": "3230:15:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 64, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "3230:7:0", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "3215:31:0" | |
}, | |
"returnParameters": { | |
"id": 70, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 69, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 79, | |
"src": "3285:4:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"typeName": { | |
"id": 68, | |
"name": "bool", | |
"nodeType": "ElementaryTypeName", | |
"src": "3285:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "3284:6:0" | |
}, | |
"scope": 315, | |
"src": "3199:145:0", | |
"stateMutability": "view", | |
"virtual": true, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 91, | |
"nodeType": "Block", | |
"src": "3694:47:0", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"id": 86, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 82, | |
"src": "3715:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
{ | |
"arguments": [], | |
"expression": { | |
"argumentTypes": [], | |
"id": 87, | |
"name": "_msgSender", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 400, | |
"src": "3721:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", | |
"typeString": "function () view returns (address)" | |
} | |
}, | |
"id": 88, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "3721:12:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 85, | |
"name": "_checkRole", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
92, | |
131 | |
], | |
"referencedDeclaration": 131, | |
"src": "3704:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$__$", | |
"typeString": "function (bytes32,address) view" | |
} | |
}, | |
"id": 89, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "3704:30:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 90, | |
"nodeType": "ExpressionStatement", | |
"src": "3704:30:0" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 80, | |
"nodeType": "StructuredDocumentation", | |
"src": "3350:283:0", | |
"text": " @dev Revert with a standard message if `_msgSender()` is missing `role`.\n Overriding this function changes the behavior of the {onlyRole} modifier.\n Format of the revert message is described in {_checkRole}.\n _Available since v4.6._" | |
}, | |
"id": 92, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "_checkRole", | |
"nameLocation": "3647:10:0", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 83, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 82, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "3666:4:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 92, | |
"src": "3658:12:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 81, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "3658:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "3657:14:0" | |
}, | |
"returnParameters": { | |
"id": 84, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "3694:0:0" | |
}, | |
"scope": 315, | |
"src": "3638:103:0", | |
"stateMutability": "view", | |
"virtual": true, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 130, | |
"nodeType": "Block", | |
"src": "4095:406:0", | |
"statements": [ | |
{ | |
"condition": { | |
"id": 104, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "UnaryOperation", | |
"operator": "!", | |
"prefix": true, | |
"src": "4109:23:0", | |
"subExpression": { | |
"arguments": [ | |
{ | |
"id": 101, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 95, | |
"src": "4118:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
{ | |
"id": 102, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 97, | |
"src": "4124:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 100, | |
"name": "hasRole", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 79, | |
"src": "4110:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", | |
"typeString": "function (bytes32,address) view returns (bool)" | |
} | |
}, | |
"id": 103, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "4110:22:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 129, | |
"nodeType": "IfStatement", | |
"src": "4105:390:0", | |
"trueBody": { | |
"id": 128, | |
"nodeType": "Block", | |
"src": "4134:361:0", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"hexValue": "416363657373436f6e74726f6c3a206163636f756e7420", | |
"id": 110, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "string", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "4242:25:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874", | |
"typeString": "literal_string \"AccessControl: account \"" | |
}, | |
"value": "AccessControl: account " | |
}, | |
{ | |
"arguments": [ | |
{ | |
"id": 113, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 97, | |
"src": "4313:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"expression": { | |
"id": 111, | |
"name": "Strings", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 585, | |
"src": "4293:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_contract$_Strings_$585_$", | |
"typeString": "type(library Strings)" | |
} | |
}, | |
"id": 112, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberLocation": "4301:11:0", | |
"memberName": "toHexString", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 584, | |
"src": "4293:19:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$", | |
"typeString": "function (address) pure returns (string memory)" | |
} | |
}, | |
"id": 114, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "4293:28:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string memory" | |
} | |
}, | |
{ | |
"hexValue": "206973206d697373696e6720726f6c6520", | |
"id": 115, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "string", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "4347:19:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69", | |
"typeString": "literal_string \" is missing role \"" | |
}, | |
"value": " is missing role " | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"id": 120, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 95, | |
"src": "4420:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
], | |
"id": 119, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"nodeType": "ElementaryTypeNameExpression", | |
"src": "4412:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_uint256_$", | |
"typeString": "type(uint256)" | |
}, | |
"typeName": { | |
"id": 118, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "4412:7:0", | |
"typeDescriptions": {} | |
} | |
}, | |
"id": 121, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "typeConversion", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "4412:13:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
{ | |
"hexValue": "3332", | |
"id": 122, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "4427:2:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_32_by_1", | |
"typeString": "int_const 32" | |
}, | |
"value": "32" | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_rational_32_by_1", | |
"typeString": "int_const 32" | |
} | |
], | |
"expression": { | |
"id": 116, | |
"name": "Strings", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 585, | |
"src": "4392:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_contract$_Strings_$585_$", | |
"typeString": "type(library Strings)" | |
} | |
}, | |
"id": 117, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberLocation": "4400:11:0", | |
"memberName": "toHexString", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 564, | |
"src": "4392:19:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", | |
"typeString": "function (uint256,uint256) pure returns (string memory)" | |
} | |
}, | |
"id": 123, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "4392:38:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string memory" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874", | |
"typeString": "literal_string \"AccessControl: account \"" | |
}, | |
{ | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string memory" | |
}, | |
{ | |
"typeIdentifier": "t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69", | |
"typeString": "literal_string \" is missing role \"" | |
}, | |
{ | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string memory" | |
} | |
], | |
"expression": { | |
"id": 108, | |
"name": "abi", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4294967295, | |
"src": "4200:3:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_abi", | |
"typeString": "abi" | |
} | |
}, | |
"id": 109, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"memberLocation": "4204:12:0", | |
"memberName": "encodePacked", | |
"nodeType": "MemberAccess", | |
"src": "4200:16:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", | |
"typeString": "function () pure returns (bytes memory)" | |
} | |
}, | |
"id": 124, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "4200:252:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes_memory_ptr", | |
"typeString": "bytes memory" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes_memory_ptr", | |
"typeString": "bytes memory" | |
} | |
], | |
"id": 107, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"nodeType": "ElementaryTypeNameExpression", | |
"src": "4172:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_string_storage_ptr_$", | |
"typeString": "type(string storage pointer)" | |
}, | |
"typeName": { | |
"id": 106, | |
"name": "string", | |
"nodeType": "ElementaryTypeName", | |
"src": "4172:6:0", | |
"typeDescriptions": {} | |
} | |
}, | |
"id": 125, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "typeConversion", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "4172:298:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string memory" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string memory" | |
} | |
], | |
"id": 105, | |
"name": "revert", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
4294967277, | |
4294967277 | |
], | |
"referencedDeclaration": 4294967277, | |
"src": "4148:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", | |
"typeString": "function (string memory) pure" | |
} | |
}, | |
"id": 126, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "4148:336:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 127, | |
"nodeType": "ExpressionStatement", | |
"src": "4148:336:0" | |
} | |
] | |
} | |
} | |
] | |
}, | |
"documentation": { | |
"id": 93, | |
"nodeType": "StructuredDocumentation", | |
"src": "3747:270:0", | |
"text": " @dev Revert with a standard message if `account` is missing `role`.\n The format of the revert reason is given by the following regular expression:\n /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/" | |
}, | |
"id": 131, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "_checkRole", | |
"nameLocation": "4031:10:0", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 98, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 95, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "4050:4:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 131, | |
"src": "4042:12:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 94, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "4042:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 97, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "4064:7:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 131, | |
"src": "4056:15:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 96, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "4056:7:0", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "4041:31:0" | |
}, | |
"returnParameters": { | |
"id": 99, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "4095:0:0" | |
}, | |
"scope": 315, | |
"src": "4022:479:0", | |
"stateMutability": "view", | |
"virtual": true, | |
"visibility": "internal" | |
}, | |
{ | |
"baseFunctions": [ | |
363 | |
], | |
"body": { | |
"id": 145, | |
"nodeType": "Block", | |
"src": "4765:46:0", | |
"statements": [ | |
{ | |
"expression": { | |
"expression": { | |
"baseExpression": { | |
"id": 140, | |
"name": "_roles", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 24, | |
"src": "4782:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$", | |
"typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" | |
} | |
}, | |
"id": 142, | |
"indexExpression": { | |
"id": 141, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 134, | |
"src": "4789:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "4782:12:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_struct$_RoleData_$19_storage", | |
"typeString": "struct AccessControl.RoleData storage ref" | |
} | |
}, | |
"id": 143, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberLocation": "4795:9:0", | |
"memberName": "adminRole", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 18, | |
"src": "4782:22:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"functionReturnParameters": 139, | |
"id": 144, | |
"nodeType": "Return", | |
"src": "4775:29:0" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 132, | |
"nodeType": "StructuredDocumentation", | |
"src": "4507: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": 146, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "getRoleAdmin", | |
"nameLocation": "4691:12:0", | |
"nodeType": "FunctionDefinition", | |
"overrides": { | |
"id": 136, | |
"nodeType": "OverrideSpecifier", | |
"overrides": [], | |
"src": "4738:8:0" | |
}, | |
"parameters": { | |
"id": 135, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 134, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "4712:4:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 146, | |
"src": "4704:12:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 133, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "4704:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "4703:14:0" | |
}, | |
"returnParameters": { | |
"id": 139, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 138, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 146, | |
"src": "4756:7:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 137, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "4756:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "4755:9:0" | |
}, | |
"scope": 315, | |
"src": "4682:129:0", | |
"stateMutability": "view", | |
"virtual": true, | |
"visibility": "public" | |
}, | |
{ | |
"baseFunctions": [ | |
371 | |
], | |
"body": { | |
"id": 165, | |
"nodeType": "Block", | |
"src": "5210:42:0", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"id": 161, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 149, | |
"src": "5231:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
{ | |
"id": 162, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 151, | |
"src": "5237:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 160, | |
"name": "_grantRole", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 283, | |
"src": "5220:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", | |
"typeString": "function (bytes32,address)" | |
} | |
}, | |
"id": 163, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "5220:25:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 164, | |
"nodeType": "ExpressionStatement", | |
"src": "5220:25:0" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 147, | |
"nodeType": "StructuredDocumentation", | |
"src": "4817: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": 166, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"id": 156, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 149, | |
"src": "5203:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
], | |
"id": 155, | |
"name": "getRoleAdmin", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 146, | |
"src": "5190: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": "5190:18:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
} | |
], | |
"id": 158, | |
"kind": "modifierInvocation", | |
"modifierName": { | |
"id": 154, | |
"name": "onlyRole", | |
"nameLocations": [ | |
"5181:8:0" | |
], | |
"nodeType": "IdentifierPath", | |
"referencedDeclaration": 38, | |
"src": "5181:8:0" | |
}, | |
"nodeType": "ModifierInvocation", | |
"src": "5181:28:0" | |
} | |
], | |
"name": "grantRole", | |
"nameLocation": "5116:9:0", | |
"nodeType": "FunctionDefinition", | |
"overrides": { | |
"id": 153, | |
"nodeType": "OverrideSpecifier", | |
"overrides": [], | |
"src": "5172:8:0" | |
}, | |
"parameters": { | |
"id": 152, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 149, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "5134:4:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 166, | |
"src": "5126:12:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 148, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "5126:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 151, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "5148:7:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 166, | |
"src": "5140:15:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 150, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "5140:7:0", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "5125:31:0" | |
}, | |
"returnParameters": { | |
"id": 159, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "5210:0:0" | |
}, | |
"scope": 315, | |
"src": "5107:145:0", | |
"stateMutability": "nonpayable", | |
"virtual": true, | |
"visibility": "public" | |
}, | |
{ | |
"baseFunctions": [ | |
379 | |
], | |
"body": { | |
"id": 185, | |
"nodeType": "Block", | |
"src": "5636:43:0", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"id": 181, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "5658:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
{ | |
"id": 182, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 171, | |
"src": "5664:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 180, | |
"name": "_revokeRole", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 314, | |
"src": "5646:11:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", | |
"typeString": "function (bytes32,address)" | |
} | |
}, | |
"id": 183, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "5646:26:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 184, | |
"nodeType": "ExpressionStatement", | |
"src": "5646:26:0" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 167, | |
"nodeType": "StructuredDocumentation", | |
"src": "5258: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": 186, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"id": 176, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "5629:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
], | |
"id": 175, | |
"name": "getRoleAdmin", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 146, | |
"src": "5616:12:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", | |
"typeString": "function (bytes32) view returns (bytes32)" | |
} | |
}, | |
"id": 177, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "5616:18:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
} | |
], | |
"id": 178, | |
"kind": "modifierInvocation", | |
"modifierName": { | |
"id": 174, | |
"name": "onlyRole", | |
"nameLocations": [ | |
"5607:8:0" | |
], | |
"nodeType": "IdentifierPath", | |
"referencedDeclaration": 38, | |
"src": "5607:8:0" | |
}, | |
"nodeType": "ModifierInvocation", | |
"src": "5607:28:0" | |
} | |
], | |
"name": "revokeRole", | |
"nameLocation": "5541:10:0", | |
"nodeType": "FunctionDefinition", | |
"overrides": { | |
"id": 173, | |
"nodeType": "OverrideSpecifier", | |
"overrides": [], | |
"src": "5598:8:0" | |
}, | |
"parameters": { | |
"id": 172, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 169, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "5560:4:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 186, | |
"src": "5552:12:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 168, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "5552:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 171, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "5574:7:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 186, | |
"src": "5566:15:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 170, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "5566:7:0", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "5551:31:0" | |
}, | |
"returnParameters": { | |
"id": 179, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "5636:0:0" | |
}, | |
"scope": 315, | |
"src": "5532:147:0", | |
"stateMutability": "nonpayable", | |
"virtual": true, | |
"visibility": "public" | |
}, | |
{ | |
"baseFunctions": [ | |
387 | |
], | |
"body": { | |
"id": 208, | |
"nodeType": "Block", | |
"src": "6293:137:0", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"id": 199, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 196, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 191, | |
"src": "6311:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"arguments": [], | |
"expression": { | |
"argumentTypes": [], | |
"id": 197, | |
"name": "_msgSender", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 400, | |
"src": "6322:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", | |
"typeString": "function () view returns (address)" | |
} | |
}, | |
"id": 198, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "6322:12:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"src": "6311:23:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
{ | |
"hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66", | |
"id": 200, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "string", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "6336:49:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", | |
"typeString": "literal_string \"AccessControl: can only renounce roles for self\"" | |
}, | |
"value": "AccessControl: can only renounce roles for self" | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
{ | |
"typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b", | |
"typeString": "literal_string \"AccessControl: can only renounce roles for self\"" | |
} | |
], | |
"id": 195, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
4294967278, | |
4294967278 | |
], | |
"referencedDeclaration": 4294967278, | |
"src": "6303:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", | |
"typeString": "function (bool,string memory) pure" | |
} | |
}, | |
"id": 201, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "6303:83:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 202, | |
"nodeType": "ExpressionStatement", | |
"src": "6303:83:0" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"id": 204, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 189, | |
"src": "6409:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
{ | |
"id": 205, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 191, | |
"src": "6415:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 203, | |
"name": "_revokeRole", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 314, | |
"src": "6397:11:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", | |
"typeString": "function (bytes32,address)" | |
} | |
}, | |
"id": 206, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "6397:26:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 207, | |
"nodeType": "ExpressionStatement", | |
"src": "6397:26:0" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 187, | |
"nodeType": "StructuredDocumentation", | |
"src": "5685:526: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 `account`.\n May emit a {RoleRevoked} event." | |
}, | |
"functionSelector": "36568abe", | |
"id": 209, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "renounceRole", | |
"nameLocation": "6225:12:0", | |
"nodeType": "FunctionDefinition", | |
"overrides": { | |
"id": 193, | |
"nodeType": "OverrideSpecifier", | |
"overrides": [], | |
"src": "6284:8:0" | |
}, | |
"parameters": { | |
"id": 192, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 189, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "6246:4:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 209, | |
"src": "6238:12:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 188, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "6238:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 191, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "6260:7:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 209, | |
"src": "6252:15:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 190, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "6252:7:0", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "6237:31:0" | |
}, | |
"returnParameters": { | |
"id": 194, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "6293:0:0" | |
}, | |
"scope": 315, | |
"src": "6216:214:0", | |
"stateMutability": "nonpayable", | |
"virtual": true, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 222, | |
"nodeType": "Block", | |
"src": "7183:42:0", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"id": 218, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 212, | |
"src": "7204:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
{ | |
"id": 219, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 214, | |
"src": "7210:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 217, | |
"name": "_grantRole", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 283, | |
"src": "7193:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", | |
"typeString": "function (bytes32,address)" | |
} | |
}, | |
"id": 220, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "7193:25:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 221, | |
"nodeType": "ExpressionStatement", | |
"src": "7193:25:0" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 210, | |
"nodeType": "StructuredDocumentation", | |
"src": "6436:674:0", | |
"text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event. Note that unlike {grantRole}, this function doesn't perform any\n checks on the calling account.\n May emit a {RoleGranted} event.\n [WARNING]\n ====\n This function should only be called from the constructor when setting\n up the initial roles for the system.\n Using this function in any other way is effectively circumventing the admin\n system imposed by {AccessControl}.\n ====\n NOTE: This function is deprecated in favor of {_grantRole}." | |
}, | |
"id": 223, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "_setupRole", | |
"nameLocation": "7124:10:0", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 215, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 212, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "7143:4:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 223, | |
"src": "7135:12:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 211, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "7135:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 214, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "7157:7:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 223, | |
"src": "7149:15:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 213, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "7149:7:0", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "7134:31:0" | |
}, | |
"returnParameters": { | |
"id": 216, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "7183:0:0" | |
}, | |
"scope": 315, | |
"src": "7115:110:0", | |
"stateMutability": "nonpayable", | |
"virtual": true, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 250, | |
"nodeType": "Block", | |
"src": "7423:174:0", | |
"statements": [ | |
{ | |
"assignments": [ | |
232 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 232, | |
"mutability": "mutable", | |
"name": "previousAdminRole", | |
"nameLocation": "7441:17:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 250, | |
"src": "7433:25:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 231, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "7433:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 236, | |
"initialValue": { | |
"arguments": [ | |
{ | |
"id": 234, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 226, | |
"src": "7474:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
], | |
"id": 233, | |
"name": "getRoleAdmin", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 146, | |
"src": "7461:12:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", | |
"typeString": "function (bytes32) view returns (bytes32)" | |
} | |
}, | |
"id": 235, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "7461:18:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "7433:46:0" | |
}, | |
{ | |
"expression": { | |
"id": 242, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"expression": { | |
"baseExpression": { | |
"id": 237, | |
"name": "_roles", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 24, | |
"src": "7489:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$", | |
"typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" | |
} | |
}, | |
"id": 239, | |
"indexExpression": { | |
"id": 238, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 226, | |
"src": "7496:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "7489:12:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_struct$_RoleData_$19_storage", | |
"typeString": "struct AccessControl.RoleData storage ref" | |
} | |
}, | |
"id": 240, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"memberLocation": "7502:9:0", | |
"memberName": "adminRole", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 18, | |
"src": "7489:22:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"id": 241, | |
"name": "adminRole", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 228, | |
"src": "7514:9:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"src": "7489:34:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"id": 243, | |
"nodeType": "ExpressionStatement", | |
"src": "7489:34:0" | |
}, | |
{ | |
"eventCall": { | |
"arguments": [ | |
{ | |
"id": 245, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 226, | |
"src": "7555:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
{ | |
"id": 246, | |
"name": "previousAdminRole", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 232, | |
"src": "7561:17:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
{ | |
"id": 247, | |
"name": "adminRole", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 228, | |
"src": "7580: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": 244, | |
"name": "RoleAdminChanged", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 327, | |
"src": "7538:16:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", | |
"typeString": "function (bytes32,bytes32,bytes32)" | |
} | |
}, | |
"id": 248, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "7538:52:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 249, | |
"nodeType": "EmitStatement", | |
"src": "7533:57:0" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 224, | |
"nodeType": "StructuredDocumentation", | |
"src": "7231:114:0", | |
"text": " @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event." | |
}, | |
"id": 251, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "_setRoleAdmin", | |
"nameLocation": "7359:13:0", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 229, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 226, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "7381:4:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 251, | |
"src": "7373:12:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 225, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "7373:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 228, | |
"mutability": "mutable", | |
"name": "adminRole", | |
"nameLocation": "7395:9:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 251, | |
"src": "7387:17:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 227, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "7387:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "7372:33:0" | |
}, | |
"returnParameters": { | |
"id": 230, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "7423:0:0" | |
}, | |
"scope": 315, | |
"src": "7350:247:0", | |
"stateMutability": "nonpayable", | |
"virtual": true, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 282, | |
"nodeType": "Block", | |
"src": "7833:165:0", | |
"statements": [ | |
{ | |
"condition": { | |
"id": 263, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "UnaryOperation", | |
"operator": "!", | |
"prefix": true, | |
"src": "7847:23:0", | |
"subExpression": { | |
"arguments": [ | |
{ | |
"id": 260, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 254, | |
"src": "7856:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
{ | |
"id": 261, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 256, | |
"src": "7862:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 259, | |
"name": "hasRole", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 79, | |
"src": "7848:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", | |
"typeString": "function (bytes32,address) view returns (bool)" | |
} | |
}, | |
"id": 262, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "7848:22:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 281, | |
"nodeType": "IfStatement", | |
"src": "7843:149:0", | |
"trueBody": { | |
"id": 280, | |
"nodeType": "Block", | |
"src": "7872:120:0", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 271, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"baseExpression": { | |
"expression": { | |
"baseExpression": { | |
"id": 264, | |
"name": "_roles", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 24, | |
"src": "7886:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$", | |
"typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" | |
} | |
}, | |
"id": 266, | |
"indexExpression": { | |
"id": 265, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 254, | |
"src": "7893:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "7886:12:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_struct$_RoleData_$19_storage", | |
"typeString": "struct AccessControl.RoleData storage ref" | |
} | |
}, | |
"id": 267, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberLocation": "7899:7:0", | |
"memberName": "members", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 16, | |
"src": "7886:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", | |
"typeString": "mapping(address => bool)" | |
} | |
}, | |
"id": 269, | |
"indexExpression": { | |
"id": 268, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 256, | |
"src": "7907:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "7886:29:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"hexValue": "74727565", | |
"id": 270, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "bool", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "7918:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"value": "true" | |
}, | |
"src": "7886:36:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 272, | |
"nodeType": "ExpressionStatement", | |
"src": "7886:36:0" | |
}, | |
{ | |
"eventCall": { | |
"arguments": [ | |
{ | |
"id": 274, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 254, | |
"src": "7953:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
{ | |
"id": 275, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 256, | |
"src": "7959:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
{ | |
"arguments": [], | |
"expression": { | |
"argumentTypes": [], | |
"id": 276, | |
"name": "_msgSender", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 400, | |
"src": "7968:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", | |
"typeString": "function () view returns (address)" | |
} | |
}, | |
"id": 277, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "7968: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": 273, | |
"name": "RoleGranted", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 336, | |
"src": "7941:11:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", | |
"typeString": "function (bytes32,address,address)" | |
} | |
}, | |
"id": 278, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "7941:40:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 279, | |
"nodeType": "EmitStatement", | |
"src": "7936:45:0" | |
} | |
] | |
} | |
} | |
] | |
}, | |
"documentation": { | |
"id": 252, | |
"nodeType": "StructuredDocumentation", | |
"src": "7603:157:0", | |
"text": " @dev Grants `role` to `account`.\n Internal function without access restriction.\n May emit a {RoleGranted} event." | |
}, | |
"id": 283, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "_grantRole", | |
"nameLocation": "7774:10:0", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 257, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 254, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "7793:4:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 283, | |
"src": "7785:12:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 253, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "7785:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 256, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "7807:7:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 283, | |
"src": "7799:15:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 255, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "7799:7:0", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "7784:31:0" | |
}, | |
"returnParameters": { | |
"id": 258, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "7833:0:0" | |
}, | |
"scope": 315, | |
"src": "7765:233:0", | |
"stateMutability": "nonpayable", | |
"virtual": true, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 313, | |
"nodeType": "Block", | |
"src": "8238:165:0", | |
"statements": [ | |
{ | |
"condition": { | |
"arguments": [ | |
{ | |
"id": 292, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 286, | |
"src": "8260:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
{ | |
"id": 293, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 288, | |
"src": "8266:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 291, | |
"name": "hasRole", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 79, | |
"src": "8252:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", | |
"typeString": "function (bytes32,address) view returns (bool)" | |
} | |
}, | |
"id": 294, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "8252:22:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 312, | |
"nodeType": "IfStatement", | |
"src": "8248:149:0", | |
"trueBody": { | |
"id": 311, | |
"nodeType": "Block", | |
"src": "8276:121:0", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 302, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"baseExpression": { | |
"expression": { | |
"baseExpression": { | |
"id": 295, | |
"name": "_roles", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 24, | |
"src": "8290:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$19_storage_$", | |
"typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)" | |
} | |
}, | |
"id": 297, | |
"indexExpression": { | |
"id": 296, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 286, | |
"src": "8297:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "8290:12:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_struct$_RoleData_$19_storage", | |
"typeString": "struct AccessControl.RoleData storage ref" | |
} | |
}, | |
"id": 298, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberLocation": "8303:7:0", | |
"memberName": "members", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 16, | |
"src": "8290:20:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$", | |
"typeString": "mapping(address => bool)" | |
} | |
}, | |
"id": 300, | |
"indexExpression": { | |
"id": 299, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 288, | |
"src": "8311:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "8290:29:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"hexValue": "66616c7365", | |
"id": 301, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "bool", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8322:5:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"value": "false" | |
}, | |
"src": "8290:37:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 303, | |
"nodeType": "ExpressionStatement", | |
"src": "8290:37:0" | |
}, | |
{ | |
"eventCall": { | |
"arguments": [ | |
{ | |
"id": 305, | |
"name": "role", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 286, | |
"src": "8358:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
{ | |
"id": 306, | |
"name": "account", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 288, | |
"src": "8364:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
{ | |
"arguments": [], | |
"expression": { | |
"argumentTypes": [], | |
"id": 307, | |
"name": "_msgSender", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 400, | |
"src": "8373:10:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", | |
"typeString": "function () view returns (address)" | |
} | |
}, | |
"id": 308, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "8373: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": 304, | |
"name": "RoleRevoked", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 345, | |
"src": "8346:11:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", | |
"typeString": "function (bytes32,address,address)" | |
} | |
}, | |
"id": 309, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "8346:40:0", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 310, | |
"nodeType": "EmitStatement", | |
"src": "8341:45:0" | |
} | |
] | |
} | |
} | |
] | |
}, | |
"documentation": { | |
"id": 284, | |
"nodeType": "StructuredDocumentation", | |
"src": "8004:160:0", | |
"text": " @dev Revokes `role` from `account`.\n Internal function without access restriction.\n May emit a {RoleRevoked} event." | |
}, | |
"id": 314, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "_revokeRole", | |
"nameLocation": "8178:11:0", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 289, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 286, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "8198:4:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 314, | |
"src": "8190:12:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 285, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "8190:7:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 288, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "8212:7:0", | |
"nodeType": "VariableDeclaration", | |
"scope": 314, | |
"src": "8204:15:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 287, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "8204:7:0", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "8189:31:0" | |
}, | |
"returnParameters": { | |
"id": 290, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "8238:0:0" | |
}, | |
"scope": 315, | |
"src": "8169:234:0", | |
"stateMutability": "nonpayable", | |
"virtual": true, | |
"visibility": "internal" | |
} | |
], | |
"scope": 316, | |
"src": "2110:6295:0", | |
"usedErrors": [] | |
} | |
], | |
"src": "108:8298:0" | |
}, | |
"id": 0 | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol": { | |
"ast": { | |
"absolutePath": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/IAccessControl.sol", | |
"exportedSymbols": { | |
"IAccessControl": [ | |
388 | |
] | |
}, | |
"id": 389, | |
"license": "MIT", | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 317, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.8", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "94:23:1" | |
}, | |
{ | |
"abstract": false, | |
"baseContracts": [], | |
"canonicalName": "IAccessControl", | |
"contractDependencies": [], | |
"contractKind": "interface", | |
"documentation": { | |
"id": 318, | |
"nodeType": "StructuredDocumentation", | |
"src": "119:89:1", | |
"text": " @dev External interface of AccessControl declared to support ERC165 detection." | |
}, | |
"fullyImplemented": false, | |
"id": 388, | |
"linearizedBaseContracts": [ | |
388 | |
], | |
"name": "IAccessControl", | |
"nameLocation": "219:14:1", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"anonymous": false, | |
"documentation": { | |
"id": 319, | |
"nodeType": "StructuredDocumentation", | |
"src": "240:292: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 signaling this.\n _Available since v3.1._" | |
}, | |
"eventSelector": "bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff", | |
"id": 327, | |
"name": "RoleAdminChanged", | |
"nameLocation": "543:16:1", | |
"nodeType": "EventDefinition", | |
"parameters": { | |
"id": 326, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 321, | |
"indexed": true, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "576:4:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 327, | |
"src": "560:20:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 320, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "560:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 323, | |
"indexed": true, | |
"mutability": "mutable", | |
"name": "previousAdminRole", | |
"nameLocation": "598:17:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 327, | |
"src": "582:33:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 322, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "582:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 325, | |
"indexed": true, | |
"mutability": "mutable", | |
"name": "newAdminRole", | |
"nameLocation": "633:12:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 327, | |
"src": "617:28:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 324, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "617:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "559:87:1" | |
}, | |
"src": "537:110:1" | |
}, | |
{ | |
"anonymous": false, | |
"documentation": { | |
"id": 328, | |
"nodeType": "StructuredDocumentation", | |
"src": "653:212:1", | |
"text": " @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {AccessControl-_setupRole}." | |
}, | |
"eventSelector": "2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", | |
"id": 336, | |
"name": "RoleGranted", | |
"nameLocation": "876:11:1", | |
"nodeType": "EventDefinition", | |
"parameters": { | |
"id": 335, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 330, | |
"indexed": true, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "904:4:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 336, | |
"src": "888:20:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 329, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "888:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 332, | |
"indexed": true, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "926:7:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 336, | |
"src": "910:23:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 331, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "910:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 334, | |
"indexed": true, | |
"mutability": "mutable", | |
"name": "sender", | |
"nameLocation": "951:6:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 336, | |
"src": "935:22:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 333, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "935:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "887:71:1" | |
}, | |
"src": "870:89:1" | |
}, | |
{ | |
"anonymous": false, | |
"documentation": { | |
"id": 337, | |
"nodeType": "StructuredDocumentation", | |
"src": "965: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": 345, | |
"name": "RoleRevoked", | |
"nameLocation": "1251:11:1", | |
"nodeType": "EventDefinition", | |
"parameters": { | |
"id": 344, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 339, | |
"indexed": true, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "1279:4:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 345, | |
"src": "1263:20:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 338, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "1263:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 341, | |
"indexed": true, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "1301:7:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 345, | |
"src": "1285:23:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 340, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "1285:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 343, | |
"indexed": true, | |
"mutability": "mutable", | |
"name": "sender", | |
"nameLocation": "1326:6:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 345, | |
"src": "1310:22:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 342, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "1310:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1262:71:1" | |
}, | |
"src": "1245:89:1" | |
}, | |
{ | |
"documentation": { | |
"id": 346, | |
"nodeType": "StructuredDocumentation", | |
"src": "1340:76:1", | |
"text": " @dev Returns `true` if `account` has been granted `role`." | |
}, | |
"functionSelector": "91d14854", | |
"id": 355, | |
"implemented": false, | |
"kind": "function", | |
"modifiers": [], | |
"name": "hasRole", | |
"nameLocation": "1430:7:1", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 351, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 348, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "1446:4:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 355, | |
"src": "1438:12:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 347, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "1438:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 350, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "1460:7:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 355, | |
"src": "1452:15:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 349, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "1452:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1437:31:1" | |
}, | |
"returnParameters": { | |
"id": 354, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 353, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 355, | |
"src": "1492:4:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"typeName": { | |
"id": 352, | |
"name": "bool", | |
"nodeType": "ElementaryTypeName", | |
"src": "1492:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1491:6:1" | |
}, | |
"scope": 388, | |
"src": "1421:77:1", | |
"stateMutability": "view", | |
"virtual": false, | |
"visibility": "external" | |
}, | |
{ | |
"documentation": { | |
"id": 356, | |
"nodeType": "StructuredDocumentation", | |
"src": "1504: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": 363, | |
"implemented": false, | |
"kind": "function", | |
"modifiers": [], | |
"name": "getRoleAdmin", | |
"nameLocation": "1702:12:1", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 359, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 358, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "1723:4:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 363, | |
"src": "1715:12:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 357, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "1715:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1714:14:1" | |
}, | |
"returnParameters": { | |
"id": 362, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 361, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 363, | |
"src": "1752:7:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 360, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "1752:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1751:9:1" | |
}, | |
"scope": 388, | |
"src": "1693:68:1", | |
"stateMutability": "view", | |
"virtual": false, | |
"visibility": "external" | |
}, | |
{ | |
"documentation": { | |
"id": 364, | |
"nodeType": "StructuredDocumentation", | |
"src": "1767: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": 371, | |
"implemented": false, | |
"kind": "function", | |
"modifiers": [], | |
"name": "grantRole", | |
"nameLocation": "2020:9:1", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 369, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 366, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "2038:4:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 371, | |
"src": "2030:12:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 365, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "2030:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 368, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "2052:7:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 371, | |
"src": "2044:15:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 367, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "2044:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "2029:31:1" | |
}, | |
"returnParameters": { | |
"id": 370, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "2069:0:1" | |
}, | |
"scope": 388, | |
"src": "2011:59:1", | |
"stateMutability": "nonpayable", | |
"virtual": false, | |
"visibility": "external" | |
}, | |
{ | |
"documentation": { | |
"id": 372, | |
"nodeType": "StructuredDocumentation", | |
"src": "2076: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": 379, | |
"implemented": false, | |
"kind": "function", | |
"modifiers": [], | |
"name": "revokeRole", | |
"nameLocation": "2313:10:1", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 377, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 374, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "2332:4:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 379, | |
"src": "2324:12:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 373, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "2324:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 376, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "2346:7:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 379, | |
"src": "2338:15:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 375, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "2338:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "2323:31:1" | |
}, | |
"returnParameters": { | |
"id": 378, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "2363:0:1" | |
}, | |
"scope": 388, | |
"src": "2304:60:1", | |
"stateMutability": "nonpayable", | |
"virtual": false, | |
"visibility": "external" | |
}, | |
{ | |
"documentation": { | |
"id": 380, | |
"nodeType": "StructuredDocumentation", | |
"src": "2370:480: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 `account`." | |
}, | |
"functionSelector": "36568abe", | |
"id": 387, | |
"implemented": false, | |
"kind": "function", | |
"modifiers": [], | |
"name": "renounceRole", | |
"nameLocation": "2864:12:1", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 385, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 382, | |
"mutability": "mutable", | |
"name": "role", | |
"nameLocation": "2885:4:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 387, | |
"src": "2877:12:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
}, | |
"typeName": { | |
"id": 381, | |
"name": "bytes32", | |
"nodeType": "ElementaryTypeName", | |
"src": "2877:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes32", | |
"typeString": "bytes32" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 384, | |
"mutability": "mutable", | |
"name": "account", | |
"nameLocation": "2899:7:1", | |
"nodeType": "VariableDeclaration", | |
"scope": 387, | |
"src": "2891:15:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 383, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "2891:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "2876:31:1" | |
}, | |
"returnParameters": { | |
"id": 386, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "2916:0:1" | |
}, | |
"scope": 388, | |
"src": "2855:62:1", | |
"stateMutability": "nonpayable", | |
"virtual": false, | |
"visibility": "external" | |
} | |
], | |
"scope": 389, | |
"src": "209:2710:1", | |
"usedErrors": [] | |
} | |
], | |
"src": "94:2826:1" | |
}, | |
"id": 1 | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol": { | |
"ast": { | |
"absolutePath": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol", | |
"exportedSymbols": { | |
"Context": [ | |
410 | |
] | |
}, | |
"id": 411, | |
"license": "MIT", | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 390, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.8", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "86:23:2" | |
}, | |
{ | |
"abstract": true, | |
"baseContracts": [], | |
"canonicalName": "Context", | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": { | |
"id": 391, | |
"nodeType": "StructuredDocumentation", | |
"src": "111:496:2", | |
"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": 410, | |
"linearizedBaseContracts": [ | |
410 | |
], | |
"name": "Context", | |
"nameLocation": "626:7:2", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"body": { | |
"id": 399, | |
"nodeType": "Block", | |
"src": "702:34:2", | |
"statements": [ | |
{ | |
"expression": { | |
"expression": { | |
"id": 396, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4294967281, | |
"src": "719:3:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 397, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberLocation": "723:6:2", | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"src": "719:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"functionReturnParameters": 395, | |
"id": 398, | |
"nodeType": "Return", | |
"src": "712:17:2" | |
} | |
] | |
}, | |
"id": 400, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "_msgSender", | |
"nameLocation": "649:10:2", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 392, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "659:2:2" | |
}, | |
"returnParameters": { | |
"id": 395, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 394, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 400, | |
"src": "693:7:2", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 393, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "693:7:2", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "692:9:2" | |
}, | |
"scope": 410, | |
"src": "640:96:2", | |
"stateMutability": "view", | |
"virtual": true, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 408, | |
"nodeType": "Block", | |
"src": "809:32:2", | |
"statements": [ | |
{ | |
"expression": { | |
"expression": { | |
"id": 405, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4294967281, | |
"src": "826:3:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 406, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberLocation": "830:4:2", | |
"memberName": "data", | |
"nodeType": "MemberAccess", | |
"src": "826:8:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes_calldata_ptr", | |
"typeString": "bytes calldata" | |
} | |
}, | |
"functionReturnParameters": 404, | |
"id": 407, | |
"nodeType": "Return", | |
"src": "819:15:2" | |
} | |
] | |
}, | |
"id": 409, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "_msgData", | |
"nameLocation": "751:8:2", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 401, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "759:2:2" | |
}, | |
"returnParameters": { | |
"id": 404, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 403, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 409, | |
"src": "793:14:2", | |
"stateVariable": false, | |
"storageLocation": "calldata", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes_calldata_ptr", | |
"typeString": "bytes" | |
}, | |
"typeName": { | |
"id": 402, | |
"name": "bytes", | |
"nodeType": "ElementaryTypeName", | |
"src": "793:5:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes_storage_ptr", | |
"typeString": "bytes" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "792:16:2" | |
}, | |
"scope": 410, | |
"src": "742:99:2", | |
"stateMutability": "view", | |
"virtual": true, | |
"visibility": "internal" | |
} | |
], | |
"scope": 411, | |
"src": "608:235:2", | |
"usedErrors": [] | |
} | |
], | |
"src": "86:758:2" | |
}, | |
"id": 2 | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol": { | |
"ast": { | |
"absolutePath": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol", | |
"exportedSymbols": { | |
"Math": [ | |
1487 | |
], | |
"Strings": [ | |
585 | |
] | |
}, | |
"id": 586, | |
"license": "MIT", | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 412, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.8", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "101:23:3" | |
}, | |
{ | |
"absolutePath": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol", | |
"file": "./math/Math.sol", | |
"id": 413, | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "ImportDirective", | |
"scope": 586, | |
"sourceUnit": 1488, | |
"src": "126:25:3", | |
"symbolAliases": [], | |
"unitAlias": "" | |
}, | |
{ | |
"abstract": false, | |
"baseContracts": [], | |
"canonicalName": "Strings", | |
"contractDependencies": [], | |
"contractKind": "library", | |
"documentation": { | |
"id": 414, | |
"nodeType": "StructuredDocumentation", | |
"src": "153:34:3", | |
"text": " @dev String operations." | |
}, | |
"fullyImplemented": true, | |
"id": 585, | |
"linearizedBaseContracts": [ | |
585 | |
], | |
"name": "Strings", | |
"nameLocation": "196:7:3", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"constant": true, | |
"id": 417, | |
"mutability": "constant", | |
"name": "_SYMBOLS", | |
"nameLocation": "235:8:3", | |
"nodeType": "VariableDeclaration", | |
"scope": 585, | |
"src": "210:54:3", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes16", | |
"typeString": "bytes16" | |
}, | |
"typeName": { | |
"id": 415, | |
"name": "bytes16", | |
"nodeType": "ElementaryTypeName", | |
"src": "210:7:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes16", | |
"typeString": "bytes16" | |
} | |
}, | |
"value": { | |
"hexValue": "30313233343536373839616263646566", | |
"id": 416, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "string", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "246:18:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f", | |
"typeString": "literal_string \"0123456789abcdef\"" | |
}, | |
"value": "0123456789abcdef" | |
}, | |
"visibility": "private" | |
}, | |
{ | |
"constant": true, | |
"id": 420, | |
"mutability": "constant", | |
"name": "_ADDRESS_LENGTH", | |
"nameLocation": "293:15:3", | |
"nodeType": "VariableDeclaration", | |
"scope": 585, | |
"src": "270:43:3", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
}, | |
"typeName": { | |
"id": 418, | |
"name": "uint8", | |
"nodeType": "ElementaryTypeName", | |
"src": "270:5:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
} | |
}, | |
"value": { | |
"hexValue": "3230", | |
"id": 419, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "311:2:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_20_by_1", | |
"typeString": "int_const 20" | |
}, | |
"value": "20" | |
}, | |
"visibility": "private" | |
}, | |
{ | |
"body": { | |
"id": 467, | |
"nodeType": "Block", | |
"src": "486:625:3", | |
"statements": [ | |
{ | |
"id": 466, | |
"nodeType": "UncheckedBlock", | |
"src": "496:609:3", | |
"statements": [ | |
{ | |
"assignments": [ | |
429 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 429, | |
"mutability": "mutable", | |
"name": "length", | |
"nameLocation": "528:6:3", | |
"nodeType": "VariableDeclaration", | |
"scope": 466, | |
"src": "520:14:3", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 428, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "520:7:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 436, | |
"initialValue": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 435, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"arguments": [ | |
{ | |
"id": 432, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 423, | |
"src": "548:5:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"expression": { | |
"id": 430, | |
"name": "Math", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1487, | |
"src": "537:4:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_contract$_Math_$1487_$", | |
"typeString": "type(library Math)" | |
} | |
}, | |
"id": 431, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberLocation": "542:5:3", | |
"memberName": "log10", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 1324, | |
"src": "537:10:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 433, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "537:17:3", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 434, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "557:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "537:21:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "520:38:3" | |
}, | |
{ | |
"assignments": [ | |
438 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 438, | |
"mutability": "mutable", | |
"name": "buffer", | |
"nameLocation": "586:6:3", | |
"nodeType": "VariableDeclaration", | |
"scope": 466, | |
"src": "572:20:3", | |
"stateVariable": false, | |
"storageLocation": "memory", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string" | |
}, | |
"typeName": { | |
"id": 437, | |
"name": "string", | |
"nodeType": "ElementaryTypeName", | |
"src": "572:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_storage_ptr", | |
"typeString": "string" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 443, | |
"initialValue": { | |
"arguments": [ | |
{ | |
"id": 441, | |
"name": "length", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 429, | |
"src": "606:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 440, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"nodeType": "NewExpression", | |
"src": "595:10:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$", | |
"typeString": "function (uint256) pure returns (string memory)" | |
}, | |
"typeName": { | |
"id": 439, | |
"name": "string", | |
"nodeType": "ElementaryTypeName", | |
"src": "599:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_storage_ptr", | |
"typeString": "string" | |
} | |
} | |
}, | |
"id": 442, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "595:18:3", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string memory" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "572:41:3" | |
}, | |
{ | |
"assignments": [ | |
445 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 445, | |
"mutability": "mutable", | |
"name": "ptr", | |
"nameLocation": "635:3:3", | |
"nodeType": "VariableDeclaration", | |
"scope": 466, | |
"src": "627:11:3", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 444, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "627:7:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 446, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "627:11:3" | |
}, | |
{ | |
"AST": { | |
"nodeType": "YulBlock", | |
"src": "708:67:3", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "726:35:3", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "buffer", | |
"nodeType": "YulIdentifier", | |
"src": "737:6:3" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "749:2:3", | |
"type": "", | |
"value": "32" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "753:6:3" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "745:3:3" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "745:15:3" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "733:3:3" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "733:28:3" | |
}, | |
"variableNames": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "726:3:3" | |
} | |
] | |
} | |
] | |
}, | |
"documentation": "@solidity memory-safe-assembly", | |
"evmVersion": "london", | |
"externalReferences": [ | |
{ | |
"declaration": 438, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "737:6:3", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 429, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "753:6:3", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 445, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "726:3:3", | |
"valueSize": 1 | |
} | |
], | |
"id": 447, | |
"nodeType": "InlineAssembly", | |
"src": "699:76:3" | |
}, | |
{ | |
"body": { | |
"id": 462, | |
"nodeType": "Block", | |
"src": "801:267:3", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 450, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "UnaryOperation", | |
"operator": "--", | |
"prefix": false, | |
"src": "819:5:3", | |
"subExpression": { | |
"id": 449, | |
"name": "ptr", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 445, | |
"src": "819:3:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 451, | |
"nodeType": "ExpressionStatement", | |
"src": "819:5:3" | |
}, | |
{ | |
"AST": { | |
"nodeType": "YulBlock", | |
"src": "902:84:3", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "932:3:3" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "946:5:3" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "953:2:3", | |
"type": "", | |
"value": "10" | |
} | |
], | |
"functionName": { | |
"name": "mod", | |
"nodeType": "YulIdentifier", | |
"src": "942:3:3" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "942:14:3" | |
}, | |
{ | |
"name": "_SYMBOLS", | |
"nodeType": "YulIdentifier", | |
"src": "958:8:3" | |
} | |
], | |
"functionName": { | |
"name": "byte", | |
"nodeType": "YulIdentifier", | |
"src": "937:4:3" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "937:30:3" | |
} | |
], | |
"functionName": { | |
"name": "mstore8", | |
"nodeType": "YulIdentifier", | |
"src": "924:7:3" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "924:44:3" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "924:44:3" | |
} | |
] | |
}, | |
"documentation": "@solidity memory-safe-assembly", | |
"evmVersion": "london", | |
"externalReferences": [ | |
{ | |
"declaration": 417, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "958:8:3", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 445, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "932:3:3", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 423, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "946:5:3", | |
"valueSize": 1 | |
} | |
], | |
"id": 452, | |
"nodeType": "InlineAssembly", | |
"src": "893:93:3" | |
}, | |
{ | |
"expression": { | |
"id": 455, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 453, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 423, | |
"src": "1003:5:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "/=", | |
"rightHandSide": { | |
"hexValue": "3130", | |
"id": 454, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1012:2:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"src": "1003:11:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 456, | |
"nodeType": "ExpressionStatement", | |
"src": "1003:11:3" | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 459, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 457, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 423, | |
"src": "1036:5:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 458, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1045:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "1036:10:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 461, | |
"nodeType": "IfStatement", | |
"src": "1032:21:3", | |
"trueBody": { | |
"id": 460, | |
"nodeType": "Break", | |
"src": "1048:5:3" | |
} | |
} | |
] | |
}, | |
"condition": { | |
"hexValue": "74727565", | |
"id": 448, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "bool", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "795:4:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"value": "true" | |
}, | |
"id": 463, | |
"nodeType": "WhileStatement", | |
"src": "788:280:3" | |
}, | |
{ | |
"expression": { | |
"id": 464, | |
"name": "buffer", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 438, | |
"src": "1088:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string memory" | |
} | |
}, | |
"functionReturnParameters": 427, | |
"id": 465, | |
"nodeType": "Return", | |
"src": "1081:13:3" | |
} | |
] | |
} | |
] | |
}, | |
"documentation": { | |
"id": 421, | |
"nodeType": "StructuredDocumentation", | |
"src": "320:90:3", | |
"text": " @dev Converts a `uint256` to its ASCII `string` decimal representation." | |
}, | |
"id": 468, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "toString", | |
"nameLocation": "424:8:3", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 424, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 423, | |
"mutability": "mutable", | |
"name": "value", | |
"nameLocation": "441:5:3", | |
"nodeType": "VariableDeclaration", | |
"scope": 468, | |
"src": "433:13:3", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 422, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "433:7:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "432:15:3" | |
}, | |
"returnParameters": { | |
"id": 427, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 426, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 468, | |
"src": "471:13:3", | |
"stateVariable": false, | |
"storageLocation": "memory", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string" | |
}, | |
"typeName": { | |
"id": 425, | |
"name": "string", | |
"nodeType": "ElementaryTypeName", | |
"src": "471:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_storage_ptr", | |
"typeString": "string" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "470:15:3" | |
}, | |
"scope": 585, | |
"src": "415:696:3", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 487, | |
"nodeType": "Block", | |
"src": "1290:100:3", | |
"statements": [ | |
{ | |
"id": 486, | |
"nodeType": "UncheckedBlock", | |
"src": "1300:84:3", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"id": 477, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 471, | |
"src": "1343:5:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 483, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"arguments": [ | |
{ | |
"id": 480, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 471, | |
"src": "1362:5:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"expression": { | |
"id": 478, | |
"name": "Math", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1487, | |
"src": "1350:4:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_contract$_Math_$1487_$", | |
"typeString": "type(library Math)" | |
} | |
}, | |
"id": 479, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberLocation": "1355:6:3", | |
"memberName": "log256", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 1447, | |
"src": "1350:11:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 481, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "1350:18:3", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 482, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1371:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "1350:22:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 476, | |
"name": "toHexString", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
488, | |
564, | |
584 | |
], | |
"referencedDeclaration": 564, | |
"src": "1331:11:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", | |
"typeString": "function (uint256,uint256) pure returns (string memory)" | |
} | |
}, | |
"id": 484, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "1331:42:3", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string memory" | |
} | |
}, | |
"functionReturnParameters": 475, | |
"id": 485, | |
"nodeType": "Return", | |
"src": "1324:49:3" | |
} | |
] | |
} | |
] | |
}, | |
"documentation": { | |
"id": 469, | |
"nodeType": "StructuredDocumentation", | |
"src": "1117:94:3", | |
"text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation." | |
}, | |
"id": 488, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "toHexString", | |
"nameLocation": "1225:11:3", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 472, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 471, | |
"mutability": "mutable", | |
"name": "value", | |
"nameLocation": "1245:5:3", | |
"nodeType": "VariableDeclaration", | |
"scope": 488, | |
"src": "1237:13:3", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 470, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "1237:7:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1236:15:3" | |
}, | |
"returnParameters": { | |
"id": 475, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 474, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 488, | |
"src": "1275:13:3", | |
"stateVariable": false, | |
"storageLocation": "memory", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string" | |
}, | |
"typeName": { | |
"id": 473, | |
"name": "string", | |
"nodeType": "ElementaryTypeName", | |
"src": "1275:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_storage_ptr", | |
"typeString": "string" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1274:15:3" | |
}, | |
"scope": 585, | |
"src": "1216:174:3", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 563, | |
"nodeType": "Block", | |
"src": "1603:347:3", | |
"statements": [ | |
{ | |
"assignments": [ | |
499 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 499, | |
"mutability": "mutable", | |
"name": "buffer", | |
"nameLocation": "1626:6:3", | |
"nodeType": "VariableDeclaration", | |
"scope": 563, | |
"src": "1613:19:3", | |
"stateVariable": false, | |
"storageLocation": "memory", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes_memory_ptr", | |
"typeString": "bytes" | |
}, | |
"typeName": { | |
"id": 498, | |
"name": "bytes", | |
"nodeType": "ElementaryTypeName", | |
"src": "1613:5:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes_storage_ptr", | |
"typeString": "bytes" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 508, | |
"initialValue": { | |
"arguments": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 506, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 504, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "32", | |
"id": 502, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1645:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"id": 503, | |
"name": "length", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 493, | |
"src": "1649:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "1645:10:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"hexValue": "32", | |
"id": 505, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1658:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"src": "1645:14:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 501, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"nodeType": "NewExpression", | |
"src": "1635:9:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", | |
"typeString": "function (uint256) pure returns (bytes memory)" | |
}, | |
"typeName": { | |
"id": 500, | |
"name": "bytes", | |
"nodeType": "ElementaryTypeName", | |
"src": "1639:5:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes_storage_ptr", | |
"typeString": "bytes" | |
} | |
} | |
}, | |
"id": 507, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "1635:25:3", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes_memory_ptr", | |
"typeString": "bytes memory" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "1613:47:3" | |
}, | |
{ | |
"expression": { | |
"id": 513, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"baseExpression": { | |
"id": 509, | |
"name": "buffer", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 499, | |
"src": "1670:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes_memory_ptr", | |
"typeString": "bytes memory" | |
} | |
}, | |
"id": 511, | |
"indexExpression": { | |
"hexValue": "30", | |
"id": 510, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1677:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "1670:9:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes1", | |
"typeString": "bytes1" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"hexValue": "30", | |
"id": 512, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "string", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1682:3:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", | |
"typeString": "literal_string \"0\"" | |
}, | |
"value": "0" | |
}, | |
"src": "1670:15:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes1", | |
"typeString": "bytes1" | |
} | |
}, | |
"id": 514, | |
"nodeType": "ExpressionStatement", | |
"src": "1670:15:3" | |
}, | |
{ | |
"expression": { | |
"id": 519, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"baseExpression": { | |
"id": 515, | |
"name": "buffer", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 499, | |
"src": "1695:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes_memory_ptr", | |
"typeString": "bytes memory" | |
} | |
}, | |
"id": 517, | |
"indexExpression": { | |
"hexValue": "31", | |
"id": 516, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1702:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "1695:9:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes1", | |
"typeString": "bytes1" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"hexValue": "78", | |
"id": 518, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "string", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1707:3:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83", | |
"typeString": "literal_string \"x\"" | |
}, | |
"value": "x" | |
}, | |
"src": "1695:15:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes1", | |
"typeString": "bytes1" | |
} | |
}, | |
"id": 520, | |
"nodeType": "ExpressionStatement", | |
"src": "1695:15:3" | |
}, | |
{ | |
"body": { | |
"id": 549, | |
"nodeType": "Block", | |
"src": "1765:83:3", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 543, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"baseExpression": { | |
"id": 535, | |
"name": "buffer", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 499, | |
"src": "1779:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes_memory_ptr", | |
"typeString": "bytes memory" | |
} | |
}, | |
"id": 537, | |
"indexExpression": { | |
"id": 536, | |
"name": "i", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 522, | |
"src": "1786:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "1779:9:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes1", | |
"typeString": "bytes1" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"baseExpression": { | |
"id": 538, | |
"name": "_SYMBOLS", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 417, | |
"src": "1791:8:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes16", | |
"typeString": "bytes16" | |
} | |
}, | |
"id": 542, | |
"indexExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 541, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 539, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 491, | |
"src": "1800:5:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "&", | |
"rightExpression": { | |
"hexValue": "307866", | |
"id": 540, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1808:3:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_15_by_1", | |
"typeString": "int_const 15" | |
}, | |
"value": "0xf" | |
}, | |
"src": "1800:11:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "1791:21:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes1", | |
"typeString": "bytes1" | |
} | |
}, | |
"src": "1779:33:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes1", | |
"typeString": "bytes1" | |
} | |
}, | |
"id": 544, | |
"nodeType": "ExpressionStatement", | |
"src": "1779:33:3" | |
}, | |
{ | |
"expression": { | |
"id": 547, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 545, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 491, | |
"src": "1826:5:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": ">>=", | |
"rightHandSide": { | |
"hexValue": "34", | |
"id": 546, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1836:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_4_by_1", | |
"typeString": "int_const 4" | |
}, | |
"value": "4" | |
}, | |
"src": "1826:11:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 548, | |
"nodeType": "ExpressionStatement", | |
"src": "1826:11:3" | |
} | |
] | |
}, | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 531, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 529, | |
"name": "i", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 522, | |
"src": "1753:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 530, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1757:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "1753:5:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 550, | |
"initializationExpression": { | |
"assignments": [ | |
522 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 522, | |
"mutability": "mutable", | |
"name": "i", | |
"nameLocation": "1733:1:3", | |
"nodeType": "VariableDeclaration", | |
"scope": 550, | |
"src": "1725:9:3", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 521, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "1725:7:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 528, | |
"initialValue": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 527, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 525, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "32", | |
"id": 523, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1737:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"id": 524, | |
"name": "length", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 493, | |
"src": "1741:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "1737:10:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 526, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1750:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "1737:14:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "1725:26:3" | |
}, | |
"loopExpression": { | |
"expression": { | |
"id": 533, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "UnaryOperation", | |
"operator": "--", | |
"prefix": true, | |
"src": "1760:3:3", | |
"subExpression": { | |
"id": 532, | |
"name": "i", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 522, | |
"src": "1762:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 534, | |
"nodeType": "ExpressionStatement", | |
"src": "1760:3:3" | |
}, | |
"nodeType": "ForStatement", | |
"src": "1720:128:3" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 554, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 552, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 491, | |
"src": "1865:5:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 553, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1874:1:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "1865:10:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
{ | |
"hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74", | |
"id": 555, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "string", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1877:34:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", | |
"typeString": "literal_string \"Strings: hex length insufficient\"" | |
}, | |
"value": "Strings: hex length insufficient" | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
{ | |
"typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2", | |
"typeString": "literal_string \"Strings: hex length insufficient\"" | |
} | |
], | |
"id": 551, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
4294967278, | |
4294967278 | |
], | |
"referencedDeclaration": 4294967278, | |
"src": "1857:7:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", | |
"typeString": "function (bool,string memory) pure" | |
} | |
}, | |
"id": 556, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "1857:55:3", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 557, | |
"nodeType": "ExpressionStatement", | |
"src": "1857:55:3" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"id": 560, | |
"name": "buffer", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 499, | |
"src": "1936:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes_memory_ptr", | |
"typeString": "bytes memory" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bytes_memory_ptr", | |
"typeString": "bytes memory" | |
} | |
], | |
"id": 559, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"nodeType": "ElementaryTypeNameExpression", | |
"src": "1929:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_string_storage_ptr_$", | |
"typeString": "type(string storage pointer)" | |
}, | |
"typeName": { | |
"id": 558, | |
"name": "string", | |
"nodeType": "ElementaryTypeName", | |
"src": "1929:6:3", | |
"typeDescriptions": {} | |
} | |
}, | |
"id": 561, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "typeConversion", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "1929:14:3", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string memory" | |
} | |
}, | |
"functionReturnParameters": 497, | |
"id": 562, | |
"nodeType": "Return", | |
"src": "1922:21:3" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 489, | |
"nodeType": "StructuredDocumentation", | |
"src": "1396:112:3", | |
"text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length." | |
}, | |
"id": 564, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "toHexString", | |
"nameLocation": "1522:11:3", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 494, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 491, | |
"mutability": "mutable", | |
"name": "value", | |
"nameLocation": "1542:5:3", | |
"nodeType": "VariableDeclaration", | |
"scope": 564, | |
"src": "1534:13:3", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 490, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "1534:7:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 493, | |
"mutability": "mutable", | |
"name": "length", | |
"nameLocation": "1557:6:3", | |
"nodeType": "VariableDeclaration", | |
"scope": 564, | |
"src": "1549:14:3", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 492, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "1549:7:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1533:31:3" | |
}, | |
"returnParameters": { | |
"id": 497, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 496, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 564, | |
"src": "1588:13:3", | |
"stateVariable": false, | |
"storageLocation": "memory", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string" | |
}, | |
"typeName": { | |
"id": 495, | |
"name": "string", | |
"nodeType": "ElementaryTypeName", | |
"src": "1588:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_storage_ptr", | |
"typeString": "string" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1587:15:3" | |
}, | |
"scope": 585, | |
"src": "1513:437:3", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 583, | |
"nodeType": "Block", | |
"src": "2175:76:3", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"id": 577, | |
"name": "addr", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 567, | |
"src": "2220:4:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 576, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"nodeType": "ElementaryTypeNameExpression", | |
"src": "2212:7:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_uint160_$", | |
"typeString": "type(uint160)" | |
}, | |
"typeName": { | |
"id": 575, | |
"name": "uint160", | |
"nodeType": "ElementaryTypeName", | |
"src": "2212:7:3", | |
"typeDescriptions": {} | |
} | |
}, | |
"id": 578, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "typeConversion", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "2212:13:3", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint160", | |
"typeString": "uint160" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint160", | |
"typeString": "uint160" | |
} | |
], | |
"id": 574, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"nodeType": "ElementaryTypeNameExpression", | |
"src": "2204:7:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_uint256_$", | |
"typeString": "type(uint256)" | |
}, | |
"typeName": { | |
"id": 573, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "2204:7:3", | |
"typeDescriptions": {} | |
} | |
}, | |
"id": 579, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "typeConversion", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "2204:22:3", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
{ | |
"id": 580, | |
"name": "_ADDRESS_LENGTH", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 420, | |
"src": "2228:15:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
} | |
], | |
"id": 572, | |
"name": "toHexString", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
488, | |
564, | |
584 | |
], | |
"referencedDeclaration": 564, | |
"src": "2192:11:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", | |
"typeString": "function (uint256,uint256) pure returns (string memory)" | |
} | |
}, | |
"id": 581, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "2192:52:3", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string memory" | |
} | |
}, | |
"functionReturnParameters": 571, | |
"id": 582, | |
"nodeType": "Return", | |
"src": "2185:59:3" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 565, | |
"nodeType": "StructuredDocumentation", | |
"src": "1956:141:3", | |
"text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation." | |
}, | |
"id": 584, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "toHexString", | |
"nameLocation": "2111:11:3", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 568, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 567, | |
"mutability": "mutable", | |
"name": "addr", | |
"nameLocation": "2131:4:3", | |
"nodeType": "VariableDeclaration", | |
"scope": 584, | |
"src": "2123:12:3", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 566, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "2123:7:3", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "2122:14:3" | |
}, | |
"returnParameters": { | |
"id": 571, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 570, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 584, | |
"src": "2160:13:3", | |
"stateVariable": false, | |
"storageLocation": "memory", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_memory_ptr", | |
"typeString": "string" | |
}, | |
"typeName": { | |
"id": 569, | |
"name": "string", | |
"nodeType": "ElementaryTypeName", | |
"src": "2160:6:3", | |
"typeDescriptions": { | |
"typeIdentifier": "t_string_storage_ptr", | |
"typeString": "string" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "2159:15:3" | |
}, | |
"scope": 585, | |
"src": "2102:149:3", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
} | |
], | |
"scope": 586, | |
"src": "188:2065:3", | |
"usedErrors": [] | |
} | |
], | |
"src": "101:2153:3" | |
}, | |
"id": 3 | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol": { | |
"ast": { | |
"absolutePath": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/ERC165.sol", | |
"exportedSymbols": { | |
"ERC165": [ | |
609 | |
], | |
"IERC165": [ | |
621 | |
] | |
}, | |
"id": 610, | |
"license": "MIT", | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 587, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.8", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "99:23:4" | |
}, | |
{ | |
"absolutePath": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol", | |
"file": "./IERC165.sol", | |
"id": 588, | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "ImportDirective", | |
"scope": 610, | |
"sourceUnit": 622, | |
"src": "124:23:4", | |
"symbolAliases": [], | |
"unitAlias": "" | |
}, | |
{ | |
"abstract": true, | |
"baseContracts": [ | |
{ | |
"baseName": { | |
"id": 590, | |
"name": "IERC165", | |
"nameLocations": [ | |
"754:7:4" | |
], | |
"nodeType": "IdentifierPath", | |
"referencedDeclaration": 621, | |
"src": "754:7:4" | |
}, | |
"id": 591, | |
"nodeType": "InheritanceSpecifier", | |
"src": "754:7:4" | |
} | |
], | |
"canonicalName": "ERC165", | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": { | |
"id": 589, | |
"nodeType": "StructuredDocumentation", | |
"src": "149:576:4", | |
"text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 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 ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation." | |
}, | |
"fullyImplemented": true, | |
"id": 609, | |
"linearizedBaseContracts": [ | |
609, | |
621 | |
], | |
"name": "ERC165", | |
"nameLocation": "744:6:4", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"baseFunctions": [ | |
620 | |
], | |
"body": { | |
"id": 607, | |
"nodeType": "Block", | |
"src": "920:64:4", | |
"statements": [ | |
{ | |
"expression": { | |
"commonType": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
}, | |
"id": 605, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 600, | |
"name": "interfaceId", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 594, | |
"src": "937:11:4", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"expression": { | |
"arguments": [ | |
{ | |
"id": 602, | |
"name": "IERC165", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 621, | |
"src": "957:7:4", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_contract$_IERC165_$621_$", | |
"typeString": "type(contract IERC165)" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_type$_t_contract$_IERC165_$621_$", | |
"typeString": "type(contract IERC165)" | |
} | |
], | |
"id": 601, | |
"name": "type", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4294967269, | |
"src": "952:4:4", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_metatype_pure$__$returns$__$", | |
"typeString": "function () pure" | |
} | |
}, | |
"id": 603, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "952:13:4", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$621", | |
"typeString": "type(contract IERC165)" | |
} | |
}, | |
"id": 604, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"memberLocation": "966:11:4", | |
"memberName": "interfaceId", | |
"nodeType": "MemberAccess", | |
"src": "952:25:4", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
} | |
}, | |
"src": "937:40:4", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"functionReturnParameters": 599, | |
"id": 606, | |
"nodeType": "Return", | |
"src": "930:47:4" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 592, | |
"nodeType": "StructuredDocumentation", | |
"src": "768:56:4", | |
"text": " @dev See {IERC165-supportsInterface}." | |
}, | |
"functionSelector": "01ffc9a7", | |
"id": 608, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "supportsInterface", | |
"nameLocation": "838:17:4", | |
"nodeType": "FunctionDefinition", | |
"overrides": { | |
"id": 596, | |
"nodeType": "OverrideSpecifier", | |
"overrides": [], | |
"src": "896:8:4" | |
}, | |
"parameters": { | |
"id": 595, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 594, | |
"mutability": "mutable", | |
"name": "interfaceId", | |
"nameLocation": "863:11:4", | |
"nodeType": "VariableDeclaration", | |
"scope": 608, | |
"src": "856:18:4", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
}, | |
"typeName": { | |
"id": 593, | |
"name": "bytes4", | |
"nodeType": "ElementaryTypeName", | |
"src": "856:6:4", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "855:20:4" | |
}, | |
"returnParameters": { | |
"id": 599, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 598, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 608, | |
"src": "914:4:4", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"typeName": { | |
"id": 597, | |
"name": "bool", | |
"nodeType": "ElementaryTypeName", | |
"src": "914:4:4", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "913:6:4" | |
}, | |
"scope": 609, | |
"src": "829:155:4", | |
"stateMutability": "view", | |
"virtual": true, | |
"visibility": "public" | |
} | |
], | |
"scope": 610, | |
"src": "726:260:4", | |
"usedErrors": [] | |
} | |
], | |
"src": "99:888:4" | |
}, | |
"id": 4 | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol": { | |
"ast": { | |
"absolutePath": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol", | |
"exportedSymbols": { | |
"IERC165": [ | |
621 | |
] | |
}, | |
"id": 622, | |
"license": "MIT", | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 611, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.8", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "100:23:5" | |
}, | |
{ | |
"abstract": false, | |
"baseContracts": [], | |
"canonicalName": "IERC165", | |
"contractDependencies": [], | |
"contractKind": "interface", | |
"documentation": { | |
"id": 612, | |
"nodeType": "StructuredDocumentation", | |
"src": "125:279:5", | |
"text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\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": 621, | |
"linearizedBaseContracts": [ | |
621 | |
], | |
"name": "IERC165", | |
"nameLocation": "415:7:5", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"documentation": { | |
"id": 613, | |
"nodeType": "StructuredDocumentation", | |
"src": "429:340:5", | |
"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[EIP 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": 620, | |
"implemented": false, | |
"kind": "function", | |
"modifiers": [], | |
"name": "supportsInterface", | |
"nameLocation": "783:17:5", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 616, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 615, | |
"mutability": "mutable", | |
"name": "interfaceId", | |
"nameLocation": "808:11:5", | |
"nodeType": "VariableDeclaration", | |
"scope": 620, | |
"src": "801:18:5", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
}, | |
"typeName": { | |
"id": 614, | |
"name": "bytes4", | |
"nodeType": "ElementaryTypeName", | |
"src": "801:6:5", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bytes4", | |
"typeString": "bytes4" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "800:20:5" | |
}, | |
"returnParameters": { | |
"id": 619, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 618, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 620, | |
"src": "844:4:5", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"typeName": { | |
"id": 617, | |
"name": "bool", | |
"nodeType": "ElementaryTypeName", | |
"src": "844:4:5", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "843:6:5" | |
}, | |
"scope": 621, | |
"src": "774:76:5", | |
"stateMutability": "view", | |
"virtual": false, | |
"visibility": "external" | |
} | |
], | |
"scope": 622, | |
"src": "405:447:5", | |
"usedErrors": [] | |
} | |
], | |
"src": "100:753:5" | |
}, | |
"id": 5 | |
}, | |
"https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol": { | |
"ast": { | |
"absolutePath": "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol", | |
"exportedSymbols": { | |
"Math": [ | |
1487 | |
] | |
}, | |
"id": 1488, | |
"license": "MIT", | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 623, | |
"literals": [ | |
"solidity", | |
"^", | |
"0.8", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "103:23:6" | |
}, | |
{ | |
"abstract": false, | |
"baseContracts": [], | |
"canonicalName": "Math", | |
"contractDependencies": [], | |
"contractKind": "library", | |
"documentation": { | |
"id": 624, | |
"nodeType": "StructuredDocumentation", | |
"src": "128:73:6", | |
"text": " @dev Standard math utilities missing in the Solidity language." | |
}, | |
"fullyImplemented": true, | |
"id": 1487, | |
"linearizedBaseContracts": [ | |
1487 | |
], | |
"name": "Math", | |
"nameLocation": "210:4:6", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"canonicalName": "Math.Rounding", | |
"id": 628, | |
"members": [ | |
{ | |
"id": 625, | |
"name": "Down", | |
"nameLocation": "245:4:6", | |
"nodeType": "EnumValue", | |
"src": "245:4:6" | |
}, | |
{ | |
"id": 626, | |
"name": "Up", | |
"nameLocation": "287:2:6", | |
"nodeType": "EnumValue", | |
"src": "287:2:6" | |
}, | |
{ | |
"id": 627, | |
"name": "Zero", | |
"nameLocation": "318:4:6", | |
"nodeType": "EnumValue", | |
"src": "318:4:6" | |
} | |
], | |
"name": "Rounding", | |
"nameLocation": "226:8:6", | |
"nodeType": "EnumDefinition", | |
"src": "221:122:6" | |
}, | |
{ | |
"body": { | |
"id": 645, | |
"nodeType": "Block", | |
"src": "480:37:6", | |
"statements": [ | |
{ | |
"expression": { | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 640, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 638, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 631, | |
"src": "497:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"id": 639, | |
"name": "b", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 633, | |
"src": "501:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "497:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseExpression": { | |
"id": 642, | |
"name": "b", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 633, | |
"src": "509:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 643, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "Conditional", | |
"src": "497:13:6", | |
"trueExpression": { | |
"id": 641, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 631, | |
"src": "505:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 637, | |
"id": 644, | |
"nodeType": "Return", | |
"src": "490:20:6" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 629, | |
"nodeType": "StructuredDocumentation", | |
"src": "349:59:6", | |
"text": " @dev Returns the largest of two numbers." | |
}, | |
"id": 646, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "max", | |
"nameLocation": "422:3:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 634, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 631, | |
"mutability": "mutable", | |
"name": "a", | |
"nameLocation": "434:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 646, | |
"src": "426:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 630, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "426:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 633, | |
"mutability": "mutable", | |
"name": "b", | |
"nameLocation": "445:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 646, | |
"src": "437:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 632, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "437:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "425:22:6" | |
}, | |
"returnParameters": { | |
"id": 637, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 636, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 646, | |
"src": "471:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 635, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "471:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "470:9:6" | |
}, | |
"scope": 1487, | |
"src": "413:104:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 663, | |
"nodeType": "Block", | |
"src": "655:37:6", | |
"statements": [ | |
{ | |
"expression": { | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 658, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 656, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 649, | |
"src": "672:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<", | |
"rightExpression": { | |
"id": 657, | |
"name": "b", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 651, | |
"src": "676:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "672:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseExpression": { | |
"id": 660, | |
"name": "b", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 651, | |
"src": "684:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 661, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "Conditional", | |
"src": "672:13:6", | |
"trueExpression": { | |
"id": 659, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 649, | |
"src": "680:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 655, | |
"id": 662, | |
"nodeType": "Return", | |
"src": "665:20:6" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 647, | |
"nodeType": "StructuredDocumentation", | |
"src": "523:60:6", | |
"text": " @dev Returns the smallest of two numbers." | |
}, | |
"id": 664, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "min", | |
"nameLocation": "597:3:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 652, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 649, | |
"mutability": "mutable", | |
"name": "a", | |
"nameLocation": "609:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 664, | |
"src": "601:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 648, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "601:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 651, | |
"mutability": "mutable", | |
"name": "b", | |
"nameLocation": "620:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 664, | |
"src": "612:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 650, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "612:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "600:22:6" | |
}, | |
"returnParameters": { | |
"id": 655, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 654, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 664, | |
"src": "646:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 653, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "646:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "645:9:6" | |
}, | |
"scope": 1487, | |
"src": "588:104:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 686, | |
"nodeType": "Block", | |
"src": "876:82:6", | |
"statements": [ | |
{ | |
"expression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 684, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"components": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 676, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 674, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 667, | |
"src": "931:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "&", | |
"rightExpression": { | |
"id": 675, | |
"name": "b", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 669, | |
"src": "935:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "931:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 677, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "930:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 683, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"components": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 680, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 678, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 667, | |
"src": "941:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "^", | |
"rightExpression": { | |
"id": 679, | |
"name": "b", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 669, | |
"src": "945:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "941:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 681, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "940:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "/", | |
"rightExpression": { | |
"hexValue": "32", | |
"id": 682, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "950:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"src": "940:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "930:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 673, | |
"id": 685, | |
"nodeType": "Return", | |
"src": "923:28:6" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 665, | |
"nodeType": "StructuredDocumentation", | |
"src": "698:102:6", | |
"text": " @dev Returns the average of two numbers. The result is rounded towards\n zero." | |
}, | |
"id": 687, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "average", | |
"nameLocation": "814:7:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 670, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 667, | |
"mutability": "mutable", | |
"name": "a", | |
"nameLocation": "830:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 687, | |
"src": "822:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 666, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "822:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 669, | |
"mutability": "mutable", | |
"name": "b", | |
"nameLocation": "841:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 687, | |
"src": "833:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 668, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "833:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "821:22:6" | |
}, | |
"returnParameters": { | |
"id": 673, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 672, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 687, | |
"src": "867:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 671, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "867:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "866:9:6" | |
}, | |
"scope": 1487, | |
"src": "805:153:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 711, | |
"nodeType": "Block", | |
"src": "1228:123:6", | |
"statements": [ | |
{ | |
"expression": { | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 699, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 697, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 690, | |
"src": "1316:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 698, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1321:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "1316:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 708, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 706, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"components": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 703, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 701, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 690, | |
"src": "1330:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "-", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 702, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1334:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "1330:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 704, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "1329:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "/", | |
"rightExpression": { | |
"id": 705, | |
"name": "b", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 692, | |
"src": "1339:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "1329:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 707, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1343:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "1329:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 709, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "Conditional", | |
"src": "1316:28:6", | |
"trueExpression": { | |
"hexValue": "30", | |
"id": 700, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "1325:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 696, | |
"id": 710, | |
"nodeType": "Return", | |
"src": "1309:35:6" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 688, | |
"nodeType": "StructuredDocumentation", | |
"src": "964:188:6", | |
"text": " @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down." | |
}, | |
"id": 712, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "ceilDiv", | |
"nameLocation": "1166:7:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 693, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 690, | |
"mutability": "mutable", | |
"name": "a", | |
"nameLocation": "1182:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 712, | |
"src": "1174:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 689, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "1174:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 692, | |
"mutability": "mutable", | |
"name": "b", | |
"nameLocation": "1193:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 712, | |
"src": "1185:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 691, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "1185:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1173:22:6" | |
}, | |
"returnParameters": { | |
"id": 696, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 695, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 712, | |
"src": "1219:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 694, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "1219:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1218:9:6" | |
}, | |
"scope": 1487, | |
"src": "1157:194:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 834, | |
"nodeType": "Block", | |
"src": "1795:3822:6", | |
"statements": [ | |
{ | |
"id": 833, | |
"nodeType": "UncheckedBlock", | |
"src": "1805:3806:6", | |
"statements": [ | |
{ | |
"assignments": [ | |
725 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 725, | |
"mutability": "mutable", | |
"name": "prod0", | |
"nameLocation": "2134:5:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 833, | |
"src": "2126:13:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 724, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "2126:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 726, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "2126:13:6" | |
}, | |
{ | |
"assignments": [ | |
728 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 728, | |
"mutability": "mutable", | |
"name": "prod1", | |
"nameLocation": "2206:5:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 833, | |
"src": "2198:13:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 727, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "2198:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 729, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "2198:13:6" | |
}, | |
{ | |
"AST": { | |
"nodeType": "YulBlock", | |
"src": "2278:157:6", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2296:30:6", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "x", | |
"nodeType": "YulIdentifier", | |
"src": "2313:1:6" | |
}, | |
{ | |
"name": "y", | |
"nodeType": "YulIdentifier", | |
"src": "2316:1:6" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2323:1:6", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "2319:3:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2319:6:6" | |
} | |
], | |
"functionName": { | |
"name": "mulmod", | |
"nodeType": "YulIdentifier", | |
"src": "2306:6:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2306:20:6" | |
}, | |
"variables": [ | |
{ | |
"name": "mm", | |
"nodeType": "YulTypedName", | |
"src": "2300:2:6", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2343:18:6", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "x", | |
"nodeType": "YulIdentifier", | |
"src": "2356:1:6" | |
}, | |
{ | |
"name": "y", | |
"nodeType": "YulIdentifier", | |
"src": "2359:1:6" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "2352:3:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2352:9:6" | |
}, | |
"variableNames": [ | |
{ | |
"name": "prod0", | |
"nodeType": "YulIdentifier", | |
"src": "2343:5:6" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2378:43:6", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "mm", | |
"nodeType": "YulIdentifier", | |
"src": "2395:2:6" | |
}, | |
{ | |
"name": "prod0", | |
"nodeType": "YulIdentifier", | |
"src": "2399:5:6" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "2391:3:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2391:14:6" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "mm", | |
"nodeType": "YulIdentifier", | |
"src": "2410:2:6" | |
}, | |
{ | |
"name": "prod0", | |
"nodeType": "YulIdentifier", | |
"src": "2414:5:6" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "2407:2:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2407:13:6" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "2387:3:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2387:34:6" | |
}, | |
"variableNames": [ | |
{ | |
"name": "prod1", | |
"nodeType": "YulIdentifier", | |
"src": "2378:5:6" | |
} | |
] | |
} | |
] | |
}, | |
"evmVersion": "london", | |
"externalReferences": [ | |
{ | |
"declaration": 725, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "2343:5:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 725, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "2399:5:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 725, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "2414:5:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 728, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "2378:5:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 715, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "2313:1:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 715, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "2356:1:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 717, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "2316:1:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 717, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "2359:1:6", | |
"valueSize": 1 | |
} | |
], | |
"id": 730, | |
"nodeType": "InlineAssembly", | |
"src": "2269:166:6" | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 733, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 731, | |
"name": "prod1", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 728, | |
"src": "2516:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 732, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "2525:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "2516:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 739, | |
"nodeType": "IfStatement", | |
"src": "2512:75:6", | |
"trueBody": { | |
"id": 738, | |
"nodeType": "Block", | |
"src": "2528:59:6", | |
"statements": [ | |
{ | |
"expression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 736, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 734, | |
"name": "prod0", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 725, | |
"src": "2553:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "/", | |
"rightExpression": { | |
"id": 735, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 719, | |
"src": "2561:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "2553:19:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 723, | |
"id": 737, | |
"nodeType": "Return", | |
"src": "2546:26:6" | |
} | |
] | |
} | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 743, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 741, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 719, | |
"src": "2697:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"id": 742, | |
"name": "prod1", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 728, | |
"src": "2711:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "2697:19:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
{ | |
"hexValue": "4d6174683a206d756c446976206f766572666c6f77", | |
"id": 744, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "string", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "2718:23:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851", | |
"typeString": "literal_string \"Math: mulDiv overflow\"" | |
}, | |
"value": "Math: mulDiv overflow" | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
{ | |
"typeIdentifier": "t_stringliteral_d87093691d63b122ac2c14d1b11554b287e2431cf2b03550b3be7cffb0f86851", | |
"typeString": "literal_string \"Math: mulDiv overflow\"" | |
} | |
], | |
"id": 740, | |
"name": "require", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
4294967278, | |
4294967278 | |
], | |
"referencedDeclaration": 4294967278, | |
"src": "2689:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", | |
"typeString": "function (bool,string memory) pure" | |
} | |
}, | |
"id": 745, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "2689:53:6", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 746, | |
"nodeType": "ExpressionStatement", | |
"src": "2689:53:6" | |
}, | |
{ | |
"assignments": [ | |
748 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 748, | |
"mutability": "mutable", | |
"name": "remainder", | |
"nameLocation": "3006:9:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 833, | |
"src": "2998:17:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 747, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "2998:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 749, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "2998:17:6" | |
}, | |
{ | |
"AST": { | |
"nodeType": "YulBlock", | |
"src": "3038:291:6", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3107:38:6", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "x", | |
"nodeType": "YulIdentifier", | |
"src": "3127:1:6" | |
}, | |
{ | |
"name": "y", | |
"nodeType": "YulIdentifier", | |
"src": "3130:1:6" | |
}, | |
{ | |
"name": "denominator", | |
"nodeType": "YulIdentifier", | |
"src": "3133:11:6" | |
} | |
], | |
"functionName": { | |
"name": "mulmod", | |
"nodeType": "YulIdentifier", | |
"src": "3120:6:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3120:25:6" | |
}, | |
"variableNames": [ | |
{ | |
"name": "remainder", | |
"nodeType": "YulIdentifier", | |
"src": "3107:9:6" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3227:41:6", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "prod1", | |
"nodeType": "YulIdentifier", | |
"src": "3240:5:6" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "remainder", | |
"nodeType": "YulIdentifier", | |
"src": "3250:9:6" | |
}, | |
{ | |
"name": "prod0", | |
"nodeType": "YulIdentifier", | |
"src": "3261:5:6" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "3247:2:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3247:20:6" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "3236:3:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3236:32:6" | |
}, | |
"variableNames": [ | |
{ | |
"name": "prod1", | |
"nodeType": "YulIdentifier", | |
"src": "3227:5:6" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3285:30:6", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "prod0", | |
"nodeType": "YulIdentifier", | |
"src": "3298:5:6" | |
}, | |
{ | |
"name": "remainder", | |
"nodeType": "YulIdentifier", | |
"src": "3305:9:6" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "3294:3:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3294:21:6" | |
}, | |
"variableNames": [ | |
{ | |
"name": "prod0", | |
"nodeType": "YulIdentifier", | |
"src": "3285:5:6" | |
} | |
] | |
} | |
] | |
}, | |
"evmVersion": "london", | |
"externalReferences": [ | |
{ | |
"declaration": 719, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3133:11:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 725, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3261:5:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 725, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3285:5:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 725, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3298:5:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 728, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3227:5:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 728, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3240:5:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 748, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3107:9:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 748, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3250:9:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 748, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3305:9:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 715, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3127:1:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 717, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3130:1:6", | |
"valueSize": 1 | |
} | |
], | |
"id": 750, | |
"nodeType": "InlineAssembly", | |
"src": "3029:300:6" | |
}, | |
{ | |
"assignments": [ | |
752 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 752, | |
"mutability": "mutable", | |
"name": "twos", | |
"nameLocation": "3644:4:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 833, | |
"src": "3636:12:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 751, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "3636:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 760, | |
"initialValue": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 759, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 753, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 719, | |
"src": "3651:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "&", | |
"rightExpression": { | |
"components": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 757, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 755, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "UnaryOperation", | |
"operator": "~", | |
"prefix": true, | |
"src": "3666:12:6", | |
"subExpression": { | |
"id": 754, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 719, | |
"src": "3667:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 756, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "3681:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "3666:16:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 758, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "3665:18:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "3651:32:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "3636:47:6" | |
}, | |
{ | |
"AST": { | |
"nodeType": "YulBlock", | |
"src": "3706:362:6", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3771:37:6", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "denominator", | |
"nodeType": "YulIdentifier", | |
"src": "3790:11:6" | |
}, | |
{ | |
"name": "twos", | |
"nodeType": "YulIdentifier", | |
"src": "3803:4:6" | |
} | |
], | |
"functionName": { | |
"name": "div", | |
"nodeType": "YulIdentifier", | |
"src": "3786:3:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3786:22:6" | |
}, | |
"variableNames": [ | |
{ | |
"name": "denominator", | |
"nodeType": "YulIdentifier", | |
"src": "3771:11:6" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3875:25:6", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "prod0", | |
"nodeType": "YulIdentifier", | |
"src": "3888:5:6" | |
}, | |
{ | |
"name": "twos", | |
"nodeType": "YulIdentifier", | |
"src": "3895:4:6" | |
} | |
], | |
"functionName": { | |
"name": "div", | |
"nodeType": "YulIdentifier", | |
"src": "3884:3:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3884:16:6" | |
}, | |
"variableNames": [ | |
{ | |
"name": "prod0", | |
"nodeType": "YulIdentifier", | |
"src": "3875:5:6" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4015:39:6", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4035:1:6", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"name": "twos", | |
"nodeType": "YulIdentifier", | |
"src": "4038:4:6" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "4031:3:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4031:12:6" | |
}, | |
{ | |
"name": "twos", | |
"nodeType": "YulIdentifier", | |
"src": "4045:4:6" | |
} | |
], | |
"functionName": { | |
"name": "div", | |
"nodeType": "YulIdentifier", | |
"src": "4027:3:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4027:23:6" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4052:1:6", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4023:3:6" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4023:31:6" | |
}, | |
"variableNames": [ | |
{ | |
"name": "twos", | |
"nodeType": "YulIdentifier", | |
"src": "4015:4:6" | |
} | |
] | |
} | |
] | |
}, | |
"evmVersion": "london", | |
"externalReferences": [ | |
{ | |
"declaration": 719, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3771:11:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 719, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3790:11:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 725, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3875:5:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 725, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3888:5:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 752, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3803:4:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 752, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "3895:4:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 752, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "4015:4:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 752, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "4038:4:6", | |
"valueSize": 1 | |
}, | |
{ | |
"declaration": 752, | |
"isOffset": false, | |
"isSlot": false, | |
"src": "4045:4:6", | |
"valueSize": 1 | |
} | |
], | |
"id": 761, | |
"nodeType": "InlineAssembly", | |
"src": "3697:371:6" | |
}, | |
{ | |
"expression": { | |
"id": 766, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 762, | |
"name": "prod0", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 725, | |
"src": "4134:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "|=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 765, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 763, | |
"name": "prod1", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 728, | |
"src": "4143:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"id": 764, | |
"name": "twos", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 752, | |
"src": "4151:4:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4143:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4134:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 767, | |
"nodeType": "ExpressionStatement", | |
"src": "4134:21:6" | |
}, | |
{ | |
"assignments": [ | |
769 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 769, | |
"mutability": "mutable", | |
"name": "inverse", | |
"nameLocation": "4481:7:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 833, | |
"src": "4473:15:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 768, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "4473:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 776, | |
"initialValue": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 775, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"components": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 772, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "33", | |
"id": 770, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "4492:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_3_by_1", | |
"typeString": "int_const 3" | |
}, | |
"value": "3" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"id": 771, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 719, | |
"src": "4496:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4492:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 773, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "4491:17:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "^", | |
"rightExpression": { | |
"hexValue": "32", | |
"id": 774, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "4511:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"src": "4491:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "4473:39:6" | |
}, | |
{ | |
"expression": { | |
"id": 783, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 777, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "4729:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "*=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 782, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "32", | |
"id": 778, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "4740:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "-", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 781, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 779, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 719, | |
"src": "4744:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"id": 780, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "4758:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4744:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4740:25:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4729:36:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 784, | |
"nodeType": "ExpressionStatement", | |
"src": "4729:36:6" | |
}, | |
{ | |
"expression": { | |
"id": 791, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 785, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "4798:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "*=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 790, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "32", | |
"id": 786, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "4809:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "-", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 789, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 787, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 719, | |
"src": "4813:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"id": 788, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "4827:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4813:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4809:25:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4798:36:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 792, | |
"nodeType": "ExpressionStatement", | |
"src": "4798:36:6" | |
}, | |
{ | |
"expression": { | |
"id": 799, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 793, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "4868:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "*=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 798, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "32", | |
"id": 794, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "4879:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "-", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 797, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 795, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 719, | |
"src": "4883:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"id": 796, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "4897:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4883:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4879:25:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4868:36:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 800, | |
"nodeType": "ExpressionStatement", | |
"src": "4868:36:6" | |
}, | |
{ | |
"expression": { | |
"id": 807, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 801, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "4938:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "*=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 806, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "32", | |
"id": 802, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "4949:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "-", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 805, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 803, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 719, | |
"src": "4953:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"id": 804, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "4967:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4953:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4949:25:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "4938:36:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 808, | |
"nodeType": "ExpressionStatement", | |
"src": "4938:36:6" | |
}, | |
{ | |
"expression": { | |
"id": 815, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 809, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "5008:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "*=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 814, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "32", | |
"id": 810, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "5019:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "-", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 813, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 811, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 719, | |
"src": "5023:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"id": 812, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "5037:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "5023:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "5019:25:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "5008:36:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 816, | |
"nodeType": "ExpressionStatement", | |
"src": "5008:36:6" | |
}, | |
{ | |
"expression": { | |
"id": 823, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 817, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "5079:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "*=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 822, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "32", | |
"id": 818, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "5090:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "-", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 821, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 819, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 719, | |
"src": "5094:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"id": 820, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "5108:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "5094:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "5090:25:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "5079:36:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 824, | |
"nodeType": "ExpressionStatement", | |
"src": "5079:36:6" | |
}, | |
{ | |
"expression": { | |
"id": 829, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 825, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 722, | |
"src": "5549:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 828, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 826, | |
"name": "prod0", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 725, | |
"src": "5558:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"id": 827, | |
"name": "inverse", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 769, | |
"src": "5566:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "5558:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "5549:24:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 830, | |
"nodeType": "ExpressionStatement", | |
"src": "5549:24:6" | |
}, | |
{ | |
"expression": { | |
"id": 831, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 722, | |
"src": "5594:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 723, | |
"id": 832, | |
"nodeType": "Return", | |
"src": "5587:13:6" | |
} | |
] | |
} | |
] | |
}, | |
"documentation": { | |
"id": 713, | |
"nodeType": "StructuredDocumentation", | |
"src": "1357:305:6", | |
"text": " @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license." | |
}, | |
"id": 835, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "mulDiv", | |
"nameLocation": "1676:6:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 720, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 715, | |
"mutability": "mutable", | |
"name": "x", | |
"nameLocation": "1700:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 835, | |
"src": "1692:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 714, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "1692:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 717, | |
"mutability": "mutable", | |
"name": "y", | |
"nameLocation": "1719:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 835, | |
"src": "1711:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 716, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "1711:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 719, | |
"mutability": "mutable", | |
"name": "denominator", | |
"nameLocation": "1738:11:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 835, | |
"src": "1730:19:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 718, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "1730:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1682:73:6" | |
}, | |
"returnParameters": { | |
"id": 723, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 722, | |
"mutability": "mutable", | |
"name": "result", | |
"nameLocation": "1787:6:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 835, | |
"src": "1779:14:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 721, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "1779:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "1778:16:6" | |
}, | |
"scope": 1487, | |
"src": "1667:3950:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 878, | |
"nodeType": "Block", | |
"src": "5897:189:6", | |
"statements": [ | |
{ | |
"assignments": [ | |
851 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 851, | |
"mutability": "mutable", | |
"name": "result", | |
"nameLocation": "5915:6:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 878, | |
"src": "5907:14:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 850, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "5907:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 857, | |
"initialValue": { | |
"arguments": [ | |
{ | |
"id": 853, | |
"name": "x", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 838, | |
"src": "5931:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
{ | |
"id": 854, | |
"name": "y", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 840, | |
"src": "5934:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
{ | |
"id": 855, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 842, | |
"src": "5937:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 852, | |
"name": "mulDiv", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
835, | |
879 | |
], | |
"referencedDeclaration": 835, | |
"src": "5924:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 856, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "5924:25:6", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "5907:42:6" | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"id": 869, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
}, | |
"id": 861, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 858, | |
"name": "rounding", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 845, | |
"src": "5963:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"expression": { | |
"id": 859, | |
"name": "Rounding", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 628, | |
"src": "5975:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_enum$_Rounding_$628_$", | |
"typeString": "type(enum Math.Rounding)" | |
} | |
}, | |
"id": 860, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"memberLocation": "5984:2:6", | |
"memberName": "Up", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 626, | |
"src": "5975:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"src": "5963:23:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "&&", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 868, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"arguments": [ | |
{ | |
"id": 863, | |
"name": "x", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 838, | |
"src": "5997:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
{ | |
"id": 864, | |
"name": "y", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 840, | |
"src": "6000:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
{ | |
"id": 865, | |
"name": "denominator", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 842, | |
"src": "6003:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 862, | |
"name": "mulmod", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 4294967280, | |
"src": "5990:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256,uint256,uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 866, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "5990:25:6", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 867, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "6018:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "5990:29:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"src": "5963:56:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 875, | |
"nodeType": "IfStatement", | |
"src": "5959:98:6", | |
"trueBody": { | |
"id": 874, | |
"nodeType": "Block", | |
"src": "6021:36:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 872, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 870, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 851, | |
"src": "6035:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "31", | |
"id": 871, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "6045:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "6035:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 873, | |
"nodeType": "ExpressionStatement", | |
"src": "6035:11:6" | |
} | |
] | |
} | |
}, | |
{ | |
"expression": { | |
"id": 876, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 851, | |
"src": "6073:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 849, | |
"id": 877, | |
"nodeType": "Return", | |
"src": "6066:13:6" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 836, | |
"nodeType": "StructuredDocumentation", | |
"src": "5623:121:6", | |
"text": " @notice Calculates x * y / denominator with full precision, following the selected rounding direction." | |
}, | |
"id": 879, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "mulDiv", | |
"nameLocation": "5758:6:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 846, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 838, | |
"mutability": "mutable", | |
"name": "x", | |
"nameLocation": "5782:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 879, | |
"src": "5774:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 837, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "5774:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 840, | |
"mutability": "mutable", | |
"name": "y", | |
"nameLocation": "5801:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 879, | |
"src": "5793:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 839, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "5793:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 842, | |
"mutability": "mutable", | |
"name": "denominator", | |
"nameLocation": "5820:11:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 879, | |
"src": "5812:19:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 841, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "5812:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 845, | |
"mutability": "mutable", | |
"name": "rounding", | |
"nameLocation": "5850:8:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 879, | |
"src": "5841:17:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
}, | |
"typeName": { | |
"id": 844, | |
"nodeType": "UserDefinedTypeName", | |
"pathNode": { | |
"id": 843, | |
"name": "Rounding", | |
"nameLocations": [ | |
"5841:8:6" | |
], | |
"nodeType": "IdentifierPath", | |
"referencedDeclaration": 628, | |
"src": "5841:8:6" | |
}, | |
"referencedDeclaration": 628, | |
"src": "5841:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "5764:100:6" | |
}, | |
"returnParameters": { | |
"id": 849, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 848, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 879, | |
"src": "5888:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 847, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "5888:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "5887:9:6" | |
}, | |
"scope": 1487, | |
"src": "5749:337:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 990, | |
"nodeType": "Block", | |
"src": "6362:1585:6", | |
"statements": [ | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 889, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 887, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 882, | |
"src": "6376:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 888, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "6381:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "6376:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 893, | |
"nodeType": "IfStatement", | |
"src": "6372:45:6", | |
"trueBody": { | |
"id": 892, | |
"nodeType": "Block", | |
"src": "6384:33:6", | |
"statements": [ | |
{ | |
"expression": { | |
"hexValue": "30", | |
"id": 890, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "6405:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"functionReturnParameters": 886, | |
"id": 891, | |
"nodeType": "Return", | |
"src": "6398:8:6" | |
} | |
] | |
} | |
}, | |
{ | |
"assignments": [ | |
895 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 895, | |
"mutability": "mutable", | |
"name": "result", | |
"nameLocation": "7104:6:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 990, | |
"src": "7096:14:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 894, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "7096:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 904, | |
"initialValue": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 903, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "31", | |
"id": 896, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "7113:1:6", | |
"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": 901, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"arguments": [ | |
{ | |
"id": 898, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 882, | |
"src": "7124:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 897, | |
"name": "log2", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
1159, | |
1195 | |
], | |
"referencedDeclaration": 1159, | |
"src": "7119:4:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 899, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "7119:7:6", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 900, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "7130:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "7119:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 902, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "7118:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7113:19:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "7096:36:6" | |
}, | |
{ | |
"id": 989, | |
"nodeType": "UncheckedBlock", | |
"src": "7533:408:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 914, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 905, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7557:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 913, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"components": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 910, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 906, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7567:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 909, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 907, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 882, | |
"src": "7576:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "/", | |
"rightExpression": { | |
"id": 908, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7580:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7576:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7567:19:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 911, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "7566:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 912, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "7591:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "7566:26:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7557:35:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 915, | |
"nodeType": "ExpressionStatement", | |
"src": "7557:35:6" | |
}, | |
{ | |
"expression": { | |
"id": 925, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 916, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7606:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 924, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"components": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 921, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 917, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7616:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 920, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 918, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 882, | |
"src": "7625:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "/", | |
"rightExpression": { | |
"id": 919, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7629:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7625:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7616:19:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 922, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "7615:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 923, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "7640:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "7615:26:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7606:35:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 926, | |
"nodeType": "ExpressionStatement", | |
"src": "7606:35:6" | |
}, | |
{ | |
"expression": { | |
"id": 936, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 927, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7655:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 935, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"components": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 932, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 928, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7665:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 931, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 929, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 882, | |
"src": "7674:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "/", | |
"rightExpression": { | |
"id": 930, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7678:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7674:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7665:19:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 933, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "7664:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 934, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "7689:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "7664:26:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7655:35:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 937, | |
"nodeType": "ExpressionStatement", | |
"src": "7655:35:6" | |
}, | |
{ | |
"expression": { | |
"id": 947, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 938, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7704:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 946, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"components": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 943, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 939, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7714:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 942, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 940, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 882, | |
"src": "7723:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "/", | |
"rightExpression": { | |
"id": 941, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7727:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7723:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7714:19:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 944, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "7713:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 945, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "7738:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "7713:26:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7704:35:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 948, | |
"nodeType": "ExpressionStatement", | |
"src": "7704:35:6" | |
}, | |
{ | |
"expression": { | |
"id": 958, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 949, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7753:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 957, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"components": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 954, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 950, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7763:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 953, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 951, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 882, | |
"src": "7772:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "/", | |
"rightExpression": { | |
"id": 952, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7776:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7772:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7763:19:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 955, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "7762:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 956, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "7787:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "7762:26:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7753:35:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 959, | |
"nodeType": "ExpressionStatement", | |
"src": "7753:35:6" | |
}, | |
{ | |
"expression": { | |
"id": 969, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 960, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7802:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 968, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"components": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 965, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 961, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7812:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 964, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 962, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 882, | |
"src": "7821:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "/", | |
"rightExpression": { | |
"id": 963, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7825:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7821:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7812:19:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 966, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "7811:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 967, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "7836:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "7811:26:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7802:35:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 970, | |
"nodeType": "ExpressionStatement", | |
"src": "7802:35:6" | |
}, | |
{ | |
"expression": { | |
"id": 980, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 971, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7851:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 979, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"components": [ | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 976, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 972, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7861:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 975, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 973, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 882, | |
"src": "7870:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "/", | |
"rightExpression": { | |
"id": 974, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7874:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7870:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7861:19:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 977, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "7860:21:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 978, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "7885:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "7860:26:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7851:35:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 981, | |
"nodeType": "ExpressionStatement", | |
"src": "7851:35:6" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"id": 983, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7911:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
{ | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 986, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 984, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 882, | |
"src": "7919:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "/", | |
"rightExpression": { | |
"id": 985, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 895, | |
"src": "7923:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "7919:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 982, | |
"name": "min", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 664, | |
"src": "7907:3:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256,uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 987, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "7907:23:6", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 886, | |
"id": 988, | |
"nodeType": "Return", | |
"src": "7900:30:6" | |
} | |
] | |
} | |
] | |
}, | |
"documentation": { | |
"id": 880, | |
"nodeType": "StructuredDocumentation", | |
"src": "6092:208:6", | |
"text": " @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)." | |
}, | |
"id": 991, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "sqrt", | |
"nameLocation": "6314:4:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 883, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 882, | |
"mutability": "mutable", | |
"name": "a", | |
"nameLocation": "6327:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 991, | |
"src": "6319:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 881, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "6319:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "6318:11:6" | |
}, | |
"returnParameters": { | |
"id": 886, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 885, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 991, | |
"src": "6353:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 884, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "6353:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "6352:9:6" | |
}, | |
"scope": 1487, | |
"src": "6305:1642:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 1026, | |
"nodeType": "Block", | |
"src": "8123:161:6", | |
"statements": [ | |
{ | |
"id": 1025, | |
"nodeType": "UncheckedBlock", | |
"src": "8133:145:6", | |
"statements": [ | |
{ | |
"assignments": [ | |
1003 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 1003, | |
"mutability": "mutable", | |
"name": "result", | |
"nameLocation": "8165:6:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1025, | |
"src": "8157:14:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1002, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "8157:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 1007, | |
"initialValue": { | |
"arguments": [ | |
{ | |
"id": 1005, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 994, | |
"src": "8179:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 1004, | |
"name": "sqrt", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
991, | |
1027 | |
], | |
"referencedDeclaration": 991, | |
"src": "8174:4:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 1006, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "8174:7:6", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "8157:24:6" | |
}, | |
{ | |
"expression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1023, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1008, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1003, | |
"src": "8202:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"components": [ | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"id": 1018, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
}, | |
"id": 1012, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1009, | |
"name": "rounding", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 997, | |
"src": "8212:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"expression": { | |
"id": 1010, | |
"name": "Rounding", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 628, | |
"src": "8224:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_enum$_Rounding_$628_$", | |
"typeString": "type(enum Math.Rounding)" | |
} | |
}, | |
"id": 1011, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"memberLocation": "8233:2:6", | |
"memberName": "Up", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 626, | |
"src": "8224:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"src": "8212:23:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "&&", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1017, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1015, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1013, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1003, | |
"src": "8239:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"id": 1014, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1003, | |
"src": "8248:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "8239:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<", | |
"rightExpression": { | |
"id": 1016, | |
"name": "a", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 994, | |
"src": "8257:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "8239:19:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"src": "8212:46:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseExpression": { | |
"hexValue": "30", | |
"id": 1020, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8265:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"id": 1021, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "Conditional", | |
"src": "8212:54:6", | |
"trueExpression": { | |
"hexValue": "31", | |
"id": 1019, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8261:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
} | |
} | |
], | |
"id": 1022, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "8211:56:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
} | |
}, | |
"src": "8202:65:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 1001, | |
"id": 1024, | |
"nodeType": "Return", | |
"src": "8195:72:6" | |
} | |
] | |
} | |
] | |
}, | |
"documentation": { | |
"id": 992, | |
"nodeType": "StructuredDocumentation", | |
"src": "7953:89:6", | |
"text": " @notice Calculates sqrt(a), following the selected rounding direction." | |
}, | |
"id": 1027, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "sqrt", | |
"nameLocation": "8056:4:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 998, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 994, | |
"mutability": "mutable", | |
"name": "a", | |
"nameLocation": "8069:1:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1027, | |
"src": "8061:9:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 993, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "8061:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 997, | |
"mutability": "mutable", | |
"name": "rounding", | |
"nameLocation": "8081:8:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1027, | |
"src": "8072:17:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
}, | |
"typeName": { | |
"id": 996, | |
"nodeType": "UserDefinedTypeName", | |
"pathNode": { | |
"id": 995, | |
"name": "Rounding", | |
"nameLocations": [ | |
"8072:8:6" | |
], | |
"nodeType": "IdentifierPath", | |
"referencedDeclaration": 628, | |
"src": "8072:8:6" | |
}, | |
"referencedDeclaration": 628, | |
"src": "8072:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "8060:30:6" | |
}, | |
"returnParameters": { | |
"id": 1001, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1000, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 1027, | |
"src": "8114:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 999, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "8114:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "8113:9:6" | |
}, | |
"scope": 1487, | |
"src": "8047:237:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 1158, | |
"nodeType": "Block", | |
"src": "8469:922:6", | |
"statements": [ | |
{ | |
"assignments": [ | |
1036 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 1036, | |
"mutability": "mutable", | |
"name": "result", | |
"nameLocation": "8487:6:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1158, | |
"src": "8479:14:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1035, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "8479:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 1038, | |
"initialValue": { | |
"hexValue": "30", | |
"id": 1037, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8496:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "8479:18:6" | |
}, | |
{ | |
"id": 1155, | |
"nodeType": "UncheckedBlock", | |
"src": "8507:855:6", | |
"statements": [ | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1043, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1041, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1039, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "8535:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "313238", | |
"id": 1040, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8544:3:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_128_by_1", | |
"typeString": "int_const 128" | |
}, | |
"value": "128" | |
}, | |
"src": "8535:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1042, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8550:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "8535:16:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1053, | |
"nodeType": "IfStatement", | |
"src": "8531:99:6", | |
"trueBody": { | |
"id": 1052, | |
"nodeType": "Block", | |
"src": "8553:77:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1046, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1044, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "8571:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": ">>=", | |
"rightHandSide": { | |
"hexValue": "313238", | |
"id": 1045, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8581:3:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_128_by_1", | |
"typeString": "int_const 128" | |
}, | |
"value": "128" | |
}, | |
"src": "8571:13:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1047, | |
"nodeType": "ExpressionStatement", | |
"src": "8571:13:6" | |
}, | |
{ | |
"expression": { | |
"id": 1050, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1048, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1036, | |
"src": "8602:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "313238", | |
"id": 1049, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8612:3:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_128_by_1", | |
"typeString": "int_const 128" | |
}, | |
"value": "128" | |
}, | |
"src": "8602:13:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1051, | |
"nodeType": "ExpressionStatement", | |
"src": "8602:13:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1058, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1056, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1054, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "8647:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "3634", | |
"id": 1055, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8656:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_64_by_1", | |
"typeString": "int_const 64" | |
}, | |
"value": "64" | |
}, | |
"src": "8647:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1057, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8661:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "8647:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1068, | |
"nodeType": "IfStatement", | |
"src": "8643:96:6", | |
"trueBody": { | |
"id": 1067, | |
"nodeType": "Block", | |
"src": "8664:75:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1061, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1059, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "8682:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": ">>=", | |
"rightHandSide": { | |
"hexValue": "3634", | |
"id": 1060, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8692:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_64_by_1", | |
"typeString": "int_const 64" | |
}, | |
"value": "64" | |
}, | |
"src": "8682:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1062, | |
"nodeType": "ExpressionStatement", | |
"src": "8682:12:6" | |
}, | |
{ | |
"expression": { | |
"id": 1065, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1063, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1036, | |
"src": "8712:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "3634", | |
"id": 1064, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8722:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_64_by_1", | |
"typeString": "int_const 64" | |
}, | |
"value": "64" | |
}, | |
"src": "8712:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1066, | |
"nodeType": "ExpressionStatement", | |
"src": "8712:12:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1073, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1071, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1069, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "8756:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "3332", | |
"id": 1070, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8765:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_32_by_1", | |
"typeString": "int_const 32" | |
}, | |
"value": "32" | |
}, | |
"src": "8756:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1072, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8770:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "8756:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1083, | |
"nodeType": "IfStatement", | |
"src": "8752:96:6", | |
"trueBody": { | |
"id": 1082, | |
"nodeType": "Block", | |
"src": "8773:75:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1076, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1074, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "8791:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": ">>=", | |
"rightHandSide": { | |
"hexValue": "3332", | |
"id": 1075, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8801:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_32_by_1", | |
"typeString": "int_const 32" | |
}, | |
"value": "32" | |
}, | |
"src": "8791:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1077, | |
"nodeType": "ExpressionStatement", | |
"src": "8791:12:6" | |
}, | |
{ | |
"expression": { | |
"id": 1080, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1078, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1036, | |
"src": "8821:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "3332", | |
"id": 1079, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8831:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_32_by_1", | |
"typeString": "int_const 32" | |
}, | |
"value": "32" | |
}, | |
"src": "8821:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1081, | |
"nodeType": "ExpressionStatement", | |
"src": "8821:12:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1088, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1086, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1084, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "8865:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "3136", | |
"id": 1085, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8874:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_16_by_1", | |
"typeString": "int_const 16" | |
}, | |
"value": "16" | |
}, | |
"src": "8865:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1087, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8879:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "8865:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1098, | |
"nodeType": "IfStatement", | |
"src": "8861:96:6", | |
"trueBody": { | |
"id": 1097, | |
"nodeType": "Block", | |
"src": "8882:75:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1091, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1089, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "8900:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": ">>=", | |
"rightHandSide": { | |
"hexValue": "3136", | |
"id": 1090, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8910:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_16_by_1", | |
"typeString": "int_const 16" | |
}, | |
"value": "16" | |
}, | |
"src": "8900:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1092, | |
"nodeType": "ExpressionStatement", | |
"src": "8900:12:6" | |
}, | |
{ | |
"expression": { | |
"id": 1095, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1093, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1036, | |
"src": "8930:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "3136", | |
"id": 1094, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8940:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_16_by_1", | |
"typeString": "int_const 16" | |
}, | |
"value": "16" | |
}, | |
"src": "8930:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1096, | |
"nodeType": "ExpressionStatement", | |
"src": "8930:12:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1103, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1101, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1099, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "8974:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "38", | |
"id": 1100, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8983:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_8_by_1", | |
"typeString": "int_const 8" | |
}, | |
"value": "8" | |
}, | |
"src": "8974:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1102, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "8987:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "8974:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1113, | |
"nodeType": "IfStatement", | |
"src": "8970:93:6", | |
"trueBody": { | |
"id": 1112, | |
"nodeType": "Block", | |
"src": "8990:73:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1106, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1104, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "9008:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": ">>=", | |
"rightHandSide": { | |
"hexValue": "38", | |
"id": 1105, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9018:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_8_by_1", | |
"typeString": "int_const 8" | |
}, | |
"value": "8" | |
}, | |
"src": "9008:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1107, | |
"nodeType": "ExpressionStatement", | |
"src": "9008:11:6" | |
}, | |
{ | |
"expression": { | |
"id": 1110, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1108, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1036, | |
"src": "9037:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "38", | |
"id": 1109, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9047:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_8_by_1", | |
"typeString": "int_const 8" | |
}, | |
"value": "8" | |
}, | |
"src": "9037:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1111, | |
"nodeType": "ExpressionStatement", | |
"src": "9037:11:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1118, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1116, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1114, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "9080:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "34", | |
"id": 1115, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9089:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_4_by_1", | |
"typeString": "int_const 4" | |
}, | |
"value": "4" | |
}, | |
"src": "9080:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1117, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9093:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "9080:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1128, | |
"nodeType": "IfStatement", | |
"src": "9076:93:6", | |
"trueBody": { | |
"id": 1127, | |
"nodeType": "Block", | |
"src": "9096:73:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1121, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1119, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "9114:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": ">>=", | |
"rightHandSide": { | |
"hexValue": "34", | |
"id": 1120, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9124:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_4_by_1", | |
"typeString": "int_const 4" | |
}, | |
"value": "4" | |
}, | |
"src": "9114:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1122, | |
"nodeType": "ExpressionStatement", | |
"src": "9114:11:6" | |
}, | |
{ | |
"expression": { | |
"id": 1125, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1123, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1036, | |
"src": "9143:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "34", | |
"id": 1124, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9153:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_4_by_1", | |
"typeString": "int_const 4" | |
}, | |
"value": "4" | |
}, | |
"src": "9143:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1126, | |
"nodeType": "ExpressionStatement", | |
"src": "9143:11:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1133, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1131, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1129, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "9186:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "32", | |
"id": 1130, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9195:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"src": "9186:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1132, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9199:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "9186:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1143, | |
"nodeType": "IfStatement", | |
"src": "9182:93:6", | |
"trueBody": { | |
"id": 1142, | |
"nodeType": "Block", | |
"src": "9202:73:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1136, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1134, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "9220:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": ">>=", | |
"rightHandSide": { | |
"hexValue": "32", | |
"id": 1135, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9230:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"src": "9220:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1137, | |
"nodeType": "ExpressionStatement", | |
"src": "9220:11:6" | |
}, | |
{ | |
"expression": { | |
"id": 1140, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1138, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1036, | |
"src": "9249:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "32", | |
"id": 1139, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9259:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"src": "9249:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1141, | |
"nodeType": "ExpressionStatement", | |
"src": "9249:11:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1148, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1146, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1144, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1030, | |
"src": "9292:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 1145, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9301:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "9292:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1147, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9305:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "9292:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1154, | |
"nodeType": "IfStatement", | |
"src": "9288:64:6", | |
"trueBody": { | |
"id": 1153, | |
"nodeType": "Block", | |
"src": "9308:44:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1151, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1149, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1036, | |
"src": "9326:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "31", | |
"id": 1150, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9336:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "9326:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1152, | |
"nodeType": "ExpressionStatement", | |
"src": "9326:11:6" | |
} | |
] | |
} | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"id": 1156, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1036, | |
"src": "9378:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 1034, | |
"id": 1157, | |
"nodeType": "Return", | |
"src": "9371:13:6" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 1028, | |
"nodeType": "StructuredDocumentation", | |
"src": "8290:113:6", | |
"text": " @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0." | |
}, | |
"id": 1159, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "log2", | |
"nameLocation": "8417:4:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 1031, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1030, | |
"mutability": "mutable", | |
"name": "value", | |
"nameLocation": "8430:5:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1159, | |
"src": "8422:13:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1029, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "8422:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "8421:15:6" | |
}, | |
"returnParameters": { | |
"id": 1034, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1033, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 1159, | |
"src": "8460:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1032, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "8460:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "8459:9:6" | |
}, | |
"scope": 1487, | |
"src": "8408:983:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 1194, | |
"nodeType": "Block", | |
"src": "9624:165:6", | |
"statements": [ | |
{ | |
"id": 1193, | |
"nodeType": "UncheckedBlock", | |
"src": "9634:149:6", | |
"statements": [ | |
{ | |
"assignments": [ | |
1171 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 1171, | |
"mutability": "mutable", | |
"name": "result", | |
"nameLocation": "9666:6:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1193, | |
"src": "9658:14:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1170, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "9658:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 1175, | |
"initialValue": { | |
"arguments": [ | |
{ | |
"id": 1173, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1162, | |
"src": "9680:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 1172, | |
"name": "log2", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
1159, | |
1195 | |
], | |
"referencedDeclaration": 1159, | |
"src": "9675:4:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 1174, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "9675:11:6", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "9658:28:6" | |
}, | |
{ | |
"expression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1191, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1176, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1171, | |
"src": "9707:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"components": [ | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"id": 1186, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
}, | |
"id": 1180, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1177, | |
"name": "rounding", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1165, | |
"src": "9717:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"expression": { | |
"id": 1178, | |
"name": "Rounding", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 628, | |
"src": "9729:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_enum$_Rounding_$628_$", | |
"typeString": "type(enum Math.Rounding)" | |
} | |
}, | |
"id": 1179, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"memberLocation": "9738:2:6", | |
"memberName": "Up", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 626, | |
"src": "9729:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"src": "9717:23:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "&&", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1185, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1183, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "31", | |
"id": 1181, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9744:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<<", | |
"rightExpression": { | |
"id": 1182, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1171, | |
"src": "9749:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "9744:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<", | |
"rightExpression": { | |
"id": 1184, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1162, | |
"src": "9758:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "9744:19:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"src": "9717:46:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseExpression": { | |
"hexValue": "30", | |
"id": 1188, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9770:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"id": 1189, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "Conditional", | |
"src": "9717:54:6", | |
"trueExpression": { | |
"hexValue": "31", | |
"id": 1187, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "9766:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
} | |
} | |
], | |
"id": 1190, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "9716:56:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
} | |
}, | |
"src": "9707:65:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 1169, | |
"id": 1192, | |
"nodeType": "Return", | |
"src": "9700:72:6" | |
} | |
] | |
} | |
] | |
}, | |
"documentation": { | |
"id": 1160, | |
"nodeType": "StructuredDocumentation", | |
"src": "9397:142:6", | |
"text": " @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0." | |
}, | |
"id": 1195, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "log2", | |
"nameLocation": "9553:4:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 1166, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1162, | |
"mutability": "mutable", | |
"name": "value", | |
"nameLocation": "9566:5:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1195, | |
"src": "9558:13:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1161, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "9558:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 1165, | |
"mutability": "mutable", | |
"name": "rounding", | |
"nameLocation": "9582:8:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1195, | |
"src": "9573:17:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
}, | |
"typeName": { | |
"id": 1164, | |
"nodeType": "UserDefinedTypeName", | |
"pathNode": { | |
"id": 1163, | |
"name": "Rounding", | |
"nameLocations": [ | |
"9573:8:6" | |
], | |
"nodeType": "IdentifierPath", | |
"referencedDeclaration": 628, | |
"src": "9573:8:6" | |
}, | |
"referencedDeclaration": 628, | |
"src": "9573:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "9557:34:6" | |
}, | |
"returnParameters": { | |
"id": 1169, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1168, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 1195, | |
"src": "9615:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1167, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "9615:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "9614:9:6" | |
}, | |
"scope": 1487, | |
"src": "9544:245:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 1323, | |
"nodeType": "Block", | |
"src": "9976:828:6", | |
"statements": [ | |
{ | |
"assignments": [ | |
1204 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 1204, | |
"mutability": "mutable", | |
"name": "result", | |
"nameLocation": "9994:6:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1323, | |
"src": "9986:14:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1203, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "9986:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 1206, | |
"initialValue": { | |
"hexValue": "30", | |
"id": 1205, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10003:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "9986:18:6" | |
}, | |
{ | |
"id": 1320, | |
"nodeType": "UncheckedBlock", | |
"src": "10014:761:6", | |
"statements": [ | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1211, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1207, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10042:5:6", | |
"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": 1210, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1208, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10051:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "3634", | |
"id": 1209, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10055:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_64_by_1", | |
"typeString": "int_const 64" | |
}, | |
"value": "64" | |
}, | |
"src": "10051:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", | |
"typeString": "int_const 1000...(57 digits omitted)...0000" | |
} | |
}, | |
"src": "10042:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1223, | |
"nodeType": "IfStatement", | |
"src": "10038:99:6", | |
"trueBody": { | |
"id": 1222, | |
"nodeType": "Block", | |
"src": "10059:78:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1216, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1212, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10077:5:6", | |
"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": 1215, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1213, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10086:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "3634", | |
"id": 1214, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10090:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_64_by_1", | |
"typeString": "int_const 64" | |
}, | |
"value": "64" | |
}, | |
"src": "10086:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", | |
"typeString": "int_const 1000...(57 digits omitted)...0000" | |
} | |
}, | |
"src": "10077:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1217, | |
"nodeType": "ExpressionStatement", | |
"src": "10077:15:6" | |
}, | |
{ | |
"expression": { | |
"id": 1220, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1218, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1204, | |
"src": "10110:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "3634", | |
"id": 1219, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10120:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_64_by_1", | |
"typeString": "int_const 64" | |
}, | |
"value": "64" | |
}, | |
"src": "10110:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1221, | |
"nodeType": "ExpressionStatement", | |
"src": "10110:12:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1228, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1224, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10154:5:6", | |
"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": 1227, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1225, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10163:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "3332", | |
"id": 1226, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10167:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_32_by_1", | |
"typeString": "int_const 32" | |
}, | |
"value": "32" | |
}, | |
"src": "10163:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", | |
"typeString": "int_const 1000...(25 digits omitted)...0000" | |
} | |
}, | |
"src": "10154:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1240, | |
"nodeType": "IfStatement", | |
"src": "10150:99:6", | |
"trueBody": { | |
"id": 1239, | |
"nodeType": "Block", | |
"src": "10171:78:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1233, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1229, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10189:5:6", | |
"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": 1232, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1230, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10198:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "3332", | |
"id": 1231, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10202:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_32_by_1", | |
"typeString": "int_const 32" | |
}, | |
"value": "32" | |
}, | |
"src": "10198:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", | |
"typeString": "int_const 1000...(25 digits omitted)...0000" | |
} | |
}, | |
"src": "10189:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1234, | |
"nodeType": "ExpressionStatement", | |
"src": "10189:15:6" | |
}, | |
{ | |
"expression": { | |
"id": 1237, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1235, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1204, | |
"src": "10222:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "3332", | |
"id": 1236, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10232:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_32_by_1", | |
"typeString": "int_const 32" | |
}, | |
"value": "32" | |
}, | |
"src": "10222:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1238, | |
"nodeType": "ExpressionStatement", | |
"src": "10222:12:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1245, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1241, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10266:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">=", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_rational_10000000000000000_by_1", | |
"typeString": "int_const 10000000000000000" | |
}, | |
"id": 1244, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1242, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10275:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "3136", | |
"id": 1243, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10279:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_16_by_1", | |
"typeString": "int_const 16" | |
}, | |
"value": "16" | |
}, | |
"src": "10275:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10000000000000000_by_1", | |
"typeString": "int_const 10000000000000000" | |
} | |
}, | |
"src": "10266:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1257, | |
"nodeType": "IfStatement", | |
"src": "10262:99:6", | |
"trueBody": { | |
"id": 1256, | |
"nodeType": "Block", | |
"src": "10283:78:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1250, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1246, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10301:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "/=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_rational_10000000000000000_by_1", | |
"typeString": "int_const 10000000000000000" | |
}, | |
"id": 1249, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1247, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10310:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "3136", | |
"id": 1248, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10314:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_16_by_1", | |
"typeString": "int_const 16" | |
}, | |
"value": "16" | |
}, | |
"src": "10310:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10000000000000000_by_1", | |
"typeString": "int_const 10000000000000000" | |
} | |
}, | |
"src": "10301:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1251, | |
"nodeType": "ExpressionStatement", | |
"src": "10301:15:6" | |
}, | |
{ | |
"expression": { | |
"id": 1254, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1252, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1204, | |
"src": "10334:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "3136", | |
"id": 1253, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10344:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_16_by_1", | |
"typeString": "int_const 16" | |
}, | |
"value": "16" | |
}, | |
"src": "10334:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1255, | |
"nodeType": "ExpressionStatement", | |
"src": "10334:12:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1262, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1258, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10378:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">=", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_rational_100000000_by_1", | |
"typeString": "int_const 100000000" | |
}, | |
"id": 1261, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1259, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10387:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "38", | |
"id": 1260, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10391:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_8_by_1", | |
"typeString": "int_const 8" | |
}, | |
"value": "8" | |
}, | |
"src": "10387:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_100000000_by_1", | |
"typeString": "int_const 100000000" | |
} | |
}, | |
"src": "10378:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1274, | |
"nodeType": "IfStatement", | |
"src": "10374:96:6", | |
"trueBody": { | |
"id": 1273, | |
"nodeType": "Block", | |
"src": "10394:76:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1267, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1263, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10412:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "/=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_rational_100000000_by_1", | |
"typeString": "int_const 100000000" | |
}, | |
"id": 1266, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1264, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10421:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "38", | |
"id": 1265, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10425:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_8_by_1", | |
"typeString": "int_const 8" | |
}, | |
"value": "8" | |
}, | |
"src": "10421:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_100000000_by_1", | |
"typeString": "int_const 100000000" | |
} | |
}, | |
"src": "10412:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1268, | |
"nodeType": "ExpressionStatement", | |
"src": "10412:14:6" | |
}, | |
{ | |
"expression": { | |
"id": 1271, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1269, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1204, | |
"src": "10444:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "38", | |
"id": 1270, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10454:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_8_by_1", | |
"typeString": "int_const 8" | |
}, | |
"value": "8" | |
}, | |
"src": "10444:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1272, | |
"nodeType": "ExpressionStatement", | |
"src": "10444:11:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1279, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1275, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10487:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">=", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_rational_10000_by_1", | |
"typeString": "int_const 10000" | |
}, | |
"id": 1278, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1276, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10496:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "34", | |
"id": 1277, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10500:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_4_by_1", | |
"typeString": "int_const 4" | |
}, | |
"value": "4" | |
}, | |
"src": "10496:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10000_by_1", | |
"typeString": "int_const 10000" | |
} | |
}, | |
"src": "10487:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1291, | |
"nodeType": "IfStatement", | |
"src": "10483:96:6", | |
"trueBody": { | |
"id": 1290, | |
"nodeType": "Block", | |
"src": "10503:76:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1284, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1280, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10521:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "/=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_rational_10000_by_1", | |
"typeString": "int_const 10000" | |
}, | |
"id": 1283, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1281, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10530:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "34", | |
"id": 1282, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10534:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_4_by_1", | |
"typeString": "int_const 4" | |
}, | |
"value": "4" | |
}, | |
"src": "10530:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10000_by_1", | |
"typeString": "int_const 10000" | |
} | |
}, | |
"src": "10521:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1285, | |
"nodeType": "ExpressionStatement", | |
"src": "10521:14:6" | |
}, | |
{ | |
"expression": { | |
"id": 1288, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1286, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1204, | |
"src": "10553:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "34", | |
"id": 1287, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10563:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_4_by_1", | |
"typeString": "int_const 4" | |
}, | |
"value": "4" | |
}, | |
"src": "10553:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1289, | |
"nodeType": "ExpressionStatement", | |
"src": "10553:11:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1296, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1292, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10596:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">=", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_rational_100_by_1", | |
"typeString": "int_const 100" | |
}, | |
"id": 1295, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1293, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10605:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "32", | |
"id": 1294, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10609:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"src": "10605:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_100_by_1", | |
"typeString": "int_const 100" | |
} | |
}, | |
"src": "10596:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1308, | |
"nodeType": "IfStatement", | |
"src": "10592:96:6", | |
"trueBody": { | |
"id": 1307, | |
"nodeType": "Block", | |
"src": "10612:76:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1301, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1297, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10630:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "/=", | |
"rightHandSide": { | |
"commonType": { | |
"typeIdentifier": "t_rational_100_by_1", | |
"typeString": "int_const 100" | |
}, | |
"id": 1300, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1298, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10639:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "32", | |
"id": 1299, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10643:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"src": "10639:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_100_by_1", | |
"typeString": "int_const 100" | |
} | |
}, | |
"src": "10630:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1302, | |
"nodeType": "ExpressionStatement", | |
"src": "10630:14:6" | |
}, | |
{ | |
"expression": { | |
"id": 1305, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1303, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1204, | |
"src": "10662:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "32", | |
"id": 1304, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10672:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"src": "10662:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1306, | |
"nodeType": "ExpressionStatement", | |
"src": "10662:11:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1313, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1309, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1198, | |
"src": "10705:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">=", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"id": 1312, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1310, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10714:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"hexValue": "31", | |
"id": 1311, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10718:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "10714:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
} | |
}, | |
"src": "10705:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1319, | |
"nodeType": "IfStatement", | |
"src": "10701:64:6", | |
"trueBody": { | |
"id": 1318, | |
"nodeType": "Block", | |
"src": "10721:44:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1316, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1314, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1204, | |
"src": "10739:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "31", | |
"id": 1315, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "10749:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "10739:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1317, | |
"nodeType": "ExpressionStatement", | |
"src": "10739:11:6" | |
} | |
] | |
} | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"id": 1321, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1204, | |
"src": "10791:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 1202, | |
"id": 1322, | |
"nodeType": "Return", | |
"src": "10784:13:6" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 1196, | |
"nodeType": "StructuredDocumentation", | |
"src": "9795:114:6", | |
"text": " @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0." | |
}, | |
"id": 1324, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "log10", | |
"nameLocation": "9923:5:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 1199, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1198, | |
"mutability": "mutable", | |
"name": "value", | |
"nameLocation": "9937:5:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1324, | |
"src": "9929:13:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1197, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "9929:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "9928:15:6" | |
}, | |
"returnParameters": { | |
"id": 1202, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1201, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 1324, | |
"src": "9967:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1200, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "9967:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "9966:9:6" | |
}, | |
"scope": 1487, | |
"src": "9914:890:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 1359, | |
"nodeType": "Block", | |
"src": "11039:165:6", | |
"statements": [ | |
{ | |
"id": 1358, | |
"nodeType": "UncheckedBlock", | |
"src": "11049:149:6", | |
"statements": [ | |
{ | |
"assignments": [ | |
1336 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 1336, | |
"mutability": "mutable", | |
"name": "result", | |
"nameLocation": "11081:6:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1358, | |
"src": "11073:14:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1335, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "11073:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 1340, | |
"initialValue": { | |
"arguments": [ | |
{ | |
"id": 1338, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1327, | |
"src": "11096:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 1337, | |
"name": "log10", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
1324, | |
1360 | |
], | |
"referencedDeclaration": 1324, | |
"src": "11090:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 1339, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "11090:12:6", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "11073:29:6" | |
}, | |
{ | |
"expression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1356, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1341, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1336, | |
"src": "11123:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"components": [ | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"id": 1351, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
}, | |
"id": 1345, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1342, | |
"name": "rounding", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1330, | |
"src": "11133:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"expression": { | |
"id": 1343, | |
"name": "Rounding", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 628, | |
"src": "11145:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_enum$_Rounding_$628_$", | |
"typeString": "type(enum Math.Rounding)" | |
} | |
}, | |
"id": 1344, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"memberLocation": "11154:2:6", | |
"memberName": "Up", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 626, | |
"src": "11145:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"src": "11133:23:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "&&", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1350, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1348, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "3130", | |
"id": 1346, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11160:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10_by_1", | |
"typeString": "int_const 10" | |
}, | |
"value": "10" | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "**", | |
"rightExpression": { | |
"id": 1347, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1336, | |
"src": "11164:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "11160:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<", | |
"rightExpression": { | |
"id": 1349, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1327, | |
"src": "11173:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "11160:18:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"src": "11133:45:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseExpression": { | |
"hexValue": "30", | |
"id": 1353, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11185:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"id": 1354, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "Conditional", | |
"src": "11133:53:6", | |
"trueExpression": { | |
"hexValue": "31", | |
"id": 1352, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11181:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
} | |
} | |
], | |
"id": 1355, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "11132:55:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
} | |
}, | |
"src": "11123:64:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 1334, | |
"id": 1357, | |
"nodeType": "Return", | |
"src": "11116:71:6" | |
} | |
] | |
} | |
] | |
}, | |
"documentation": { | |
"id": 1325, | |
"nodeType": "StructuredDocumentation", | |
"src": "10810:143:6", | |
"text": " @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0." | |
}, | |
"id": 1360, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "log10", | |
"nameLocation": "10967:5:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 1331, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1327, | |
"mutability": "mutable", | |
"name": "value", | |
"nameLocation": "10981:5:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1360, | |
"src": "10973:13:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1326, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "10973:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 1330, | |
"mutability": "mutable", | |
"name": "rounding", | |
"nameLocation": "10997:8:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1360, | |
"src": "10988:17:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
}, | |
"typeName": { | |
"id": 1329, | |
"nodeType": "UserDefinedTypeName", | |
"pathNode": { | |
"id": 1328, | |
"name": "Rounding", | |
"nameLocations": [ | |
"10988:8:6" | |
], | |
"nodeType": "IdentifierPath", | |
"referencedDeclaration": 628, | |
"src": "10988:8:6" | |
}, | |
"referencedDeclaration": 628, | |
"src": "10988:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "10972:34:6" | |
}, | |
"returnParameters": { | |
"id": 1334, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1333, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 1360, | |
"src": "11030:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1332, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "11030:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "11029:9:6" | |
}, | |
"scope": 1487, | |
"src": "10958:246:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 1446, | |
"nodeType": "Block", | |
"src": "11518:600:6", | |
"statements": [ | |
{ | |
"assignments": [ | |
1369 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 1369, | |
"mutability": "mutable", | |
"name": "result", | |
"nameLocation": "11536:6:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1446, | |
"src": "11528:14:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1368, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "11528:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 1371, | |
"initialValue": { | |
"hexValue": "30", | |
"id": 1370, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11545:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "11528:18:6" | |
}, | |
{ | |
"id": 1443, | |
"nodeType": "UncheckedBlock", | |
"src": "11556:533:6", | |
"statements": [ | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1376, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1374, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1372, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1363, | |
"src": "11584:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "313238", | |
"id": 1373, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11593:3:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_128_by_1", | |
"typeString": "int_const 128" | |
}, | |
"value": "128" | |
}, | |
"src": "11584:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1375, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11599:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "11584:16:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1386, | |
"nodeType": "IfStatement", | |
"src": "11580:98:6", | |
"trueBody": { | |
"id": 1385, | |
"nodeType": "Block", | |
"src": "11602:76:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1379, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1377, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1363, | |
"src": "11620:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": ">>=", | |
"rightHandSide": { | |
"hexValue": "313238", | |
"id": 1378, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11630:3:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_128_by_1", | |
"typeString": "int_const 128" | |
}, | |
"value": "128" | |
}, | |
"src": "11620:13:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1380, | |
"nodeType": "ExpressionStatement", | |
"src": "11620:13:6" | |
}, | |
{ | |
"expression": { | |
"id": 1383, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1381, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1369, | |
"src": "11651:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "3136", | |
"id": 1382, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11661:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_16_by_1", | |
"typeString": "int_const 16" | |
}, | |
"value": "16" | |
}, | |
"src": "11651:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1384, | |
"nodeType": "ExpressionStatement", | |
"src": "11651:12:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1391, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1389, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1387, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1363, | |
"src": "11695:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "3634", | |
"id": 1388, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11704:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_64_by_1", | |
"typeString": "int_const 64" | |
}, | |
"value": "64" | |
}, | |
"src": "11695:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1390, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11709:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "11695:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1401, | |
"nodeType": "IfStatement", | |
"src": "11691:95:6", | |
"trueBody": { | |
"id": 1400, | |
"nodeType": "Block", | |
"src": "11712:74:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1394, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1392, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1363, | |
"src": "11730:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": ">>=", | |
"rightHandSide": { | |
"hexValue": "3634", | |
"id": 1393, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11740:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_64_by_1", | |
"typeString": "int_const 64" | |
}, | |
"value": "64" | |
}, | |
"src": "11730:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1395, | |
"nodeType": "ExpressionStatement", | |
"src": "11730:12:6" | |
}, | |
{ | |
"expression": { | |
"id": 1398, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1396, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1369, | |
"src": "11760:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "38", | |
"id": 1397, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11770:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_8_by_1", | |
"typeString": "int_const 8" | |
}, | |
"value": "8" | |
}, | |
"src": "11760:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1399, | |
"nodeType": "ExpressionStatement", | |
"src": "11760:11:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1406, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1404, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1402, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1363, | |
"src": "11803:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "3332", | |
"id": 1403, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11812:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_32_by_1", | |
"typeString": "int_const 32" | |
}, | |
"value": "32" | |
}, | |
"src": "11803:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1405, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11817:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "11803:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1416, | |
"nodeType": "IfStatement", | |
"src": "11799:95:6", | |
"trueBody": { | |
"id": 1415, | |
"nodeType": "Block", | |
"src": "11820:74:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1409, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1407, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1363, | |
"src": "11838:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": ">>=", | |
"rightHandSide": { | |
"hexValue": "3332", | |
"id": 1408, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11848:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_32_by_1", | |
"typeString": "int_const 32" | |
}, | |
"value": "32" | |
}, | |
"src": "11838:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1410, | |
"nodeType": "ExpressionStatement", | |
"src": "11838:12:6" | |
}, | |
{ | |
"expression": { | |
"id": 1413, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1411, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1369, | |
"src": "11868:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "34", | |
"id": 1412, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11878:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_4_by_1", | |
"typeString": "int_const 4" | |
}, | |
"value": "4" | |
}, | |
"src": "11868:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1414, | |
"nodeType": "ExpressionStatement", | |
"src": "11868:11:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1421, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1419, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1417, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1363, | |
"src": "11911:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "3136", | |
"id": 1418, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11920:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_16_by_1", | |
"typeString": "int_const 16" | |
}, | |
"value": "16" | |
}, | |
"src": "11911:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1420, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11925:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "11911:15:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1431, | |
"nodeType": "IfStatement", | |
"src": "11907:95:6", | |
"trueBody": { | |
"id": 1430, | |
"nodeType": "Block", | |
"src": "11928:74:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1424, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1422, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1363, | |
"src": "11946:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": ">>=", | |
"rightHandSide": { | |
"hexValue": "3136", | |
"id": 1423, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11956:2:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_16_by_1", | |
"typeString": "int_const 16" | |
}, | |
"value": "16" | |
}, | |
"src": "11946:12:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1425, | |
"nodeType": "ExpressionStatement", | |
"src": "11946:12:6" | |
}, | |
{ | |
"expression": { | |
"id": 1428, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1426, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1369, | |
"src": "11976:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "32", | |
"id": 1427, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "11986:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
}, | |
"src": "11976:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1429, | |
"nodeType": "ExpressionStatement", | |
"src": "11976:11:6" | |
} | |
] | |
} | |
}, | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1436, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1434, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1432, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1363, | |
"src": "12019:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">>", | |
"rightExpression": { | |
"hexValue": "38", | |
"id": 1433, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "12028:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_8_by_1", | |
"typeString": "int_const 8" | |
}, | |
"value": "8" | |
}, | |
"src": "12019:10:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": ">", | |
"rightExpression": { | |
"hexValue": "30", | |
"id": 1435, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "12032:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"src": "12019:14:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"id": 1442, | |
"nodeType": "IfStatement", | |
"src": "12015:64:6", | |
"trueBody": { | |
"id": 1441, | |
"nodeType": "Block", | |
"src": "12035:44:6", | |
"statements": [ | |
{ | |
"expression": { | |
"id": 1439, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"id": 1437, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1369, | |
"src": "12053:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"hexValue": "31", | |
"id": 1438, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "12063:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"src": "12053:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 1440, | |
"nodeType": "ExpressionStatement", | |
"src": "12053:11:6" | |
} | |
] | |
} | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"id": 1444, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1369, | |
"src": "12105:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 1367, | |
"id": 1445, | |
"nodeType": "Return", | |
"src": "12098:13:6" | |
} | |
] | |
}, | |
"documentation": { | |
"id": 1361, | |
"nodeType": "StructuredDocumentation", | |
"src": "11210:240:6", | |
"text": " @dev Return the log in base 256, rounded down, of a positive value.\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": 1447, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "log256", | |
"nameLocation": "11464:6:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 1364, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1363, | |
"mutability": "mutable", | |
"name": "value", | |
"nameLocation": "11479:5:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1447, | |
"src": "11471:13:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1362, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "11471:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "11470:15:6" | |
}, | |
"returnParameters": { | |
"id": 1367, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1366, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 1447, | |
"src": "11509:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1365, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "11509:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "11508:9:6" | |
}, | |
"scope": 1487, | |
"src": "11455:663:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 1485, | |
"nodeType": "Block", | |
"src": "12354:174:6", | |
"statements": [ | |
{ | |
"id": 1484, | |
"nodeType": "UncheckedBlock", | |
"src": "12364:158:6", | |
"statements": [ | |
{ | |
"assignments": [ | |
1459 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 1459, | |
"mutability": "mutable", | |
"name": "result", | |
"nameLocation": "12396:6:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1484, | |
"src": "12388:14:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1458, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "12388:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"id": 1463, | |
"initialValue": { | |
"arguments": [ | |
{ | |
"id": 1461, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1450, | |
"src": "12412:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 1460, | |
"name": "log256", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [ | |
1447, | |
1486 | |
], | |
"referencedDeclaration": 1447, | |
"src": "12405:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 1462, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"nameLocations": [], | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "12405:13:6", | |
"tryCall": false, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "12388:30:6" | |
}, | |
{ | |
"expression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1482, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1464, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1459, | |
"src": "12439:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "+", | |
"rightExpression": { | |
"components": [ | |
{ | |
"condition": { | |
"commonType": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"id": 1477, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
}, | |
"id": 1468, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1465, | |
"name": "rounding", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1453, | |
"src": "12449:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"expression": { | |
"id": 1466, | |
"name": "Rounding", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 628, | |
"src": "12461:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_enum$_Rounding_$628_$", | |
"typeString": "type(enum Math.Rounding)" | |
} | |
}, | |
"id": 1467, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"memberLocation": "12470:2:6", | |
"memberName": "Up", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 626, | |
"src": "12461:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"src": "12449:23:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "&&", | |
"rightExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1476, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 1474, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"hexValue": "31", | |
"id": 1469, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "12476:1:6", | |
"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": 1472, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"id": 1470, | |
"name": "result", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1459, | |
"src": "12482:6:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<<", | |
"rightExpression": { | |
"hexValue": "33", | |
"id": 1471, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "12492:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_3_by_1", | |
"typeString": "int_const 3" | |
}, | |
"value": "3" | |
}, | |
"src": "12482:11:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"id": 1473, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "12481:13:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "12476:18:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<", | |
"rightExpression": { | |
"id": 1475, | |
"name": "value", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 1450, | |
"src": "12497:5:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "12476:26:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"src": "12449:53:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseExpression": { | |
"hexValue": "30", | |
"id": 1479, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "12509:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_0_by_1", | |
"typeString": "int_const 0" | |
}, | |
"value": "0" | |
}, | |
"id": 1480, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "Conditional", | |
"src": "12449:61:6", | |
"trueExpression": { | |
"hexValue": "31", | |
"id": 1478, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "12505:1:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_1_by_1", | |
"typeString": "int_const 1" | |
}, | |
"value": "1" | |
}, | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
} | |
} | |
], | |
"id": 1481, | |
"isConstant": false, | |
"isInlineArray": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "TupleExpression", | |
"src": "12448:63:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint8", | |
"typeString": "uint8" | |
} | |
}, | |
"src": "12439:72:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 1457, | |
"id": 1483, | |
"nodeType": "Return", | |
"src": "12432:79:6" | |
} | |
] | |
} | |
] | |
}, | |
"documentation": { | |
"id": 1448, | |
"nodeType": "StructuredDocumentation", | |
"src": "12124:143:6", | |
"text": " @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0." | |
}, | |
"id": 1486, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "log256", | |
"nameLocation": "12281:6:6", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 1454, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1450, | |
"mutability": "mutable", | |
"name": "value", | |
"nameLocation": "12296:5:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1486, | |
"src": "12288:13:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1449, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "12288:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 1453, | |
"mutability": "mutable", | |
"name": "rounding", | |
"nameLocation": "12312:8:6", | |
"nodeType": "VariableDeclaration", | |
"scope": 1486, | |
"src": "12303:17:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
}, | |
"typeName": { | |
"id": 1452, | |
"nodeType": "UserDefinedTypeName", | |
"pathNode": { | |
"id": 1451, | |
"name": "Rounding", | |
"nameLocations": [ | |
"12303:8:6" | |
], | |
"nodeType": "IdentifierPath", | |
"referencedDeclaration": 628, | |
"src": "12303:8:6" | |
}, | |
"referencedDeclaration": 628, | |
"src": "12303:8:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_enum$_Rounding_$628", | |
"typeString": "enum Math.Rounding" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "12287:34:6" | |
}, | |
"returnParameters": { | |
"id": 1457, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 1456, | |
"mutability": "mutable", | |
"name": "", | |
"nameLocation": "-1:-1:-1", | |
"nodeType": "VariableDeclaration", | |
"scope": 1486, | |
"src": "12345:7:6", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 1455, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "12345:7:6", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"visibility": "internal" | |
} | |
], | |
"src": "12344:9:6" | |
}, | |
"scope": 1487, | |
"src": "12272:256:6", | |
"stateMutability": "pure", | |
"virtual": false, | |
"visibility": "internal" | |
} | |
], | |
"scope": 1488, | |
"src": "202:12328:6", | |
"usedErrors": [] | |
} | |
], | |
"src": "103:12428:6" | |
}, | |
"id": 6 | |
} | |
} | |
} | |
} |
// SPDX-License-Identifier: MIT | |
// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) | |
pragma solidity ^0.8.0; | |
/** | |
* @dev External interface of AccessControl declared to support ERC165 detection. | |
*/ | |
interface IAccessControl { | |
/** | |
* @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` | |
* | |
* `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite | |
* {RoleAdminChanged} not being emitted signaling this. | |
* | |
* _Available since v3.1._ | |
*/ | |
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); | |
/** | |
* @dev Emitted when `account` is granted `role`. | |
* | |
* `sender` is the account that originated the contract call, an admin role | |
* bearer except when using {AccessControl-_setupRole}. | |
*/ | |
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); | |
/** | |
* @dev Emitted when `account` is revoked `role`. | |
* | |
* `sender` is the account that originated the contract call: | |
* - if using `revokeRole`, it is the admin role bearer | |
* - if using `renounceRole`, it is the role bearer (i.e. `account`) | |
*/ | |
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); | |
/** | |
* @dev Returns `true` if `account` has been granted `role`. | |
*/ | |
function hasRole(bytes32 role, address account) external view returns (bool); | |
/** | |
* @dev Returns the admin role that controls `role`. See {grantRole} and | |
* {revokeRole}. | |
* | |
* To change a role's admin, use {AccessControl-_setRoleAdmin}. | |
*/ | |
function getRoleAdmin(bytes32 role) external view returns (bytes32); | |
/** | |
* @dev Grants `role` to `account`. | |
* | |
* If `account` had not been already granted `role`, emits a {RoleGranted} | |
* event. | |
* | |
* Requirements: | |
* | |
* - the caller must have ``role``'s admin role. | |
*/ | |
function grantRole(bytes32 role, address account) external; | |
/** | |
* @dev Revokes `role` from `account`. | |
* | |
* If `account` had been granted `role`, emits a {RoleRevoked} event. | |
* | |
* Requirements: | |
* | |
* - the caller must have ``role``'s admin role. | |
*/ | |
function revokeRole(bytes32 role, address account) external; | |
/** | |
* @dev Revokes `role` from the calling account. | |
* | |
* Roles are often managed via {grantRole} and {revokeRole}: this function's | |
* purpose is to provide a mechanism for accounts to lose their privileges | |
* if they are compromised (such as when a trusted device is misplaced). | |
* | |
* If the calling account had been granted `role`, emits a {RoleRevoked} | |
* event. | |
* | |
* Requirements: | |
* | |
* - the caller must be `account`. | |
*/ | |
function renounceRole(bytes32 role, address account) external; | |
} |
// SPDX-License-Identifier: MIT | |
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) | |
pragma solidity ^0.8.0; | |
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol"; | |
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/extensions/IERC20Metadata.sol"; | |
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol"; | |
/** | |
* @dev Implementation of the {IERC20} interface. | |
* | |
* This implementation is agnostic to the way tokens are created. This means | |
* that a supply mechanism has to be added in a derived contract using {_mint}. | |
* For a generic mechanism see {ERC20PresetMinterPauser}. | |
* | |
* TIP: For a detailed writeup see our guide | |
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How | |
* to implement supply mechanisms]. | |
* | |
* We have followed general OpenZeppelin Contracts guidelines: functions revert | |
* instead returning `false` on failure. This behavior is nonetheless | |
* conventional and does not conflict with the expectations of ERC20 | |
* applications. | |
* | |
* Additionally, an {Approval} event is emitted on calls to {transferFrom}. | |
* This allows applications to reconstruct the allowance for all accounts just | |
* by listening to said events. Other implementations of the EIP may not emit | |
* these events, as it isn't required by the specification. | |
* | |
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance} | |
* functions have been added to mitigate the well-known issues around setting | |
* allowances. See {IERC20-approve}. | |
*/ | |
contract ERC20 is Context, IERC20, IERC20Metadata { | |
mapping(address => uint256) private _balances; | |
mapping(address => mapping(address => uint256)) private _allowances; | |
uint256 private _totalSupply; | |
string private _name; | |
string private _symbol; | |
/** | |
* @dev Sets the values for {name} and {symbol}. | |
* | |
* The default value of {decimals} is 18. To select a different value for | |
* {decimals} you should overload it. | |
* | |
* All two of these values are immutable: they can only be set once during | |
* construction. | |
*/ | |
constructor(string memory name_, string memory symbol_) { | |
_name = name_; | |
_symbol = symbol_; | |
} | |
/** | |
* @dev Returns the name of the token. | |
*/ | |
function name() public view virtual override returns (string memory) { | |
return _name; | |
} | |
/** | |
* @dev Returns the symbol of the token, usually a shorter version of the | |
* name. | |
*/ | |
function symbol() public view virtual override returns (string memory) { | |
return _symbol; | |
} | |
/** | |
* @dev Returns the number of decimals used to get its user representation. | |
* For example, if `decimals` equals `2`, a balance of `505` tokens should | |
* be displayed to a user as `5.05` (`505 / 10 ** 2`). | |
* | |
* Tokens usually opt for a value of 18, imitating the relationship between | |
* Ether and Wei. This is the value {ERC20} uses, unless this function is | |
* overridden; | |
* | |
* NOTE: This information is only used for _display_ purposes: it in | |
* no way affects any of the arithmetic of the contract, including | |
* {IERC20-balanceOf} and {IERC20-transfer}. | |
*/ | |
function decimals() public view virtual override returns (uint8) { | |
return 18; | |
} | |
/** | |
* @dev See {IERC20-totalSupply}. | |
*/ | |
function totalSupply() public view virtual override returns (uint256) { | |
return _totalSupply; | |
} | |
/** | |
* @dev See {IERC20-balanceOf}. | |
*/ | |
function balanceOf(address account) public view virtual override returns (uint256) { | |
return _balances[account]; | |
} | |
/** | |
* @dev See {IERC20-transfer}. | |
* | |
* Requirements: | |
* | |
* - `to` cannot be the zero address. | |
* - the caller must have a balance of at least `amount`. | |
*/ | |
function transfer(address to, uint256 amount) public virtual override returns (bool) { | |
address owner = _msgSender(); | |
_transfer(owner, to, amount); | |
return true; | |
} | |
/** | |
* @dev See {IERC20-allowance}. | |
*/ | |
function allowance(address owner, address spender) public view virtual override returns (uint256) { | |
return _allowances[owner][spender]; | |
} | |
/** | |
* @dev See {IERC20-approve}. | |
* | |
* NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on | |
* `transferFrom`. This is semantically equivalent to an infinite approval. | |
* | |
* Requirements: | |
* | |
* - `spender` cannot be the zero address. | |
*/ | |
function approve(address spender, uint256 amount) public virtual override returns (bool) { | |
address owner = _msgSender(); | |
_approve(owner, spender, amount); | |
return true; | |
} | |
/** | |
* @dev See {IERC20-transferFrom}. | |
* | |
* Emits an {Approval} event indicating the updated allowance. This is not | |
* required by the EIP. See the note at the beginning of {ERC20}. | |
* | |
* NOTE: Does not update the allowance if the current allowance | |
* is the maximum `uint256`. | |
* | |
* Requirements: | |
* | |
* - `from` and `to` cannot be the zero address. | |
* - `from` must have a balance of at least `amount`. | |
* - the caller must have allowance for ``from``'s tokens of at least | |
* `amount`. | |
*/ | |
function transferFrom( | |
address from, | |
address to, | |
uint256 amount | |
) public virtual override returns (bool) { | |
address spender = _msgSender(); | |
_spendAllowance(from, spender, amount); | |
_transfer(from, to, amount); | |
return true; | |
} | |
/** | |
* @dev Atomically increases the allowance granted to `spender` by the caller. | |
* | |
* This is an alternative to {approve} that can be used as a mitigation for | |
* problems described in {IERC20-approve}. | |
* | |
* Emits an {Approval} event indicating the updated allowance. | |
* | |
* Requirements: | |
* | |
* - `spender` cannot be the zero address. | |
*/ | |
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { | |
address owner = _msgSender(); | |
_approve(owner, spender, allowance(owner, spender) + addedValue); | |
return true; | |
} | |
/** | |
* @dev Atomically decreases the allowance granted to `spender` by the caller. | |
* | |
* This is an alternative to {approve} that can be used as a mitigation for | |
* problems described in {IERC20-approve}. | |
* | |
* Emits an {Approval} event indicating the updated allowance. | |
* | |
* Requirements: | |
* | |
* - `spender` cannot be the zero address. | |
* - `spender` must have allowance for the caller of at least | |
* `subtractedValue`. | |
*/ | |
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { | |
address owner = _msgSender(); | |
uint256 currentAllowance = allowance(owner, spender); | |
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); | |
unchecked { | |
_approve(owner, spender, currentAllowance - subtractedValue); | |
} | |
return true; | |
} | |
/** | |
* @dev Moves `amount` of tokens from `from` to `to`. | |
* | |
* This internal function is equivalent to {transfer}, and can be used to | |
* e.g. implement automatic token fees, slashing mechanisms, etc. | |
* | |
* Emits a {Transfer} event. | |
* | |
* Requirements: | |
* | |
* - `from` cannot be the zero address. | |
* - `to` cannot be the zero address. | |
* - `from` must have a balance of at least `amount`. | |
*/ | |
function _transfer( | |
address from, | |
address to, | |
uint256 amount | |
) internal virtual { | |
require(from != address(0), "ERC20: transfer from the zero address"); | |
require(to != address(0), "ERC20: transfer to the zero address"); | |
_beforeTokenTransfer(from, to, amount); | |
uint256 fromBalance = _balances[from]; | |
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); | |
unchecked { | |
_balances[from] = fromBalance - amount; | |
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by | |
// decrementing then incrementing. | |
_balances[to] += amount; | |
} | |
emit Transfer(from, to, amount); | |
_afterTokenTransfer(from, to, amount); | |
} | |
/** @dev Creates `amount` tokens and assigns them to `account`, increasing | |
* the total supply. | |
* | |
* Emits a {Transfer} event with `from` set to the zero address. | |
* | |
* Requirements: | |
* | |
* - `account` cannot be the zero address. | |
*/ | |
function _mint(address account, uint256 amount) internal virtual { | |
require(account != address(0), "ERC20: mint to the zero address"); | |
_beforeTokenTransfer(address(0), account, amount); | |
_totalSupply += amount; | |
unchecked { | |
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. | |
_balances[account] += amount; | |
} | |
emit Transfer(address(0), account, amount); | |
_afterTokenTransfer(address(0), account, amount); | |
} | |
/** | |
* @dev Destroys `amount` tokens from `account`, reducing the | |
* total supply. | |
* | |
* Emits a {Transfer} event with `to` set to the zero address. | |
* | |
* Requirements: | |
* | |
* - `account` cannot be the zero address. | |
* - `account` must have at least `amount` tokens. | |
*/ | |
function _burn(address account, uint256 amount) internal virtual { | |
require(account != address(0), "ERC20: burn from the zero address"); | |
_beforeTokenTransfer(account, address(0), amount); | |
uint256 accountBalance = _balances[account]; | |
require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); | |
unchecked { | |
_balances[account] = accountBalance - amount; | |
// Overflow not possible: amount <= accountBalance <= totalSupply. | |
_totalSupply -= amount; | |
} | |
emit Transfer(account, address(0), amount); | |
_afterTokenTransfer(account, address(0), amount); | |
} | |
/** | |
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. | |
* | |
* This internal function is equivalent to `approve`, and can be used to | |
* e.g. set automatic allowances for certain subsystems, etc. | |
* | |
* Emits an {Approval} event. | |
* | |
* Requirements: | |
* | |
* - `owner` cannot be the zero address. | |
* - `spender` cannot be the zero address. | |
*/ | |
function _approve( | |
address owner, | |
address spender, | |
uint256 amount | |
) internal virtual { | |
require(owner != address(0), "ERC20: approve from the zero address"); | |
require(spender != address(0), "ERC20: approve to the zero address"); | |
_allowances[owner][spender] = amount; | |
emit Approval(owner, spender, amount); | |
} | |
/** | |
* @dev Updates `owner` s allowance for `spender` based on spent `amount`. | |
* | |
* Does not update the allowance amount in case of infinite allowance. | |
* Revert if not enough allowance is available. | |
* | |
* Might emit an {Approval} event. | |
*/ | |
function _spendAllowance( | |
address owner, | |
address spender, | |
uint256 amount | |
) internal virtual { | |
uint256 currentAllowance = allowance(owner, spender); | |
if (currentAllowance != type(uint256).max) { | |
require(currentAllowance >= amount, "ERC20: insufficient allowance"); | |
unchecked { | |
_approve(owner, spender, currentAllowance - amount); | |
} | |
} | |
} | |
/** | |
* @dev Hook that is called before any transfer of tokens. This includes | |
* minting and burning. | |
* | |
* Calling conditions: | |
* | |
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens | |
* will be transferred to `to`. | |
* - when `from` is zero, `amount` tokens will be minted for `to`. | |
* - when `to` is zero, `amount` of ``from``'s tokens will be burned. | |
* - `from` and `to` are never both zero. | |
* | |
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. | |
*/ | |
function _beforeTokenTransfer( | |
address from, | |
address to, | |
uint256 amount | |
) internal virtual {} | |
/** | |
* @dev Hook that is called after any transfer of tokens. This includes | |
* minting and burning. | |
* | |
* Calling conditions: | |
* | |
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens | |
* has been transferred to `to`. | |
* - when `from` is zero, `amount` tokens have been minted for `to`. | |
* - when `to` is zero, `amount` of ``from``'s tokens have been burned. | |
* - `from` and `to` are never both zero. | |
* | |
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. | |
*/ | |
function _afterTokenTransfer( | |
address from, | |
address to, | |
uint256 amount | |
) internal virtual {} | |
} |
// SPDX-License-Identifier: MIT | |
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) | |
pragma solidity ^0.8.0; | |
/** | |
* @dev Interface of the ERC20 standard as defined in the EIP. | |
*/ | |
interface IERC20 { | |
/** | |
* @dev Emitted when `value` tokens are moved from one account (`from`) to | |
* another (`to`). | |
* | |
* Note that `value` may be zero. | |
*/ | |
event Transfer(address indexed from, address indexed to, uint256 value); | |
/** | |
* @dev Emitted when the allowance of a `spender` for an `owner` is set by | |
* a call to {approve}. `value` is the new allowance. | |
*/ | |
event Approval(address indexed owner, address indexed spender, uint256 value); | |
/** | |
* @dev Returns the amount of tokens in existence. | |
*/ | |
function totalSupply() external view returns (uint256); | |
/** | |
* @dev Returns the amount of tokens owned by `account`. | |
*/ | |
function balanceOf(address account) external view returns (uint256); | |
/** | |
* @dev Moves `amount` tokens from the caller's account to `to`. | |
* | |
* Returns a boolean value indicating whether the operation succeeded. | |
* | |
* Emits a {Transfer} event. | |
*/ | |
function transfer(address to, uint256 amount) external returns (bool); | |
/** | |
* @dev Returns the remaining number of tokens that `spender` will be | |
* allowed to spend on behalf of `owner` through {transferFrom}. This is | |
* zero by default. | |
* | |
* This value changes when {approve} or {transferFrom} are called. | |
*/ | |
function allowance(address owner, address spender) external view returns (uint256); | |
/** | |
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens. | |
* | |
* Returns a boolean value indicating whether the operation succeeded. | |
* | |
* IMPORTANT: Beware that changing an allowance with this method brings the risk | |
* that someone may use both the old and the new allowance by unfortunate | |
* transaction ordering. One possible solution to mitigate this race | |
* condition is to first reduce the spender's allowance to 0 and set the | |
* desired value afterwards: | |
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 | |
* | |
* Emits an {Approval} event. | |
*/ | |
function approve(address spender, uint256 amount) external returns (bool); | |
/** | |
* @dev Moves `amount` tokens from `from` to `to` using the | |
* allowance mechanism. `amount` is then deducted from the caller's | |
* allowance. | |
* | |
* Returns a boolean value indicating whether the operation succeeded. | |
* | |
* Emits a {Transfer} event. | |
*/ | |
function transferFrom( | |
address from, | |
address to, | |
uint256 amount | |
) external returns (bool); | |
} |
(Sorry about that, but we can’t show files that are this big right now.)
{ | |
"deploy": { | |
"VM:-": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"main:1": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"ropsten:3": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"rinkeby:4": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"kovan:42": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"goerli:5": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
}, | |
"Custom": { | |
"linkReferences": {}, | |
"autoDeployLib": true | |
} | |
}, | |
"data": { | |
"bytecode": { | |
"functionDebugData": { | |
"@_44": { | |
"entryPoint": null, | |
"id": 44, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"abi_decode_available_length_t_string_memory_ptr_fromMemory": { | |
"entryPoint": 376, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 1 | |
}, | |
"abi_decode_t_string_memory_ptr_fromMemory": { | |
"entryPoint": 451, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory": { | |
"entryPoint": 502, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 2 | |
}, | |
"allocate_memory": { | |
"entryPoint": 247, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"allocate_unbounded": { | |
"entryPoint": 99, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 1 | |
}, | |
"array_allocation_size_t_string_memory_ptr": { | |
"entryPoint": 278, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_dataslot_t_string_storage": { | |
"entryPoint": 746, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"array_length_t_string_memory_ptr": { | |
"entryPoint": 635, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"clean_up_bytearray_end_slots_t_string_storage": { | |
"entryPoint": 1067, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 0 | |
}, | |
"cleanup_t_uint256": { | |
"entryPoint": 882, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"clear_storage_range_t_bytes1": { | |
"entryPoint": 1028, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"convert_t_uint256_to_t_uint256": { | |
"entryPoint": 902, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { | |
"entryPoint": 1222, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"copy_memory_to_memory_with_cleanup": { | |
"entryPoint": 332, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 0 | |
}, | |
"divide_by_32_ceil": { | |
"entryPoint": 767, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"extract_byte_array_length": { | |
"entryPoint": 693, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"extract_used_part_and_set_length_of_short_byte_array": { | |
"entryPoint": 1192, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"finalize_allocation": { | |
"entryPoint": 193, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"identity": { | |
"entryPoint": 892, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"mask_bytes_dynamic": { | |
"entryPoint": 1160, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"panic_error_0x22": { | |
"entryPoint": 646, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"panic_error_0x41": { | |
"entryPoint": 146, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"prepare_store_t_uint256": { | |
"entryPoint": 942, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": { | |
"entryPoint": 119, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": { | |
"entryPoint": 124, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { | |
"entryPoint": 114, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { | |
"entryPoint": 109, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 0 | |
}, | |
"round_up_to_mul_of_32": { | |
"entryPoint": 129, | |
"id": null, | |
"parameterSlots": 1, | |
"returnSlots": 1 | |
}, | |
"shift_left_dynamic": { | |
"entryPoint": 783, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"shift_right_unsigned_dynamic": { | |
"entryPoint": 1147, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 1 | |
}, | |
"storage_set_to_zero_t_uint256": { | |
"entryPoint": 1000, | |
"id": null, | |
"parameterSlots": 2, | |
"returnSlots": 0 | |
}, | |
"update_byte_slice_dynamic32": { | |
"entryPoint": 796, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 1 | |
}, | |
"update_storage_value_t_uint256_to_t_uint256": { | |
"entryPoint": 952, | |
"id": null, | |
"parameterSlots": 3, | |
"returnSlots": 0 | |
}, | |
"zero_value_for_split_t_uint256": { | |
"entryPoint": 995, | |
"id": null, | |
"parameterSlots": 0, | |
"returnSlots": 1 | |
} | |
}, | |
"generatedSources": [ | |
{ | |
"ast": { | |
"nodeType": "YulBlock", | |
"src": "0:8574:4", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "47:35:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "57:19:4", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "73:2:4", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "67:5:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "67:9:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "57:6:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "allocate_unbounded", | |
"nodeType": "YulFunctionDefinition", | |
"returnVariables": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulTypedName", | |
"src": "40:6:4", | |
"type": "" | |
} | |
], | |
"src": "7:75:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "177:28:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "194:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "197:1:4", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "187:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "187:12:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "187:12:4" | |
} | |
] | |
}, | |
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
"nodeType": "YulFunctionDefinition", | |
"src": "88:117:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "300:28:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "317:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "320:1:4", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "310:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "310:12:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "310:12:4" | |
} | |
] | |
}, | |
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
"nodeType": "YulFunctionDefinition", | |
"src": "211:117:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "423:28:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "440:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "443:1:4", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "433:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "433:12:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "433:12:4" | |
} | |
] | |
}, | |
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", | |
"nodeType": "YulFunctionDefinition", | |
"src": "334:117:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "546:28:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "563:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "566:1:4", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "556:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "556:12:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "556:12:4" | |
} | |
] | |
}, | |
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", | |
"nodeType": "YulFunctionDefinition", | |
"src": "457:117:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "628:54:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "638:38:4", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "656:5:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "663:2:4", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "652:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "652:14:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "672:2:4", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "668:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "668:7:4" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "648:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "648:28:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "result", | |
"nodeType": "YulIdentifier", | |
"src": "638:6:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "round_up_to_mul_of_32", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "611:5:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "result", | |
"nodeType": "YulTypedName", | |
"src": "621:6:4", | |
"type": "" | |
} | |
], | |
"src": "580:102:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "716:152:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "733:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "736:77:4", | |
"type": "", | |
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "726:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "726:88:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "726:88:4" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "830:1:4", | |
"type": "", | |
"value": "4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "833:4:4", | |
"type": "", | |
"value": "0x41" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "823:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "823:15:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "823:15:4" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "854:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "857:4:4", | |
"type": "", | |
"value": "0x24" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "847:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "847:15:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "847:15:4" | |
} | |
] | |
}, | |
"name": "panic_error_0x41", | |
"nodeType": "YulFunctionDefinition", | |
"src": "688:180:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "917:238:4", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "927:58:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "949:6:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "979:4:4" | |
} | |
], | |
"functionName": { | |
"name": "round_up_to_mul_of_32", | |
"nodeType": "YulIdentifier", | |
"src": "957:21:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "957:27:4" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "945:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "945:40:4" | |
}, | |
"variables": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulTypedName", | |
"src": "931:10:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1096:22:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x41", | |
"nodeType": "YulIdentifier", | |
"src": "1098:16:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1098:18:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1098:18:4" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "1039:10:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1051:18:4", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "1036:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1036:34:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "1075:10:4" | |
}, | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "1087:6:4" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "1072:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1072:22:4" | |
} | |
], | |
"functionName": { | |
"name": "or", | |
"nodeType": "YulIdentifier", | |
"src": "1033:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1033:62:4" | |
}, | |
"nodeType": "YulIf", | |
"src": "1030:88:4" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1134:2:4", | |
"type": "", | |
"value": "64" | |
}, | |
{ | |
"name": "newFreePtr", | |
"nodeType": "YulIdentifier", | |
"src": "1138:10:4" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1127:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1127:22:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1127:22:4" | |
} | |
] | |
}, | |
"name": "finalize_allocation", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulTypedName", | |
"src": "903:6:4", | |
"type": "" | |
}, | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "911:4:4", | |
"type": "" | |
} | |
], | |
"src": "874:281:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1202:88:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1212:30:4", | |
"value": { | |
"arguments": [], | |
"functionName": { | |
"name": "allocate_unbounded", | |
"nodeType": "YulIdentifier", | |
"src": "1222:18:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1222:20:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "1212:6:4" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulIdentifier", | |
"src": "1271:6:4" | |
}, | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "1279:4:4" | |
} | |
], | |
"functionName": { | |
"name": "finalize_allocation", | |
"nodeType": "YulIdentifier", | |
"src": "1251:19:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1251:33:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1251:33:4" | |
} | |
] | |
}, | |
"name": "allocate_memory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "1186:4:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "memPtr", | |
"nodeType": "YulTypedName", | |
"src": "1195:6:4", | |
"type": "" | |
} | |
], | |
"src": "1161:129:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1363:241:4", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1468:22:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x41", | |
"nodeType": "YulIdentifier", | |
"src": "1470:16:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1470:18:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1470:18:4" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "1440:6:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1448:18:4", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "1437:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1437:30:4" | |
}, | |
"nodeType": "YulIf", | |
"src": "1434:56:4" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1500:37:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "1530:6:4" | |
} | |
], | |
"functionName": { | |
"name": "round_up_to_mul_of_32", | |
"nodeType": "YulIdentifier", | |
"src": "1508:21:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1508:29:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "1500:4:4" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1574:23:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "1586:4:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1592:4:4", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1582:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1582:15:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "size", | |
"nodeType": "YulIdentifier", | |
"src": "1574:4:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_allocation_size_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "1347:6:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "size", | |
"nodeType": "YulTypedName", | |
"src": "1358:4:4", | |
"type": "" | |
} | |
], | |
"src": "1296:308:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1672:184:4", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "1682:10:4", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1691:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "i", | |
"nodeType": "YulTypedName", | |
"src": "1686:1:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1751:63:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "1776:3:4" | |
}, | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "1781:1:4" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1772:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1772:11:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "1795:3:4" | |
}, | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "1800:1:4" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1791:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1791:11:4" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "1785:5:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1785:18:4" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1765:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1765:39:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1765:39:4" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "1712:1:4" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "1715:6:4" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "1709:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1709:13:4" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "1723:19:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1725:15:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "1734:1:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1737:2:4", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1730:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1730:10:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "i", | |
"nodeType": "YulIdentifier", | |
"src": "1725:1:4" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "1705:3:4", | |
"statements": [] | |
}, | |
"src": "1701:113:4" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "1834:3:4" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "1839:6:4" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "1830:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1830:16:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "1848:1:4", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "1823:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1823:27:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "1823:27:4" | |
} | |
] | |
}, | |
"name": "copy_memory_to_memory_with_cleanup", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "1654:3:4", | |
"type": "" | |
}, | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "1659:3:4", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "1664:6:4", | |
"type": "" | |
} | |
], | |
"src": "1610:246:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "1957:339:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "1967:75:4", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "2034:6:4" | |
} | |
], | |
"functionName": { | |
"name": "array_allocation_size_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "1992:41:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1992:49:4" | |
} | |
], | |
"functionName": { | |
"name": "allocate_memory", | |
"nodeType": "YulIdentifier", | |
"src": "1976:15:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "1976:66:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "1967:5:4" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "2058:5:4" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "2065:6:4" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "2051:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2051:21:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2051:21:4" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2081:27:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "2096:5:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2103:4:4", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2092:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2092:16:4" | |
}, | |
"variables": [ | |
{ | |
"name": "dst", | |
"nodeType": "YulTypedName", | |
"src": "2085:3:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2146:83:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae", | |
"nodeType": "YulIdentifier", | |
"src": "2148:77:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2148:79:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2148:79:4" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "2127:3:4" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "2132:6:4" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2123:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2123:16:4" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "2141:3:4" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "2120:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2120:25:4" | |
}, | |
"nodeType": "YulIf", | |
"src": "2117:112:4" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "2273:3:4" | |
}, | |
{ | |
"name": "dst", | |
"nodeType": "YulIdentifier", | |
"src": "2278:3:4" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "2283:6:4" | |
} | |
], | |
"functionName": { | |
"name": "copy_memory_to_memory_with_cleanup", | |
"nodeType": "YulIdentifier", | |
"src": "2238:34:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2238:52:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2238:52:4" | |
} | |
] | |
}, | |
"name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "src", | |
"nodeType": "YulTypedName", | |
"src": "1930:3:4", | |
"type": "" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "1935:6:4", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "1943:3:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "1951:5:4", | |
"type": "" | |
} | |
], | |
"src": "1862:434:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2389:282:4", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2438:83:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", | |
"nodeType": "YulIdentifier", | |
"src": "2440:77:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2440:79:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2440:79:4" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "2417:6:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2425:4:4", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2413:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2413:17:4" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "2432:3:4" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "2409:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2409:27:4" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "2402:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2402:35:4" | |
}, | |
"nodeType": "YulIf", | |
"src": "2399:122:4" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2530:27:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "2550:6:4" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "2544:5:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2544:13:4" | |
}, | |
"variables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "2534:6:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "2566:99:4", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "2638:6:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2646:4:4", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2634:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2634:17:4" | |
}, | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "2653:6:4" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "2661:3:4" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_available_length_t_string_memory_ptr_fromMemory", | |
"nodeType": "YulIdentifier", | |
"src": "2575:58:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2575:90:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "2566:5:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_t_string_memory_ptr_fromMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "2367:6:4", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "2375:3:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "2383:5:4", | |
"type": "" | |
} | |
], | |
"src": "2316:355:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2791:739:4", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "2837:83:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", | |
"nodeType": "YulIdentifier", | |
"src": "2839:77:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2839:79:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "2839:79:4" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "2812:7:4" | |
}, | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "2821:9:4" | |
} | |
], | |
"functionName": { | |
"name": "sub", | |
"nodeType": "YulIdentifier", | |
"src": "2808:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2808:23:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2833:2:4", | |
"type": "", | |
"value": "64" | |
} | |
], | |
"functionName": { | |
"name": "slt", | |
"nodeType": "YulIdentifier", | |
"src": "2804:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2804:32:4" | |
}, | |
"nodeType": "YulIf", | |
"src": "2801:119:4" | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "2930:291:4", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "2945:38:4", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "2969:9:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "2980:1:4", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "2965:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2965:17:4" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "2959:5:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2959:24:4" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "2949:6:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3030:83:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
"nodeType": "YulIdentifier", | |
"src": "3032:77:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3032:79:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3032:79:4" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3002:6:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3010:18:4", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "2999:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "2999:30:4" | |
}, | |
"nodeType": "YulIf", | |
"src": "2996:117:4" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3127:84:4", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3183:9:4" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3194:6:4" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3179:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3179:22:4" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3203:7:4" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_string_memory_ptr_fromMemory", | |
"nodeType": "YulIdentifier", | |
"src": "3137:41:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3137:74:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulIdentifier", | |
"src": "3127:6:4" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulBlock", | |
"src": "3231:292:4", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "3246:39:4", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3270:9:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3281:2:4", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3266:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3266:18:4" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "3260:5:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3260:25:4" | |
}, | |
"variables": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "3250:6:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3332:83:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", | |
"nodeType": "YulIdentifier", | |
"src": "3334:77:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3334:79:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3334:79:4" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3304:6:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3312:18:4", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "3301:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3301:30:4" | |
}, | |
"nodeType": "YulIf", | |
"src": "3298:117:4" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3429:84:4", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulIdentifier", | |
"src": "3485:9:4" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "3496:6:4" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "3481:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3481:22:4" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulIdentifier", | |
"src": "3505:7:4" | |
} | |
], | |
"functionName": { | |
"name": "abi_decode_t_string_memory_ptr_fromMemory", | |
"nodeType": "YulIdentifier", | |
"src": "3439:41:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3439:74:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value1", | |
"nodeType": "YulIdentifier", | |
"src": "3429:6:4" | |
} | |
] | |
} | |
] | |
} | |
] | |
}, | |
"name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "headStart", | |
"nodeType": "YulTypedName", | |
"src": "2753:9:4", | |
"type": "" | |
}, | |
{ | |
"name": "dataEnd", | |
"nodeType": "YulTypedName", | |
"src": "2764:7:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "value0", | |
"nodeType": "YulTypedName", | |
"src": "2776:6:4", | |
"type": "" | |
}, | |
{ | |
"name": "value1", | |
"nodeType": "YulTypedName", | |
"src": "2784:6:4", | |
"type": "" | |
} | |
], | |
"src": "2677:853:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3595:40:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3606:22:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "3622:5:4" | |
} | |
], | |
"functionName": { | |
"name": "mload", | |
"nodeType": "YulIdentifier", | |
"src": "3616:5:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3616:12:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "3606:6:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_length_t_string_memory_ptr", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "3578:5:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "3588:6:4", | |
"type": "" | |
} | |
], | |
"src": "3536:99:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3669:152:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3686:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3689:77:4", | |
"type": "", | |
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "3679:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3679:88:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3679:88:4" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3783:1:4", | |
"type": "", | |
"value": "4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3786:4:4", | |
"type": "", | |
"value": "0x22" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "3776:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3776:15:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3776:15:4" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3807:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3810:4:4", | |
"type": "", | |
"value": "0x24" | |
} | |
], | |
"functionName": { | |
"name": "revert", | |
"nodeType": "YulIdentifier", | |
"src": "3800:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3800:15:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "3800:15:4" | |
} | |
] | |
}, | |
"name": "panic_error_0x22", | |
"nodeType": "YulFunctionDefinition", | |
"src": "3641:180:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3878:269:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "3888:22:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "3902:4:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3908:1:4", | |
"type": "", | |
"value": "2" | |
} | |
], | |
"functionName": { | |
"name": "div", | |
"nodeType": "YulIdentifier", | |
"src": "3898:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3898:12:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "3888:6:4" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "3919:38:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "3949:4:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "3955:1:4", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "3945:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3945:12:4" | |
}, | |
"variables": [ | |
{ | |
"name": "outOfPlaceEncoding", | |
"nodeType": "YulTypedName", | |
"src": "3923:18:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "3996:51:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4010:27:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "4024:6:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4032:4:4", | |
"type": "", | |
"value": "0x7f" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "4020:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4020:17:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "4010:6:4" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "outOfPlaceEncoding", | |
"nodeType": "YulIdentifier", | |
"src": "3976:18:4" | |
} | |
], | |
"functionName": { | |
"name": "iszero", | |
"nodeType": "YulIdentifier", | |
"src": "3969:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "3969:26:4" | |
}, | |
"nodeType": "YulIf", | |
"src": "3966:81:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4099:42:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x22", | |
"nodeType": "YulIdentifier", | |
"src": "4113:16:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4113:18:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "4113:18:4" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "outOfPlaceEncoding", | |
"nodeType": "YulIdentifier", | |
"src": "4063:18:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "length", | |
"nodeType": "YulIdentifier", | |
"src": "4086:6:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4094:2:4", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "4083:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4083:14:4" | |
} | |
], | |
"functionName": { | |
"name": "eq", | |
"nodeType": "YulIdentifier", | |
"src": "4060:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4060:38:4" | |
}, | |
"nodeType": "YulIf", | |
"src": "4057:84:4" | |
} | |
] | |
}, | |
"name": "extract_byte_array_length", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "data", | |
"nodeType": "YulTypedName", | |
"src": "3862:4:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "length", | |
"nodeType": "YulTypedName", | |
"src": "3871:6:4", | |
"type": "" | |
} | |
], | |
"src": "3827:320:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4207:87:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4217:11:4", | |
"value": { | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "4225:3:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "4217:4:4" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4245:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"name": "ptr", | |
"nodeType": "YulIdentifier", | |
"src": "4248:3:4" | |
} | |
], | |
"functionName": { | |
"name": "mstore", | |
"nodeType": "YulIdentifier", | |
"src": "4238:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4238:14:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "4238:14:4" | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4261:26:4", | |
"value": { | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4279:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4282:4:4", | |
"type": "", | |
"value": "0x20" | |
} | |
], | |
"functionName": { | |
"name": "keccak256", | |
"nodeType": "YulIdentifier", | |
"src": "4269:9:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4269:18:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "4261:4:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "array_dataslot_t_string_storage", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "ptr", | |
"nodeType": "YulTypedName", | |
"src": "4194:3:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "data", | |
"nodeType": "YulTypedName", | |
"src": "4202:4:4", | |
"type": "" | |
} | |
], | |
"src": "4153:141:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4344:49:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4354:33:4", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "4372:5:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4379:2:4", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "4368:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4368:14:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4384:2:4", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "div", | |
"nodeType": "YulIdentifier", | |
"src": "4364:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4364:23:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "result", | |
"nodeType": "YulIdentifier", | |
"src": "4354:6:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "divide_by_32_ceil", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "4327:5:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "result", | |
"nodeType": "YulTypedName", | |
"src": "4337:6:4", | |
"type": "" | |
} | |
], | |
"src": "4300:93:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4452:54:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4462:37:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "bits", | |
"nodeType": "YulIdentifier", | |
"src": "4487:4:4" | |
}, | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "4493:5:4" | |
} | |
], | |
"functionName": { | |
"name": "shl", | |
"nodeType": "YulIdentifier", | |
"src": "4483:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4483:16:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "newValue", | |
"nodeType": "YulIdentifier", | |
"src": "4462:8:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "shift_left_dynamic", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "bits", | |
"nodeType": "YulTypedName", | |
"src": "4427:4:4", | |
"type": "" | |
}, | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "4433:5:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "newValue", | |
"nodeType": "YulTypedName", | |
"src": "4443:8:4", | |
"type": "" | |
} | |
], | |
"src": "4399:107:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4588:317:4", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "4598:35:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "shiftBytes", | |
"nodeType": "YulIdentifier", | |
"src": "4619:10:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4631:1:4", | |
"type": "", | |
"value": "8" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "4615:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4615:18:4" | |
}, | |
"variables": [ | |
{ | |
"name": "shiftBits", | |
"nodeType": "YulTypedName", | |
"src": "4602:9:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "4642:109:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "shiftBits", | |
"nodeType": "YulIdentifier", | |
"src": "4673:9:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "4684:66:4", | |
"type": "", | |
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "shift_left_dynamic", | |
"nodeType": "YulIdentifier", | |
"src": "4654:18:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4654:97:4" | |
}, | |
"variables": [ | |
{ | |
"name": "mask", | |
"nodeType": "YulTypedName", | |
"src": "4646:4:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4760:51:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "shiftBits", | |
"nodeType": "YulIdentifier", | |
"src": "4791:9:4" | |
}, | |
{ | |
"name": "toInsert", | |
"nodeType": "YulIdentifier", | |
"src": "4802:8:4" | |
} | |
], | |
"functionName": { | |
"name": "shift_left_dynamic", | |
"nodeType": "YulIdentifier", | |
"src": "4772:18:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4772:39:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "toInsert", | |
"nodeType": "YulIdentifier", | |
"src": "4760:8:4" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4820:30:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "4833:5:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "mask", | |
"nodeType": "YulIdentifier", | |
"src": "4844:4:4" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "4840:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4840:9:4" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "4829:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4829:21:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "4820:5:4" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4859:40:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "4872:5:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "toInsert", | |
"nodeType": "YulIdentifier", | |
"src": "4883:8:4" | |
}, | |
{ | |
"name": "mask", | |
"nodeType": "YulIdentifier", | |
"src": "4893:4:4" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "4879:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4879:19:4" | |
} | |
], | |
"functionName": { | |
"name": "or", | |
"nodeType": "YulIdentifier", | |
"src": "4869:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "4869:30:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "result", | |
"nodeType": "YulIdentifier", | |
"src": "4859:6:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "update_byte_slice_dynamic32", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "4549:5:4", | |
"type": "" | |
}, | |
{ | |
"name": "shiftBytes", | |
"nodeType": "YulTypedName", | |
"src": "4556:10:4", | |
"type": "" | |
}, | |
{ | |
"name": "toInsert", | |
"nodeType": "YulTypedName", | |
"src": "4568:8:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "result", | |
"nodeType": "YulTypedName", | |
"src": "4581:6:4", | |
"type": "" | |
} | |
], | |
"src": "4512:393:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "4956:32:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "4966:16:4", | |
"value": { | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "4977:5:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulIdentifier", | |
"src": "4966:7:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "4938:5:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "cleaned", | |
"nodeType": "YulTypedName", | |
"src": "4948:7:4", | |
"type": "" | |
} | |
], | |
"src": "4911:77:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5026:28:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "5036:12:4", | |
"value": { | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "5043:5:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "ret", | |
"nodeType": "YulIdentifier", | |
"src": "5036:3:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "identity", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "5012:5:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "ret", | |
"nodeType": "YulTypedName", | |
"src": "5022:3:4", | |
"type": "" | |
} | |
], | |
"src": "4994:60:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5120:82:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "5130:66:4", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "5188:5:4" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "5170:17:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5170:24:4" | |
} | |
], | |
"functionName": { | |
"name": "identity", | |
"nodeType": "YulIdentifier", | |
"src": "5161:8:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5161:34:4" | |
} | |
], | |
"functionName": { | |
"name": "cleanup_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "5143:17:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5143:53:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulIdentifier", | |
"src": "5130:9:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "convert_t_uint256_to_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "5100:5:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "converted", | |
"nodeType": "YulTypedName", | |
"src": "5110:9:4", | |
"type": "" | |
} | |
], | |
"src": "5060:142:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5255:28:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "5265:12:4", | |
"value": { | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "5272:5:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "ret", | |
"nodeType": "YulIdentifier", | |
"src": "5265:3:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "prepare_store_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "5241:5:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "ret", | |
"nodeType": "YulTypedName", | |
"src": "5251:3:4", | |
"type": "" | |
} | |
], | |
"src": "5208:75:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5365:193:4", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "5375:63:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "value_0", | |
"nodeType": "YulIdentifier", | |
"src": "5430:7:4" | |
} | |
], | |
"functionName": { | |
"name": "convert_t_uint256_to_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "5399:30:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5399:39:4" | |
}, | |
"variables": [ | |
{ | |
"name": "convertedValue_0", | |
"nodeType": "YulTypedName", | |
"src": "5379:16:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulIdentifier", | |
"src": "5454:4:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulIdentifier", | |
"src": "5494:4:4" | |
} | |
], | |
"functionName": { | |
"name": "sload", | |
"nodeType": "YulIdentifier", | |
"src": "5488:5:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5488:11:4" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "5501:6:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "convertedValue_0", | |
"nodeType": "YulIdentifier", | |
"src": "5533:16:4" | |
} | |
], | |
"functionName": { | |
"name": "prepare_store_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "5509:23:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5509:41:4" | |
} | |
], | |
"functionName": { | |
"name": "update_byte_slice_dynamic32", | |
"nodeType": "YulIdentifier", | |
"src": "5460:27:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5460:91:4" | |
} | |
], | |
"functionName": { | |
"name": "sstore", | |
"nodeType": "YulIdentifier", | |
"src": "5447:6:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5447:105:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "5447:105:4" | |
} | |
] | |
}, | |
"name": "update_storage_value_t_uint256_to_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulTypedName", | |
"src": "5342:4:4", | |
"type": "" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "5348:6:4", | |
"type": "" | |
}, | |
{ | |
"name": "value_0", | |
"nodeType": "YulTypedName", | |
"src": "5356:7:4", | |
"type": "" | |
} | |
], | |
"src": "5289:269:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5613:24:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "5623:8:4", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5630:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
"variableNames": [ | |
{ | |
"name": "ret", | |
"nodeType": "YulIdentifier", | |
"src": "5623:3:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "zero_value_for_split_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"returnVariables": [ | |
{ | |
"name": "ret", | |
"nodeType": "YulTypedName", | |
"src": "5609:3:4", | |
"type": "" | |
} | |
], | |
"src": "5564:73:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5696:136:4", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "5706:46:4", | |
"value": { | |
"arguments": [], | |
"functionName": { | |
"name": "zero_value_for_split_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "5720:30:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5720:32:4" | |
}, | |
"variables": [ | |
{ | |
"name": "zero_0", | |
"nodeType": "YulTypedName", | |
"src": "5710:6:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulIdentifier", | |
"src": "5805:4:4" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulIdentifier", | |
"src": "5811:6:4" | |
}, | |
{ | |
"name": "zero_0", | |
"nodeType": "YulIdentifier", | |
"src": "5819:6:4" | |
} | |
], | |
"functionName": { | |
"name": "update_storage_value_t_uint256_to_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "5761:43:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5761:65:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "5761:65:4" | |
} | |
] | |
}, | |
"name": "storage_set_to_zero_t_uint256", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulTypedName", | |
"src": "5682:4:4", | |
"type": "" | |
}, | |
{ | |
"name": "offset", | |
"nodeType": "YulTypedName", | |
"src": "5688:6:4", | |
"type": "" | |
} | |
], | |
"src": "5643:189:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5888:136:4", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "5955:63:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "start", | |
"nodeType": "YulIdentifier", | |
"src": "5999:5:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6006:1:4", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "storage_set_to_zero_t_uint256", | |
"nodeType": "YulIdentifier", | |
"src": "5969:29:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5969:39:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "5969:39:4" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "start", | |
"nodeType": "YulIdentifier", | |
"src": "5908:5:4" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulIdentifier", | |
"src": "5915:3:4" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "5905:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5905:14:4" | |
}, | |
"nodeType": "YulForLoop", | |
"post": { | |
"nodeType": "YulBlock", | |
"src": "5920:26:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "5922:22:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "start", | |
"nodeType": "YulIdentifier", | |
"src": "5935:5:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "5942:1:4", | |
"type": "", | |
"value": "1" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "5931:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "5931:13:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "start", | |
"nodeType": "YulIdentifier", | |
"src": "5922:5:4" | |
} | |
] | |
} | |
] | |
}, | |
"pre": { | |
"nodeType": "YulBlock", | |
"src": "5902:2:4", | |
"statements": [] | |
}, | |
"src": "5898:120:4" | |
} | |
] | |
}, | |
"name": "clear_storage_range_t_bytes1", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "start", | |
"nodeType": "YulTypedName", | |
"src": "5876:5:4", | |
"type": "" | |
}, | |
{ | |
"name": "end", | |
"nodeType": "YulTypedName", | |
"src": "5883:3:4", | |
"type": "" | |
} | |
], | |
"src": "5838:186:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6109:464:4", | |
"statements": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6135:431:4", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "6149:54:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "array", | |
"nodeType": "YulIdentifier", | |
"src": "6197:5:4" | |
} | |
], | |
"functionName": { | |
"name": "array_dataslot_t_string_storage", | |
"nodeType": "YulIdentifier", | |
"src": "6165:31:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6165:38:4" | |
}, | |
"variables": [ | |
{ | |
"name": "dataArea", | |
"nodeType": "YulTypedName", | |
"src": "6153:8:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "6216:63:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "dataArea", | |
"nodeType": "YulIdentifier", | |
"src": "6239:8:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "startIndex", | |
"nodeType": "YulIdentifier", | |
"src": "6267:10:4" | |
} | |
], | |
"functionName": { | |
"name": "divide_by_32_ceil", | |
"nodeType": "YulIdentifier", | |
"src": "6249:17:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6249:29:4" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "6235:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6235:44:4" | |
}, | |
"variables": [ | |
{ | |
"name": "deleteStart", | |
"nodeType": "YulTypedName", | |
"src": "6220:11:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6436:27:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "6438:23:4", | |
"value": { | |
"name": "dataArea", | |
"nodeType": "YulIdentifier", | |
"src": "6453:8:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "deleteStart", | |
"nodeType": "YulIdentifier", | |
"src": "6438:11:4" | |
} | |
] | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "startIndex", | |
"nodeType": "YulIdentifier", | |
"src": "6420:10:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6432:2:4", | |
"type": "", | |
"value": "32" | |
} | |
], | |
"functionName": { | |
"name": "lt", | |
"nodeType": "YulIdentifier", | |
"src": "6417:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6417:18:4" | |
}, | |
"nodeType": "YulIf", | |
"src": "6414:49:4" | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "deleteStart", | |
"nodeType": "YulIdentifier", | |
"src": "6505:11:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "dataArea", | |
"nodeType": "YulIdentifier", | |
"src": "6522:8:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"name": "len", | |
"nodeType": "YulIdentifier", | |
"src": "6550:3:4" | |
} | |
], | |
"functionName": { | |
"name": "divide_by_32_ceil", | |
"nodeType": "YulIdentifier", | |
"src": "6532:17:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6532:22:4" | |
} | |
], | |
"functionName": { | |
"name": "add", | |
"nodeType": "YulIdentifier", | |
"src": "6518:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6518:37:4" | |
} | |
], | |
"functionName": { | |
"name": "clear_storage_range_t_bytes1", | |
"nodeType": "YulIdentifier", | |
"src": "6476:28:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6476:80:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "6476:80:4" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "len", | |
"nodeType": "YulIdentifier", | |
"src": "6126:3:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6131:2:4", | |
"type": "", | |
"value": "31" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "6123:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6123:11:4" | |
}, | |
"nodeType": "YulIf", | |
"src": "6120:446:4" | |
} | |
] | |
}, | |
"name": "clean_up_bytearray_end_slots_t_string_storage", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "array", | |
"nodeType": "YulTypedName", | |
"src": "6085:5:4", | |
"type": "" | |
}, | |
{ | |
"name": "len", | |
"nodeType": "YulTypedName", | |
"src": "6092:3:4", | |
"type": "" | |
}, | |
{ | |
"name": "startIndex", | |
"nodeType": "YulTypedName", | |
"src": "6097:10:4", | |
"type": "" | |
} | |
], | |
"src": "6030:543:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6642:54:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "6652:37:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "bits", | |
"nodeType": "YulIdentifier", | |
"src": "6677:4:4" | |
}, | |
{ | |
"name": "value", | |
"nodeType": "YulIdentifier", | |
"src": "6683:5:4" | |
} | |
], | |
"functionName": { | |
"name": "shr", | |
"nodeType": "YulIdentifier", | |
"src": "6673:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6673:16:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "newValue", | |
"nodeType": "YulIdentifier", | |
"src": "6652:8:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "shift_right_unsigned_dynamic", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "bits", | |
"nodeType": "YulTypedName", | |
"src": "6617:4:4", | |
"type": "" | |
}, | |
{ | |
"name": "value", | |
"nodeType": "YulTypedName", | |
"src": "6623:5:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "newValue", | |
"nodeType": "YulTypedName", | |
"src": "6633:8:4", | |
"type": "" | |
} | |
], | |
"src": "6579:117:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6753:118:4", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "6763:68:4", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6812:1:4", | |
"type": "", | |
"value": "8" | |
}, | |
{ | |
"name": "bytes", | |
"nodeType": "YulIdentifier", | |
"src": "6815:5:4" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "6808:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6808:13:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "6827:1:4", | |
"type": "", | |
"value": "0" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "6823:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6823:6:4" | |
} | |
], | |
"functionName": { | |
"name": "shift_right_unsigned_dynamic", | |
"nodeType": "YulIdentifier", | |
"src": "6779:28:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6779:51:4" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "6775:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6775:56:4" | |
}, | |
"variables": [ | |
{ | |
"name": "mask", | |
"nodeType": "YulTypedName", | |
"src": "6767:4:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "6840:25:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "6854:4:4" | |
}, | |
{ | |
"name": "mask", | |
"nodeType": "YulIdentifier", | |
"src": "6860:4:4" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "6850:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "6850:15:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "result", | |
"nodeType": "YulIdentifier", | |
"src": "6840:6:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "mask_bytes_dynamic", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "data", | |
"nodeType": "YulTypedName", | |
"src": "6730:4:4", | |
"type": "" | |
}, | |
{ | |
"name": "bytes", | |
"nodeType": "YulTypedName", | |
"src": "6736:5:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "result", | |
"nodeType": "YulTypedName", | |
"src": "6746:6:4", | |
"type": "" | |
} | |
], | |
"src": "6702:169:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "6957:214:4", | |
"statements": [ | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7090:37:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "7117:4:4" | |
}, | |
{ | |
"name": "len", | |
"nodeType": "YulIdentifier", | |
"src": "7123:3:4" | |
} | |
], | |
"functionName": { | |
"name": "mask_bytes_dynamic", | |
"nodeType": "YulIdentifier", | |
"src": "7098:18:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7098:29:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "7090:4:4" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7136:29:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "data", | |
"nodeType": "YulIdentifier", | |
"src": "7147:4:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7157:1:4", | |
"type": "", | |
"value": "2" | |
}, | |
{ | |
"name": "len", | |
"nodeType": "YulIdentifier", | |
"src": "7160:3:4" | |
} | |
], | |
"functionName": { | |
"name": "mul", | |
"nodeType": "YulIdentifier", | |
"src": "7153:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7153:11:4" | |
} | |
], | |
"functionName": { | |
"name": "or", | |
"nodeType": "YulIdentifier", | |
"src": "7144:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7144:21:4" | |
}, | |
"variableNames": [ | |
{ | |
"name": "used", | |
"nodeType": "YulIdentifier", | |
"src": "7136:4:4" | |
} | |
] | |
} | |
] | |
}, | |
"name": "extract_used_part_and_set_length_of_short_byte_array", | |
"nodeType": "YulFunctionDefinition", | |
"parameters": [ | |
{ | |
"name": "data", | |
"nodeType": "YulTypedName", | |
"src": "6938:4:4", | |
"type": "" | |
}, | |
{ | |
"name": "len", | |
"nodeType": "YulTypedName", | |
"src": "6944:3:4", | |
"type": "" | |
} | |
], | |
"returnVariables": [ | |
{ | |
"name": "used", | |
"nodeType": "YulTypedName", | |
"src": "6952:4:4", | |
"type": "" | |
} | |
], | |
"src": "6876:295:4" | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7268:1303:4", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7279:51:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "src", | |
"nodeType": "YulIdentifier", | |
"src": "7326:3:4" | |
} | |
], | |
"functionName": { | |
"name": "array_length_t_string_memory_ptr", | |
"nodeType": "YulIdentifier", | |
"src": "7293:32:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7293:37:4" | |
}, | |
"variables": [ | |
{ | |
"name": "newLen", | |
"nodeType": "YulTypedName", | |
"src": "7283:6:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7415:22:4", | |
"statements": [ | |
{ | |
"expression": { | |
"arguments": [], | |
"functionName": { | |
"name": "panic_error_0x41", | |
"nodeType": "YulIdentifier", | |
"src": "7417:16:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7417:18:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "7417:18:4" | |
} | |
] | |
}, | |
"condition": { | |
"arguments": [ | |
{ | |
"name": "newLen", | |
"nodeType": "YulIdentifier", | |
"src": "7387:6:4" | |
}, | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7395:18:4", | |
"type": "", | |
"value": "0xffffffffffffffff" | |
} | |
], | |
"functionName": { | |
"name": "gt", | |
"nodeType": "YulIdentifier", | |
"src": "7384:2:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7384:30:4" | |
}, | |
"nodeType": "YulIf", | |
"src": "7381:56:4" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7447:52:4", | |
"value": { | |
"arguments": [ | |
{ | |
"arguments": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulIdentifier", | |
"src": "7493:4:4" | |
} | |
], | |
"functionName": { | |
"name": "sload", | |
"nodeType": "YulIdentifier", | |
"src": "7487:5:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7487:11:4" | |
} | |
], | |
"functionName": { | |
"name": "extract_byte_array_length", | |
"nodeType": "YulIdentifier", | |
"src": "7461:25:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7461:38:4" | |
}, | |
"variables": [ | |
{ | |
"name": "oldLen", | |
"nodeType": "YulTypedName", | |
"src": "7451:6:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"expression": { | |
"arguments": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulIdentifier", | |
"src": "7592:4:4" | |
}, | |
{ | |
"name": "oldLen", | |
"nodeType": "YulIdentifier", | |
"src": "7598:6:4" | |
}, | |
{ | |
"name": "newLen", | |
"nodeType": "YulIdentifier", | |
"src": "7606:6:4" | |
} | |
], | |
"functionName": { | |
"name": "clean_up_bytearray_end_slots_t_string_storage", | |
"nodeType": "YulIdentifier", | |
"src": "7546:45:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7546:67:4" | |
}, | |
"nodeType": "YulExpressionStatement", | |
"src": "7546:67:4" | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7623:18:4", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7640:1:4", | |
"type": "", | |
"value": "0" | |
}, | |
"variables": [ | |
{ | |
"name": "srcOffset", | |
"nodeType": "YulTypedName", | |
"src": "7627:9:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulAssignment", | |
"src": "7651:17:4", | |
"value": { | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7664:4:4", | |
"type": "", | |
"value": "0x20" | |
}, | |
"variableNames": [ | |
{ | |
"name": "srcOffset", | |
"nodeType": "YulIdentifier", | |
"src": "7651:9:4" | |
} | |
] | |
}, | |
{ | |
"cases": [ | |
{ | |
"body": { | |
"nodeType": "YulBlock", | |
"src": "7715:611:4", | |
"statements": [ | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7729:37:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "newLen", | |
"nodeType": "YulIdentifier", | |
"src": "7748:6:4" | |
}, | |
{ | |
"arguments": [ | |
{ | |
"kind": "number", | |
"nodeType": "YulLiteral", | |
"src": "7760:4:4", | |
"type": "", | |
"value": "0x1f" | |
} | |
], | |
"functionName": { | |
"name": "not", | |
"nodeType": "YulIdentifier", | |
"src": "7756:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7756:9:4" | |
} | |
], | |
"functionName": { | |
"name": "and", | |
"nodeType": "YulIdentifier", | |
"src": "7744:3:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7744:22:4" | |
}, | |
"variables": [ | |
{ | |
"name": "loopEnd", | |
"nodeType": "YulTypedName", | |
"src": "7733:7:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7780:51:4", | |
"value": { | |
"arguments": [ | |
{ | |
"name": "slot", | |
"nodeType": "YulIdentifier", | |
"src": "7826:4:4" | |
} | |
], | |
"functionName": { | |
"name": "array_dataslot_t_string_storage", | |
"nodeType": "YulIdentifier", | |
"src": "7794:31:4" | |
}, | |
"nodeType": "YulFunctionCall", | |
"src": "7794:37:4" | |
}, | |
"variables": [ | |
{ | |
"name": "dstPtr", | |
"nodeType": "YulTypedName", | |
"src": "7784:6:4", | |
"type": "" | |
} | |
] | |
}, | |
{ | |
"nodeType": "YulVariableDeclaration", | |
"src": "7844:10:4", | |
"value": { | |
"kind |
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)
(Sorry about that, but we can’t show files that are this big right now.)