-
-
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": { |
(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.)