{"id":"2e318fd64cd5144364ad93830a9d8c6c","_format":"hh-sol-build-info-1","solcVersion":"0.8.19","solcLongVersion":"0.8.19+commit.7dd6d404","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n *     function initialize() initializer public {\n *         __ERC20_init(\"MyToken\", \"MTK\");\n *     }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n *     function initializeV2() reinitializer(2) public {\n *         __ERC20Permit_init(\"MyToken\");\n *     }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n *     _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n    /**\n     * @dev Indicates that the contract has been initialized.\n     * @custom:oz-retyped-from bool\n     */\n    uint8 private _initialized;\n\n    /**\n     * @dev Indicates that the contract is in the process of being initialized.\n     */\n    bool private _initializing;\n\n    /**\n     * @dev Triggered when the contract has been initialized or reinitialized.\n     */\n    event Initialized(uint8 version);\n\n    /**\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n     * `onlyInitializing` functions can be used to initialize parent contracts.\n     *\n     * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n     * constructor.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier initializer() {\n        bool isTopLevelCall = !_initializing;\n        require(\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n            \"Initializable: contract is already initialized\"\n        );\n        _initialized = 1;\n        if (isTopLevelCall) {\n            _initializing = true;\n        }\n        _;\n        if (isTopLevelCall) {\n            _initializing = false;\n            emit Initialized(1);\n        }\n    }\n\n    /**\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n     * used to initialize parent contracts.\n     *\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n     * are added through upgrades and that require initialization.\n     *\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\n     *\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n     * a contract, executing them in the right order is up to the developer or operator.\n     *\n     * WARNING: setting the version to 255 will prevent any future reinitialization.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier reinitializer(uint8 version) {\n        require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n        _initialized = version;\n        _initializing = true;\n        _;\n        _initializing = false;\n        emit Initialized(version);\n    }\n\n    /**\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\n     */\n    modifier onlyInitializing() {\n        require(_initializing, \"Initializable: contract is not initializing\");\n        _;\n    }\n\n    /**\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n     * through proxies.\n     *\n     * Emits an {Initialized} event the first time it is successfully executed.\n     */\n    function _disableInitializers() internal virtual {\n        require(!_initializing, \"Initializable: contract is initializing\");\n        if (_initialized != type(uint8).max) {\n            _initialized = type(uint8).max;\n            emit Initialized(type(uint8).max);\n        }\n    }\n\n    /**\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\n     */\n    function _getInitializedVersion() internal view returns (uint8) {\n        return _initialized;\n    }\n\n    /**\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n     */\n    function _isInitializing() internal view returns (bool) {\n        return _initializing;\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     *\n     * Furthermore, `isContract` will also return true if the target contract within\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n     * which only has an effect at the end of a transaction.\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n     *\n     * _Available since v4.8._\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        if (success) {\n            if (returndata.length == 0) {\n                // only check isContract if the call was successful and the return data is empty\n                // otherwise we already know that it was a contract\n                require(isContract(target), \"Address: call to non-contract\");\n            }\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason or using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            /// @solidity memory-safe-assembly\n            assembly {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert(errorMessage);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     *\n     * Furthermore, `isContract` will also return true if the target contract within\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n     * which only has an effect at the end of a transaction.\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n     *\n     * _Available since v4.8._\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        if (success) {\n            if (returndata.length == 0) {\n                // only check isContract if the call was successful and the return data is empty\n                // otherwise we already know that it was a contract\n                require(isContract(target), \"Address: call to non-contract\");\n            }\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason or using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            /// @solidity memory-safe-assembly\n            assembly {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert(errorMessage);\n        }\n    }\n}\n"},"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8.0;\n\nimport {Initializable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {IFirewall} from \"../interfaces/IFirewall.sol\";\nimport {IFirewallConsumer} from \"../interfaces/IFirewallConsumer.sol\";\nimport {IFirewallConsumerStorage} from \"../interfaces/IFirewallConsumerStorage.sol\";\n\n/**\n * @title Firewall Minimal Upgradeable Consumer Contract\n * @author David Benchimol @ Ironblocks\n * @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n *\n * The contract is the most minimal upgradeable contract that implements the FirewallConsumer interface.\n *\n */\ncontract SimpleUpgradeableFirewallConsumer is IFirewallConsumer, Initializable {\n\n    // This slot is used to store the consumer storage address\n    bytes32 private constant FIREWALL_CONSUMER_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall.consumer.storage\")) - 1);\n    bytes32 private constant FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall.consumer.initializer.firewall.admin\")) - 1);\n\n    /**\n     * @dev modifier that will run the preExecution and postExecution hooks of the firewall, applying each of\n     * the subscribed policies.\n     *\n     * NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n     * prevent the postExecution hook from running - breaking the protection provided by the firewall.\n     * If you have any questions, please refer to the Firewall's documentation and/or contact our support.\n     */\n    modifier firewallProtected() {\n        address firewallConsumerStorage = _getFirewallConsumerStorage();\n        if (firewallConsumerStorage == address(0)) {\n            _;\n            return;\n        }\n        address firewall = IFirewallConsumerStorage(firewallConsumerStorage).getFirewall();\n        if (firewall == address(0)) {\n            _;\n            return;\n        }\n        // We do this because msg.value can only be accessed in payable functions.\n        uint256 value;\n        assembly {\n            value := callvalue()\n        }\n        IFirewall(firewall).preExecution(msg.sender, msg.data, value);\n        _;\n        IFirewall(firewall).postExecution(msg.sender, msg.data, value);\n    }\n\n    /**\n     * @dev modifier similar to onlyOwner, but for the firewall admin.\n     */\n    modifier onlyFirewallAdmin() {\n        require(msg.sender == _getFirewallAdmin(), \"FirewallConsumer: not firewall admin\");\n        _;\n    }\n\n    /**\n     * @dev Allows calling an approved external Venn policy before executing a method.\n     *\n     * This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before\n     * executing a function, allowing synchronous transaction approvals.\n     *\n     * NOTE: If userNativeFee is non zero, functions using this must take into account that\n     * the value received will be slightly less than msg.value due to the fee.\n     *\n     * @param vennPolicyPayload payload to be sent to the Venn policy\n     * @param data data to be executed after the Venn policy call\n     */\n    function safeFunctionCall(\n        uint256 userNativeFee,\n        bytes calldata vennPolicyPayload,\n        bytes calldata data\n    ) external payable {\n        address firewallConsumerStorage = _getFirewallConsumerStorage();\n        address vennPolicy = IFirewallConsumerStorage(firewallConsumerStorage).getApprovedVennPolicy();\n        require(msg.value >= userNativeFee, \"FirewallConsumer: Not enough native value for fee\");\n        (bool success,) = vennPolicy.call{value: userNativeFee}(vennPolicyPayload);\n        require(success);\n        Address.functionDelegateCall(address(this), data);\n    }\n\n    /**\n     * @dev View function for the firewall admin\n     */\n    function firewallAdmin() external view returns (address) {\n        return _getFirewallAdmin();\n    }\n\n    function setFirewallConsumerStorage(address _firewallConsumerStorage) external onlyFirewallAdmin {\n        _setAddressBySlot(FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT, address(0));\n        _setAddressBySlot(FIREWALL_CONSUMER_STORAGE_SLOT, _firewallConsumerStorage);\n    }\n\n    function __SimpleUpgradeableFirewallConsumer_init(IFirewallConsumerStorage _firewallConsumerStorage, address _firewallAdmin) internal onlyInitializing {\n        require((address(_firewallConsumerStorage) != address(0)) || _firewallAdmin != address(0), \"FirewallConsumer: must have firewall consumer storage or firewall admin\");\n        address _firewallConsumerStorageAddress = address(_firewallConsumerStorage);\n        if (_firewallConsumerStorageAddress == address(0)) {\n            _setAddressBySlot(FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT, _firewallAdmin);\n            return;\n        }\n        _setAddressBySlot(FIREWALL_CONSUMER_STORAGE_SLOT, _firewallConsumerStorageAddress);\n    }\n\n    /**\n     * @dev Internal view function for the firewall admin\n     */\n    function _getFirewallAdmin() internal view returns (address) {\n        address firewallConsumerStorage = _getFirewallConsumerStorage();\n        if (firewallConsumerStorage == address(0)) {\n            return _getAddressBySlot(FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT);\n        }\n        return IFirewallConsumerStorage(firewallConsumerStorage).getFirewallAdmin();\n    }\n\n    /**\n     * @dev Internal view function for the consumer storage\n     */\n    function _getFirewallConsumerStorage() internal view returns (address) {\n        return _getAddressBySlot(FIREWALL_CONSUMER_STORAGE_SLOT);\n    }\n\n\n    /**\n     * @dev Internal helper function to set an address in a storage slot\n     * @param _slot storage slot\n     * @param _address address to be set\n     */\n    function _setAddressBySlot(bytes32 _slot, address _address) internal {\n        assembly {\n            sstore(_slot, _address)\n        }\n    }\n\n    /**\n     * @dev Internal helper function to get an address from a storage slot\n     * @param _slot storage slot\n     * @return _address from the storage slot\n     */\n    function _getAddressBySlot(bytes32 _slot) internal view returns (address _address) {\n        assembly {\n            _address := sload(_slot)\n        }\n    }\n\n}"},"contracts/interfaces/IFirewall.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\ninterface IFirewall {\n    function preExecution(address sender, bytes memory data, uint256 value) external;\n    function postExecution(address sender, bytes memory data, uint256 value) external;\n    function preExecutionPrivateInvariants(address sender, bytes memory data, uint256 value) external returns (bytes32[] calldata);\n    function postExecutionPrivateInvariants(\n        address sender,\n        bytes memory data,\n        uint256 value,\n        bytes32[] calldata preValues,\n        bytes32[] calldata postValues\n    ) external;\n}"},"contracts/interfaces/IFirewallConsumer.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\ninterface IFirewallConsumer {\n    function firewallAdmin() external view returns (address);\n}"},"contracts/interfaces/IFirewallConsumerStorage.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8.0;\n\ninterface IFirewallConsumerStorage {\n    function getFirewallAdmin() external view returns (address);\n    function getFirewall() external view returns (address);\n    function getApprovedVennPolicy() external view returns (address);\n    function getUserNativeFee() external view returns (uint256);\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":10000},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","storageLayout"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[498],"Initializable":[168]},"id":169,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:0"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":169,"sourceUnit":499,"src":"138:44:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"184:2209:0","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n     function initialize() initializer public {\n         __ERC20_init(\"MyToken\", \"MTK\");\n     }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n     function initializeV2() reinitializer(2) public {\n         __ERC20Permit_init(\"MyToken\");\n     }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n     _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":168,"linearizedBaseContracts":[168],"name":"Initializable","nameLocation":"2412:13:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":4,"nodeType":"StructuredDocumentation","src":"2432:109:0","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":6,"mutability":"mutable","name":"_initialized","nameLocation":"2560:12:0","nodeType":"VariableDeclaration","scope":168,"src":"2546:26:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5,"name":"uint8","nodeType":"ElementaryTypeName","src":"2546:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":7,"nodeType":"StructuredDocumentation","src":"2579:91:0","text":" @dev Indicates that the contract is in the process of being initialized."},"id":9,"mutability":"mutable","name":"_initializing","nameLocation":"2688:13:0","nodeType":"VariableDeclaration","scope":168,"src":"2675:26:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8,"name":"bool","nodeType":"ElementaryTypeName","src":"2675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":10,"nodeType":"StructuredDocumentation","src":"2708:90:0","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":14,"name":"Initialized","nameLocation":"2809:11:0","nodeType":"EventDefinition","parameters":{"id":13,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2827:7:0","nodeType":"VariableDeclaration","scope":14,"src":"2821:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11,"name":"uint8","nodeType":"ElementaryTypeName","src":"2821:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2820:15:0"},"src":"2803:33:0"},{"body":{"id":69,"nodeType":"Block","src":"3269:483:0","statements":[{"assignments":[18],"declarations":[{"constant":false,"id":18,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3284:14:0","nodeType":"VariableDeclaration","scope":69,"src":"3279:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17,"name":"bool","nodeType":"ElementaryTypeName","src":"3279:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":21,"initialValue":{"id":20,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3301:14:0","subExpression":{"id":19,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"3302:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3279:36:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":42,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":27,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"3347:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":26,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"3365:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":25,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3380:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3365:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3347:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":28,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3346:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":40,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":36,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3387:45:0","subExpression":{"arguments":[{"arguments":[{"id":33,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3426:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$168","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$168","typeString":"contract Initializable"}],"id":32,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3418:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31,"name":"address","nodeType":"ElementaryTypeName","src":"3418:7:0","typeDescriptions":{}}},"id":34,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":29,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":498,"src":"3388:18:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$498_$","typeString":"type(library AddressUpgradeable)"}},"id":30,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3407:10:0","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":186,"src":"3388:29:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":35,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3388:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":39,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":37,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"3436:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":38,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3452:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3436:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3387:66:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":41,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3386:68:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3346:108:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":43,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3468:48:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":22,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3325:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":44,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:201:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":45,"nodeType":"ExpressionStatement","src":"3325:201:0"},{"expression":{"id":48,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":46,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"3536:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":47,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3536:16:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":49,"nodeType":"ExpressionStatement","src":"3536:16:0"},{"condition":{"id":50,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"3566:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56,"nodeType":"IfStatement","src":"3562:65:0","trueBody":{"id":55,"nodeType":"Block","src":"3582:45:0","statements":[{"expression":{"id":53,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"3596:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":52,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3612:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3596:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54,"nodeType":"ExpressionStatement","src":"3596:20:0"}]}},{"id":57,"nodeType":"PlaceholderStatement","src":"3636:1:0"},{"condition":{"id":58,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"3651:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68,"nodeType":"IfStatement","src":"3647:99:0","trueBody":{"id":67,"nodeType":"Block","src":"3667:79:0","statements":[{"expression":{"id":61,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":59,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"3681:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":60,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3697:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3681:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":62,"nodeType":"ExpressionStatement","src":"3681:21:0"},{"eventCall":{"arguments":[{"hexValue":"31","id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":63,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14,"src":"3721:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":66,"nodeType":"EmitStatement","src":"3716:19:0"}]}}]},"documentation":{"id":15,"nodeType":"StructuredDocumentation","src":"2842:399:0","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":70,"name":"initializer","nameLocation":"3255:11:0","nodeType":"ModifierDefinition","parameters":{"id":16,"nodeType":"ParameterList","parameters":[],"src":"3266:2:0"},"src":"3246:506:0","virtual":false,"visibility":"internal"},{"body":{"id":102,"nodeType":"Block","src":"4863:255:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":81,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4881:14:0","subExpression":{"id":76,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"4882:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":80,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"4899:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":79,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"4914:7:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4899:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4881:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":82,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4923:48:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":75,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4873:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":83,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:99:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84,"nodeType":"ExpressionStatement","src":"4873:99:0"},{"expression":{"id":87,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":85,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"4982:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"4997:7:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4982:22:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":88,"nodeType":"ExpressionStatement","src":"4982:22:0"},{"expression":{"id":91,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":89,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"5014:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":90,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5030:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5014:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":92,"nodeType":"ExpressionStatement","src":"5014:20:0"},{"id":93,"nodeType":"PlaceholderStatement","src":"5044:1:0"},{"expression":{"id":96,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":94,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"5055:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":95,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5071:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5055:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":97,"nodeType":"ExpressionStatement","src":"5055:21:0"},{"eventCall":{"arguments":[{"id":99,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"5103:7:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":98,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14,"src":"5091:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":101,"nodeType":"EmitStatement","src":"5086:25:0"}]},"documentation":{"id":71,"nodeType":"StructuredDocumentation","src":"3758:1062:0","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":103,"name":"reinitializer","nameLocation":"4834:13:0","nodeType":"ModifierDefinition","parameters":{"id":74,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73,"mutability":"mutable","name":"version","nameLocation":"4854:7:0","nodeType":"VariableDeclaration","scope":103,"src":"4848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":72,"name":"uint8","nodeType":"ElementaryTypeName","src":"4848:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4847:15:0"},"src":"4825:293:0","virtual":false,"visibility":"internal"},{"body":{"id":112,"nodeType":"Block","src":"5356:97:0","statements":[{"expression":{"arguments":[{"id":107,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"5374:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5389:45:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":106,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5366:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:69:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":110,"nodeType":"ExpressionStatement","src":"5366:69:0"},{"id":111,"nodeType":"PlaceholderStatement","src":"5445:1:0"}]},"documentation":{"id":104,"nodeType":"StructuredDocumentation","src":"5124:199:0","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":113,"name":"onlyInitializing","nameLocation":"5337:16:0","nodeType":"ModifierDefinition","parameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"5353:2:0"},"src":"5328:125:0","virtual":false,"visibility":"internal"},{"body":{"id":148,"nodeType":"Block","src":"5988:231:0","statements":[{"expression":{"arguments":[{"id":119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6006:14:0","subExpression":{"id":118,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"6007:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6022:41:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":117,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5998:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:66:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":122,"nodeType":"ExpressionStatement","src":"5998:66:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":123,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"6078:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":126,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6099:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":125,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":124,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6094:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6094:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6106:3:0","memberName":"max","nodeType":"MemberAccess","src":"6094:15:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6078:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":147,"nodeType":"IfStatement","src":"6074:139:0","trueBody":{"id":146,"nodeType":"Block","src":"6111:102:0","statements":[{"expression":{"id":136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":130,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"6125:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6145:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":132,"name":"uint8","nodeType":"ElementaryTypeName","src":"6145:5:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":131,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6140:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6152:3:0","memberName":"max","nodeType":"MemberAccess","src":"6140:15:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6125:30:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":137,"nodeType":"ExpressionStatement","src":"6125:30:0"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6191:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":140,"name":"uint8","nodeType":"ElementaryTypeName","src":"6191:5:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":139,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6186:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6198:3:0","memberName":"max","nodeType":"MemberAccess","src":"6186:15:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":138,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14,"src":"6174:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":145,"nodeType":"EmitStatement","src":"6169:33:0"}]}}]},"documentation":{"id":114,"nodeType":"StructuredDocumentation","src":"5459:475:0","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":149,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5948:20:0","nodeType":"FunctionDefinition","parameters":{"id":115,"nodeType":"ParameterList","parameters":[],"src":"5968:2:0"},"returnParameters":{"id":116,"nodeType":"ParameterList","parameters":[],"src":"5988:0:0"},"scope":168,"src":"5939:280:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":157,"nodeType":"Block","src":"6393:36:0","statements":[{"expression":{"id":155,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"6410:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":154,"id":156,"nodeType":"Return","src":"6403:19:0"}]},"documentation":{"id":150,"nodeType":"StructuredDocumentation","src":"6225:99:0","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":158,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6338:22:0","nodeType":"FunctionDefinition","parameters":{"id":151,"nodeType":"ParameterList","parameters":[],"src":"6360:2:0"},"returnParameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":158,"src":"6386:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":152,"name":"uint8","nodeType":"ElementaryTypeName","src":"6386:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6385:7:0"},"scope":168,"src":"6329:100:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":166,"nodeType":"Block","src":"6601:37:0","statements":[{"expression":{"id":164,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"6618:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":163,"id":165,"nodeType":"Return","src":"6611:20:0"}]},"documentation":{"id":159,"nodeType":"StructuredDocumentation","src":"6435:105:0","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":167,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6554:15:0","nodeType":"FunctionDefinition","parameters":{"id":160,"nodeType":"ParameterList","parameters":[],"src":"6569:2:0"},"returnParameters":{"id":163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":162,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":167,"src":"6595:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":161,"name":"bool","nodeType":"ElementaryTypeName","src":"6595:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:6:0"},"scope":168,"src":"6545:93:0","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":169,"src":"2394:4246:0","usedErrors":[]}],"src":"113:6528:0"},"id":0},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[498]},"id":499,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":170,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:1"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":171,"nodeType":"StructuredDocumentation","src":"126:67:1","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":498,"linearizedBaseContracts":[498],"name":"AddressUpgradeable","nameLocation":"202:18:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":185,"nodeType":"Block","src":"1489:254:1","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":179,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"1713:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:4:1","memberName":"code","nodeType":"MemberAccess","src":"1713:12:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:1","memberName":"length","nodeType":"MemberAccess","src":"1713:19:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":178,"id":184,"nodeType":"Return","src":"1706:30:1"}]},"documentation":{"id":172,"nodeType":"StructuredDocumentation","src":"227:1191:1","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":186,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1432:10:1","nodeType":"FunctionDefinition","parameters":{"id":175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":174,"mutability":"mutable","name":"account","nameLocation":"1451:7:1","nodeType":"VariableDeclaration","scope":186,"src":"1443:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":173,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:17:1"},"returnParameters":{"id":178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":186,"src":"1483:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":176,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:6:1"},"scope":498,"src":"1423:320:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":219,"nodeType":"Block","src":"2729:241:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":197,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2755:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$498","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$498","typeString":"library AddressUpgradeable"}],"id":196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":195,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:1","typeDescriptions":{}}},"id":198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:7:1","memberName":"balance","nodeType":"MemberAccess","src":"2747:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":200,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":191,"src":"2772:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2747:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2780:31:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":194,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2739:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:73:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":204,"nodeType":"ExpressionStatement","src":"2739:73:1"},{"assignments":[206,null],"declarations":[{"constant":false,"id":206,"mutability":"mutable","name":"success","nameLocation":"2829:7:1","nodeType":"VariableDeclaration","scope":219,"src":"2824:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":205,"name":"bool","nodeType":"ElementaryTypeName","src":"2824:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":213,"initialValue":{"arguments":[{"hexValue":"","id":211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2872:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":207,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"2842:9:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2852:4:1","memberName":"call","nodeType":"MemberAccess","src":"2842:14:1","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":209,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":191,"src":"2864:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2842:29:1","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:1"},{"expression":{"arguments":[{"id":215,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":206,"src":"2893:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2902:60:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":214,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2885:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2885:78:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":218,"nodeType":"ExpressionStatement","src":"2885:78:1"}]},"documentation":{"id":187,"nodeType":"StructuredDocumentation","src":"1749:904:1","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":220,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2667:9:1","nodeType":"FunctionDefinition","parameters":{"id":192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":189,"mutability":"mutable","name":"recipient","nameLocation":"2693:9:1","nodeType":"VariableDeclaration","scope":220,"src":"2677:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":188,"name":"address","nodeType":"ElementaryTypeName","src":"2677:15:1","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":191,"mutability":"mutable","name":"amount","nameLocation":"2712:6:1","nodeType":"VariableDeclaration","scope":220,"src":"2704:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":190,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:1"},"returnParameters":{"id":193,"nodeType":"ParameterList","parameters":[],"src":"2729:0:1"},"scope":498,"src":"2658:312:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":237,"nodeType":"Block","src":"3801:96:1","statements":[{"expression":{"arguments":[{"id":231,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"3840:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":232,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"3848:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3857:32:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":230,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[278,322],"referencedDeclaration":322,"src":"3818:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:72:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":229,"id":236,"nodeType":"Return","src":"3811:79:1"}]},"documentation":{"id":221,"nodeType":"StructuredDocumentation","src":"2976:731:1","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":238,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3721:12:1","nodeType":"FunctionDefinition","parameters":{"id":226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":223,"mutability":"mutable","name":"target","nameLocation":"3742:6:1","nodeType":"VariableDeclaration","scope":238,"src":"3734:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"3734:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":225,"mutability":"mutable","name":"data","nameLocation":"3763:4:1","nodeType":"VariableDeclaration","scope":238,"src":"3750:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":224,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3733:35:1"},"returnParameters":{"id":229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":228,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":238,"src":"3787:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":227,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3786:14:1"},"scope":498,"src":"3712:185:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":257,"nodeType":"Block","src":"4266:76:1","statements":[{"expression":{"arguments":[{"id":251,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":241,"src":"4305:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":252,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"4313:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4319:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":254,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"4322:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":250,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[278,322],"referencedDeclaration":322,"src":"4283:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4283:52:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":249,"id":256,"nodeType":"Return","src":"4276:59:1"}]},"documentation":{"id":239,"nodeType":"StructuredDocumentation","src":"3903:211:1","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":258,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4128:12:1","nodeType":"FunctionDefinition","parameters":{"id":246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":241,"mutability":"mutable","name":"target","nameLocation":"4158:6:1","nodeType":"VariableDeclaration","scope":258,"src":"4150:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":240,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":243,"mutability":"mutable","name":"data","nameLocation":"4187:4:1","nodeType":"VariableDeclaration","scope":258,"src":"4174:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":242,"name":"bytes","nodeType":"ElementaryTypeName","src":"4174:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":245,"mutability":"mutable","name":"errorMessage","nameLocation":"4215:12:1","nodeType":"VariableDeclaration","scope":258,"src":"4201:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":244,"name":"string","nodeType":"ElementaryTypeName","src":"4201:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4140:93:1"},"returnParameters":{"id":249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":248,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":258,"src":"4252:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":247,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4251:14:1"},"scope":498,"src":"4119:223:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":277,"nodeType":"Block","src":"4817:111:1","statements":[{"expression":{"arguments":[{"id":271,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"4856:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":272,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"4864:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":273,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":265,"src":"4870:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4877:43:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":270,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[278,322],"referencedDeclaration":322,"src":"4834:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:87:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":269,"id":276,"nodeType":"Return","src":"4827:94:1"}]},"documentation":{"id":259,"nodeType":"StructuredDocumentation","src":"4348:351:1","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":278,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4713:21:1","nodeType":"FunctionDefinition","parameters":{"id":266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":261,"mutability":"mutable","name":"target","nameLocation":"4743:6:1","nodeType":"VariableDeclaration","scope":278,"src":"4735:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":260,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":263,"mutability":"mutable","name":"data","nameLocation":"4764:4:1","nodeType":"VariableDeclaration","scope":278,"src":"4751:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":262,"name":"bytes","nodeType":"ElementaryTypeName","src":"4751:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":265,"mutability":"mutable","name":"value","nameLocation":"4778:5:1","nodeType":"VariableDeclaration","scope":278,"src":"4770:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":264,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4734:50:1"},"returnParameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":278,"src":"4803:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":267,"name":"bytes","nodeType":"ElementaryTypeName","src":"4803:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:14:1"},"scope":498,"src":"4704:224:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":321,"nodeType":"Block","src":"5355:267:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":295,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5381:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$498","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$498","typeString":"library AddressUpgradeable"}],"id":294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":293,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:1","typeDescriptions":{}}},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5387:7:1","memberName":"balance","nodeType":"MemberAccess","src":"5373:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":298,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"5398:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5405:40:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":292,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5365:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:81:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":302,"nodeType":"ExpressionStatement","src":"5365:81:1"},{"assignments":[304,306],"declarations":[{"constant":false,"id":304,"mutability":"mutable","name":"success","nameLocation":"5462:7:1","nodeType":"VariableDeclaration","scope":321,"src":"5457:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":303,"name":"bool","nodeType":"ElementaryTypeName","src":"5457:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":306,"mutability":"mutable","name":"returndata","nameLocation":"5484:10:1","nodeType":"VariableDeclaration","scope":321,"src":"5471:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":305,"name":"bytes","nodeType":"ElementaryTypeName","src":"5471:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":313,"initialValue":{"arguments":[{"id":311,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":283,"src":"5524:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":307,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":281,"src":"5498:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5505:4:1","memberName":"call","nodeType":"MemberAccess","src":"5498:11:1","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"5517:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5498:25:1","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5456:73:1"},{"expression":{"arguments":[{"id":315,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":281,"src":"5573:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":316,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"5581:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":317,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":306,"src":"5590:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":318,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"5602:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":314,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"5546:26:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5546:69:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":291,"id":320,"nodeType":"Return","src":"5539:76:1"}]},"documentation":{"id":279,"nodeType":"StructuredDocumentation","src":"4934:237:1","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":322,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5185:21:1","nodeType":"FunctionDefinition","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":281,"mutability":"mutable","name":"target","nameLocation":"5224:6:1","nodeType":"VariableDeclaration","scope":322,"src":"5216:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":280,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":283,"mutability":"mutable","name":"data","nameLocation":"5253:4:1","nodeType":"VariableDeclaration","scope":322,"src":"5240:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":282,"name":"bytes","nodeType":"ElementaryTypeName","src":"5240:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":285,"mutability":"mutable","name":"value","nameLocation":"5275:5:1","nodeType":"VariableDeclaration","scope":322,"src":"5267:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"errorMessage","nameLocation":"5304:12:1","nodeType":"VariableDeclaration","scope":322,"src":"5290:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":286,"name":"string","nodeType":"ElementaryTypeName","src":"5290:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5206:116:1"},"returnParameters":{"id":291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":322,"src":"5341:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":289,"name":"bytes","nodeType":"ElementaryTypeName","src":"5341:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5340:14:1"},"scope":498,"src":"5176:446:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":338,"nodeType":"Block","src":"5899:97:1","statements":[{"expression":{"arguments":[{"id":333,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"5935:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":334,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"5943:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5949:39:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":332,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[339,368],"referencedDeclaration":368,"src":"5916:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:73:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":331,"id":337,"nodeType":"Return","src":"5909:80:1"}]},"documentation":{"id":323,"nodeType":"StructuredDocumentation","src":"5628:166:1","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":339,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5808:18:1","nodeType":"FunctionDefinition","parameters":{"id":328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"mutability":"mutable","name":"target","nameLocation":"5835:6:1","nodeType":"VariableDeclaration","scope":339,"src":"5827:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":324,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":327,"mutability":"mutable","name":"data","nameLocation":"5856:4:1","nodeType":"VariableDeclaration","scope":339,"src":"5843:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":326,"name":"bytes","nodeType":"ElementaryTypeName","src":"5843:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5826:35:1"},"returnParameters":{"id":331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":330,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":339,"src":"5885:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":329,"name":"bytes","nodeType":"ElementaryTypeName","src":"5885:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5884:14:1"},"scope":498,"src":"5799:197:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":367,"nodeType":"Block","src":"6338:168:1","statements":[{"assignments":[352,354],"declarations":[{"constant":false,"id":352,"mutability":"mutable","name":"success","nameLocation":"6354:7:1","nodeType":"VariableDeclaration","scope":367,"src":"6349:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":351,"name":"bool","nodeType":"ElementaryTypeName","src":"6349:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":354,"mutability":"mutable","name":"returndata","nameLocation":"6376:10:1","nodeType":"VariableDeclaration","scope":367,"src":"6363:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":353,"name":"bytes","nodeType":"ElementaryTypeName","src":"6363:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":359,"initialValue":{"arguments":[{"id":357,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":344,"src":"6408:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":355,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"6390:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:10:1","memberName":"staticcall","nodeType":"MemberAccess","src":"6390:17:1","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6348:65:1"},{"expression":{"arguments":[{"id":361,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"6457:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":362,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"6465:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":363,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":354,"src":"6474:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":364,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"6486:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":360,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"6430:26:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:69:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":350,"id":366,"nodeType":"Return","src":"6423:76:1"}]},"documentation":{"id":340,"nodeType":"StructuredDocumentation","src":"6002:173:1","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":368,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6189:18:1","nodeType":"FunctionDefinition","parameters":{"id":347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":342,"mutability":"mutable","name":"target","nameLocation":"6225:6:1","nodeType":"VariableDeclaration","scope":368,"src":"6217:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":341,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":344,"mutability":"mutable","name":"data","nameLocation":"6254:4:1","nodeType":"VariableDeclaration","scope":368,"src":"6241:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":343,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":346,"mutability":"mutable","name":"errorMessage","nameLocation":"6282:12:1","nodeType":"VariableDeclaration","scope":368,"src":"6268:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":345,"name":"string","nodeType":"ElementaryTypeName","src":"6268:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6207:93:1"},"returnParameters":{"id":350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":368,"src":"6324:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":348,"name":"bytes","nodeType":"ElementaryTypeName","src":"6324:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6323:14:1"},"scope":498,"src":"6180:326:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":384,"nodeType":"Block","src":"6782:101:1","statements":[{"expression":{"arguments":[{"id":379,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":371,"src":"6820:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":380,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":373,"src":"6828:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6834:41:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":378,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[385,414],"referencedDeclaration":414,"src":"6799:20:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:77:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":377,"id":383,"nodeType":"Return","src":"6792:84:1"}]},"documentation":{"id":369,"nodeType":"StructuredDocumentation","src":"6512:168:1","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":385,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6694:20:1","nodeType":"FunctionDefinition","parameters":{"id":374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":371,"mutability":"mutable","name":"target","nameLocation":"6723:6:1","nodeType":"VariableDeclaration","scope":385,"src":"6715:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":370,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":373,"mutability":"mutable","name":"data","nameLocation":"6744:4:1","nodeType":"VariableDeclaration","scope":385,"src":"6731:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":372,"name":"bytes","nodeType":"ElementaryTypeName","src":"6731:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6714:35:1"},"returnParameters":{"id":377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":376,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":385,"src":"6768:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":375,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:14:1"},"scope":498,"src":"6685:198:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":413,"nodeType":"Block","src":"7224:170:1","statements":[{"assignments":[398,400],"declarations":[{"constant":false,"id":398,"mutability":"mutable","name":"success","nameLocation":"7240:7:1","nodeType":"VariableDeclaration","scope":413,"src":"7235:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":397,"name":"bool","nodeType":"ElementaryTypeName","src":"7235:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":400,"mutability":"mutable","name":"returndata","nameLocation":"7262:10:1","nodeType":"VariableDeclaration","scope":413,"src":"7249:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":399,"name":"bytes","nodeType":"ElementaryTypeName","src":"7249:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":405,"initialValue":{"arguments":[{"id":403,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":390,"src":"7296:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":401,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"7276:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7283:12:1","memberName":"delegatecall","nodeType":"MemberAccess","src":"7276:19:1","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7234:67:1"},{"expression":{"arguments":[{"id":407,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"7345:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":408,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":398,"src":"7353:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":409,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"7362:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":410,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"7374:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":406,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"7318:26:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:69:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":396,"id":412,"nodeType":"Return","src":"7311:76:1"}]},"documentation":{"id":386,"nodeType":"StructuredDocumentation","src":"6889:175:1","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":414,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7078:20:1","nodeType":"FunctionDefinition","parameters":{"id":393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"target","nameLocation":"7116:6:1","nodeType":"VariableDeclaration","scope":414,"src":"7108:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":387,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"data","nameLocation":"7145:4:1","nodeType":"VariableDeclaration","scope":414,"src":"7132:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":389,"name":"bytes","nodeType":"ElementaryTypeName","src":"7132:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":392,"mutability":"mutable","name":"errorMessage","nameLocation":"7173:12:1","nodeType":"VariableDeclaration","scope":414,"src":"7159:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":391,"name":"string","nodeType":"ElementaryTypeName","src":"7159:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7098:93:1"},"returnParameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":395,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":414,"src":"7210:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":394,"name":"bytes","nodeType":"ElementaryTypeName","src":"7210:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7209:14:1"},"scope":498,"src":"7069:325:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":452,"nodeType":"Block","src":"7876:434:1","statements":[{"condition":{"id":428,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"7890:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":450,"nodeType":"Block","src":"8246:58:1","statements":[{"expression":{"arguments":[{"id":446,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"8268:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":447,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":423,"src":"8280:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":445,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"8260:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":449,"nodeType":"ExpressionStatement","src":"8260:33:1"}]},"id":451,"nodeType":"IfStatement","src":"7886:418:1","trueBody":{"id":444,"nodeType":"Block","src":"7899:341:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":429,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"7917:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7928:6:1","memberName":"length","nodeType":"MemberAccess","src":"7917:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7938:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7917:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":441,"nodeType":"IfStatement","src":"7913:286:1","trueBody":{"id":440,"nodeType":"Block","src":"7941:258:1","statements":[{"expression":{"arguments":[{"arguments":[{"id":435,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"8143:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":434,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":186,"src":"8132:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8152:31:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":433,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8124:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8124:60:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":439,"nodeType":"ExpressionStatement","src":"8124:60:1"}]}},{"expression":{"id":442,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"8219:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":427,"id":443,"nodeType":"Return","src":"8212:17:1"}]}}]},"documentation":{"id":415,"nodeType":"StructuredDocumentation","src":"7400:277:1","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":453,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7691:26:1","nodeType":"FunctionDefinition","parameters":{"id":424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":417,"mutability":"mutable","name":"target","nameLocation":"7735:6:1","nodeType":"VariableDeclaration","scope":453,"src":"7727:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":416,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":419,"mutability":"mutable","name":"success","nameLocation":"7756:7:1","nodeType":"VariableDeclaration","scope":453,"src":"7751:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":418,"name":"bool","nodeType":"ElementaryTypeName","src":"7751:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":421,"mutability":"mutable","name":"returndata","nameLocation":"7786:10:1","nodeType":"VariableDeclaration","scope":453,"src":"7773:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":420,"name":"bytes","nodeType":"ElementaryTypeName","src":"7773:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":423,"mutability":"mutable","name":"errorMessage","nameLocation":"7820:12:1","nodeType":"VariableDeclaration","scope":453,"src":"7806:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":422,"name":"string","nodeType":"ElementaryTypeName","src":"7806:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7717:121:1"},"returnParameters":{"id":427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":453,"src":"7862:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":425,"name":"bytes","nodeType":"ElementaryTypeName","src":"7862:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:14:1"},"scope":498,"src":"7682:628:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":476,"nodeType":"Block","src":"8691:135:1","statements":[{"condition":{"id":465,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":456,"src":"8705:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":474,"nodeType":"Block","src":"8762:58:1","statements":[{"expression":{"arguments":[{"id":470,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"8784:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":471,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":460,"src":"8796:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":469,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"8776:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":473,"nodeType":"ExpressionStatement","src":"8776:33:1"}]},"id":475,"nodeType":"IfStatement","src":"8701:119:1","trueBody":{"id":468,"nodeType":"Block","src":"8714:42:1","statements":[{"expression":{"id":466,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"8735:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":464,"id":467,"nodeType":"Return","src":"8728:17:1"}]}}]},"documentation":{"id":454,"nodeType":"StructuredDocumentation","src":"8316:210:1","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":477,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8540:16:1","nodeType":"FunctionDefinition","parameters":{"id":461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"success","nameLocation":"8571:7:1","nodeType":"VariableDeclaration","scope":477,"src":"8566:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":455,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":458,"mutability":"mutable","name":"returndata","nameLocation":"8601:10:1","nodeType":"VariableDeclaration","scope":477,"src":"8588:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":457,"name":"bytes","nodeType":"ElementaryTypeName","src":"8588:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":460,"mutability":"mutable","name":"errorMessage","nameLocation":"8635:12:1","nodeType":"VariableDeclaration","scope":477,"src":"8621:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":459,"name":"string","nodeType":"ElementaryTypeName","src":"8621:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8556:97:1"},"returnParameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":463,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":477,"src":"8677:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":462,"name":"bytes","nodeType":"ElementaryTypeName","src":"8677:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8676:14:1"},"scope":498,"src":"8531:295:1","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":496,"nodeType":"Block","src":"8915:457:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":484,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":479,"src":"8991:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9002:6:1","memberName":"length","nodeType":"MemberAccess","src":"8991:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9011:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8991:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":494,"nodeType":"Block","src":"9321:45:1","statements":[{"expression":{"arguments":[{"id":491,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":481,"src":"9342:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":490,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9335:6:1","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9335:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":493,"nodeType":"ExpressionStatement","src":"9335:20:1"}]},"id":495,"nodeType":"IfStatement","src":"8987:379:1","trueBody":{"id":489,"nodeType":"Block","src":"9014:301:1","statements":[{"AST":{"nodeType":"YulBlock","src":"9172:133:1","statements":[{"nodeType":"YulVariableDeclaration","src":"9190:40:1","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9219:10:1"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9213:5:1"},"nodeType":"YulFunctionCall","src":"9213:17:1"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9194:15:1","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9258:2:1","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9262:10:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9254:3:1"},"nodeType":"YulFunctionCall","src":"9254:19:1"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9275:15:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9247:6:1"},"nodeType":"YulFunctionCall","src":"9247:44:1"},"nodeType":"YulExpressionStatement","src":"9247:44:1"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":479,"isOffset":false,"isSlot":false,"src":"9219:10:1","valueSize":1},{"declaration":479,"isOffset":false,"isSlot":false,"src":"9262:10:1","valueSize":1}],"id":488,"nodeType":"InlineAssembly","src":"9163:142:1"}]}}]},"id":497,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8841:7:1","nodeType":"FunctionDefinition","parameters":{"id":482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":479,"mutability":"mutable","name":"returndata","nameLocation":"8862:10:1","nodeType":"VariableDeclaration","scope":497,"src":"8849:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":478,"name":"bytes","nodeType":"ElementaryTypeName","src":"8849:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":481,"mutability":"mutable","name":"errorMessage","nameLocation":"8888:12:1","nodeType":"VariableDeclaration","scope":497,"src":"8874:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":480,"name":"string","nodeType":"ElementaryTypeName","src":"8874:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8848:53:1"},"returnParameters":{"id":483,"nodeType":"ParameterList","parameters":[],"src":"8915:0:1"},"scope":498,"src":"8832:540:1","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":499,"src":"194:9180:1","usedErrors":[]}],"src":"101:9274:1"},"id":1},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[828]},"id":829,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":500,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":501,"nodeType":"StructuredDocumentation","src":"126:67:2","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":828,"linearizedBaseContracts":[828],"name":"Address","nameLocation":"202:7:2","nodeType":"ContractDefinition","nodes":[{"body":{"id":515,"nodeType":"Block","src":"1478:254:2","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":509,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"1702:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1710:4:2","memberName":"code","nodeType":"MemberAccess","src":"1702:12:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1715:6:2","memberName":"length","nodeType":"MemberAccess","src":"1702:19:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1702:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":508,"id":514,"nodeType":"Return","src":"1695:30:2"}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"216:1191:2","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":516,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1421:10:2","nodeType":"FunctionDefinition","parameters":{"id":505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"account","nameLocation":"1440:7:2","nodeType":"VariableDeclaration","scope":516,"src":"1432:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":503,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1431:17:2"},"returnParameters":{"id":508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":507,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":516,"src":"1472:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":506,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1471:6:2"},"scope":828,"src":"1412:320:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":549,"nodeType":"Block","src":"2718:241:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":527,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2744:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$828","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$828","typeString":"library Address"}],"id":526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2736:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:2","typeDescriptions":{}}},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2736:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2750:7:2","memberName":"balance","nodeType":"MemberAccess","src":"2736:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":530,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":521,"src":"2761:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:31:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:31:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":524,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2728:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:73:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":534,"nodeType":"ExpressionStatement","src":"2728:73:2"},{"assignments":[536,null],"declarations":[{"constant":false,"id":536,"mutability":"mutable","name":"success","nameLocation":"2818:7:2","nodeType":"VariableDeclaration","scope":549,"src":"2813:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":535,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":543,"initialValue":{"arguments":[{"hexValue":"","id":541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2861:2:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":537,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":519,"src":"2831:9:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2841:4:2","memberName":"call","nodeType":"MemberAccess","src":"2831:14:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":539,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":521,"src":"2853:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2831:29:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:33:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2812:52:2"},{"expression":{"arguments":[{"id":545,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":536,"src":"2882:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2891:60:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":544,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2874:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:78:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":548,"nodeType":"ExpressionStatement","src":"2874:78:2"}]},"documentation":{"id":517,"nodeType":"StructuredDocumentation","src":"1738:904:2","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":550,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2656:9:2","nodeType":"FunctionDefinition","parameters":{"id":522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":519,"mutability":"mutable","name":"recipient","nameLocation":"2682:9:2","nodeType":"VariableDeclaration","scope":550,"src":"2666:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":518,"name":"address","nodeType":"ElementaryTypeName","src":"2666:15:2","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":521,"mutability":"mutable","name":"amount","nameLocation":"2701:6:2","nodeType":"VariableDeclaration","scope":550,"src":"2693:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":520,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:43:2"},"returnParameters":{"id":523,"nodeType":"ParameterList","parameters":[],"src":"2718:0:2"},"scope":828,"src":"2647:312:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":567,"nodeType":"Block","src":"3790:96:2","statements":[{"expression":{"arguments":[{"id":561,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"3829:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":562,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":555,"src":"3837:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:32:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":560,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[608,652],"referencedDeclaration":652,"src":"3807:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3807:72:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":559,"id":566,"nodeType":"Return","src":"3800:79:2"}]},"documentation":{"id":551,"nodeType":"StructuredDocumentation","src":"2965:731:2","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":568,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3710:12:2","nodeType":"FunctionDefinition","parameters":{"id":556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":553,"mutability":"mutable","name":"target","nameLocation":"3731:6:2","nodeType":"VariableDeclaration","scope":568,"src":"3723:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":552,"name":"address","nodeType":"ElementaryTypeName","src":"3723:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":555,"mutability":"mutable","name":"data","nameLocation":"3752:4:2","nodeType":"VariableDeclaration","scope":568,"src":"3739:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":554,"name":"bytes","nodeType":"ElementaryTypeName","src":"3739:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3722:35:2"},"returnParameters":{"id":559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":558,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":568,"src":"3776:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":557,"name":"bytes","nodeType":"ElementaryTypeName","src":"3776:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:14:2"},"scope":828,"src":"3701:185:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":587,"nodeType":"Block","src":"4255:76:2","statements":[{"expression":{"arguments":[{"id":581,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"4294:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":582,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"4302:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":584,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":575,"src":"4311:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":580,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[608,652],"referencedDeclaration":652,"src":"4272:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4272:52:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":579,"id":586,"nodeType":"Return","src":"4265:59:2"}]},"documentation":{"id":569,"nodeType":"StructuredDocumentation","src":"3892:211:2","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":588,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4117:12:2","nodeType":"FunctionDefinition","parameters":{"id":576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":571,"mutability":"mutable","name":"target","nameLocation":"4147:6:2","nodeType":"VariableDeclaration","scope":588,"src":"4139:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":570,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":573,"mutability":"mutable","name":"data","nameLocation":"4176:4:2","nodeType":"VariableDeclaration","scope":588,"src":"4163:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":572,"name":"bytes","nodeType":"ElementaryTypeName","src":"4163:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":575,"mutability":"mutable","name":"errorMessage","nameLocation":"4204:12:2","nodeType":"VariableDeclaration","scope":588,"src":"4190:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":574,"name":"string","nodeType":"ElementaryTypeName","src":"4190:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4129:93:2"},"returnParameters":{"id":579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":588,"src":"4241:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":577,"name":"bytes","nodeType":"ElementaryTypeName","src":"4241:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4240:14:2"},"scope":828,"src":"4108:223:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":607,"nodeType":"Block","src":"4806:111:2","statements":[{"expression":{"arguments":[{"id":601,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":591,"src":"4845:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":602,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":593,"src":"4853:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":603,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":595,"src":"4859:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4866:43:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":600,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[608,652],"referencedDeclaration":652,"src":"4823:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:87:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":599,"id":606,"nodeType":"Return","src":"4816:94:2"}]},"documentation":{"id":589,"nodeType":"StructuredDocumentation","src":"4337:351:2","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":608,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4702:21:2","nodeType":"FunctionDefinition","parameters":{"id":596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":591,"mutability":"mutable","name":"target","nameLocation":"4732:6:2","nodeType":"VariableDeclaration","scope":608,"src":"4724:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":590,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":593,"mutability":"mutable","name":"data","nameLocation":"4753:4:2","nodeType":"VariableDeclaration","scope":608,"src":"4740:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":592,"name":"bytes","nodeType":"ElementaryTypeName","src":"4740:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":595,"mutability":"mutable","name":"value","nameLocation":"4767:5:2","nodeType":"VariableDeclaration","scope":608,"src":"4759:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":594,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4723:50:2"},"returnParameters":{"id":599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":608,"src":"4792:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":597,"name":"bytes","nodeType":"ElementaryTypeName","src":"4792:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4791:14:2"},"scope":828,"src":"4693:224:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":651,"nodeType":"Block","src":"5344:267:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":625,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5370:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$828","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$828","typeString":"library Address"}],"id":624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5362:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":623,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:2","typeDescriptions":{}}},"id":626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5362:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5376:7:2","memberName":"balance","nodeType":"MemberAccess","src":"5362:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":628,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"5387:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:30:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5394:40:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":622,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5354:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5354:81:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":632,"nodeType":"ExpressionStatement","src":"5354:81:2"},{"assignments":[634,636],"declarations":[{"constant":false,"id":634,"mutability":"mutable","name":"success","nameLocation":"5451:7:2","nodeType":"VariableDeclaration","scope":651,"src":"5446:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":633,"name":"bool","nodeType":"ElementaryTypeName","src":"5446:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":636,"mutability":"mutable","name":"returndata","nameLocation":"5473:10:2","nodeType":"VariableDeclaration","scope":651,"src":"5460:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":635,"name":"bytes","nodeType":"ElementaryTypeName","src":"5460:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":643,"initialValue":{"arguments":[{"id":641,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"5513:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":637,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"5487:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5494:4:2","memberName":"call","nodeType":"MemberAccess","src":"5487:11:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":639,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"5506:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5487:25:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5487:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5445:73:2"},{"expression":{"arguments":[{"id":645,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"5562:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":646,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"5570:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":647,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"5579:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":648,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"5591:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":644,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"5535:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:69:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":621,"id":650,"nodeType":"Return","src":"5528:76:2"}]},"documentation":{"id":609,"nodeType":"StructuredDocumentation","src":"4923:237:2","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":652,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5174:21:2","nodeType":"FunctionDefinition","parameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"target","nameLocation":"5213:6:2","nodeType":"VariableDeclaration","scope":652,"src":"5205:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":610,"name":"address","nodeType":"ElementaryTypeName","src":"5205:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":613,"mutability":"mutable","name":"data","nameLocation":"5242:4:2","nodeType":"VariableDeclaration","scope":652,"src":"5229:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":612,"name":"bytes","nodeType":"ElementaryTypeName","src":"5229:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":615,"mutability":"mutable","name":"value","nameLocation":"5264:5:2","nodeType":"VariableDeclaration","scope":652,"src":"5256:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":614,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":617,"mutability":"mutable","name":"errorMessage","nameLocation":"5293:12:2","nodeType":"VariableDeclaration","scope":652,"src":"5279:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":616,"name":"string","nodeType":"ElementaryTypeName","src":"5279:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5195:116:2"},"returnParameters":{"id":621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":620,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":652,"src":"5330:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":619,"name":"bytes","nodeType":"ElementaryTypeName","src":"5330:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5329:14:2"},"scope":828,"src":"5165:446:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":668,"nodeType":"Block","src":"5888:97:2","statements":[{"expression":{"arguments":[{"id":663,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"5924:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":664,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"5932:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5938:39:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":662,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[669,698],"referencedDeclaration":698,"src":"5905:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5905:73:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":661,"id":667,"nodeType":"Return","src":"5898:80:2"}]},"documentation":{"id":653,"nodeType":"StructuredDocumentation","src":"5617:166:2","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":669,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5797:18:2","nodeType":"FunctionDefinition","parameters":{"id":658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":655,"mutability":"mutable","name":"target","nameLocation":"5824:6:2","nodeType":"VariableDeclaration","scope":669,"src":"5816:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":654,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":657,"mutability":"mutable","name":"data","nameLocation":"5845:4:2","nodeType":"VariableDeclaration","scope":669,"src":"5832:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":656,"name":"bytes","nodeType":"ElementaryTypeName","src":"5832:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5815:35:2"},"returnParameters":{"id":661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":660,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":669,"src":"5874:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":659,"name":"bytes","nodeType":"ElementaryTypeName","src":"5874:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5873:14:2"},"scope":828,"src":"5788:197:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":697,"nodeType":"Block","src":"6327:168:2","statements":[{"assignments":[682,684],"declarations":[{"constant":false,"id":682,"mutability":"mutable","name":"success","nameLocation":"6343:7:2","nodeType":"VariableDeclaration","scope":697,"src":"6338:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":681,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":684,"mutability":"mutable","name":"returndata","nameLocation":"6365:10:2","nodeType":"VariableDeclaration","scope":697,"src":"6352:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":683,"name":"bytes","nodeType":"ElementaryTypeName","src":"6352:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":689,"initialValue":{"arguments":[{"id":687,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"6397:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":685,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"6379:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6386:10:2","memberName":"staticcall","nodeType":"MemberAccess","src":"6379:17:2","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6337:65:2"},{"expression":{"arguments":[{"id":691,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"6446:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":692,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"6454:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":693,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":684,"src":"6463:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":694,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"6475:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":690,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"6419:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6419:69:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":680,"id":696,"nodeType":"Return","src":"6412:76:2"}]},"documentation":{"id":670,"nodeType":"StructuredDocumentation","src":"5991:173:2","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":698,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6178:18:2","nodeType":"FunctionDefinition","parameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":672,"mutability":"mutable","name":"target","nameLocation":"6214:6:2","nodeType":"VariableDeclaration","scope":698,"src":"6206:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":671,"name":"address","nodeType":"ElementaryTypeName","src":"6206:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":674,"mutability":"mutable","name":"data","nameLocation":"6243:4:2","nodeType":"VariableDeclaration","scope":698,"src":"6230:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":673,"name":"bytes","nodeType":"ElementaryTypeName","src":"6230:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":676,"mutability":"mutable","name":"errorMessage","nameLocation":"6271:12:2","nodeType":"VariableDeclaration","scope":698,"src":"6257:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":675,"name":"string","nodeType":"ElementaryTypeName","src":"6257:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6196:93:2"},"returnParameters":{"id":680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":679,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":698,"src":"6313:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":678,"name":"bytes","nodeType":"ElementaryTypeName","src":"6313:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6312:14:2"},"scope":828,"src":"6169:326:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":714,"nodeType":"Block","src":"6771:101:2","statements":[{"expression":{"arguments":[{"id":709,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":701,"src":"6809:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":710,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"6817:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:41:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":708,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[715,744],"referencedDeclaration":744,"src":"6788:20:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6788:77:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":707,"id":713,"nodeType":"Return","src":"6781:84:2"}]},"documentation":{"id":699,"nodeType":"StructuredDocumentation","src":"6501:168:2","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":715,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6683:20:2","nodeType":"FunctionDefinition","parameters":{"id":704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":701,"mutability":"mutable","name":"target","nameLocation":"6712:6:2","nodeType":"VariableDeclaration","scope":715,"src":"6704:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":700,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":703,"mutability":"mutable","name":"data","nameLocation":"6733:4:2","nodeType":"VariableDeclaration","scope":715,"src":"6720:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":702,"name":"bytes","nodeType":"ElementaryTypeName","src":"6720:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6703:35:2"},"returnParameters":{"id":707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":706,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":715,"src":"6757:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":705,"name":"bytes","nodeType":"ElementaryTypeName","src":"6757:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6756:14:2"},"scope":828,"src":"6674:198:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":743,"nodeType":"Block","src":"7213:170:2","statements":[{"assignments":[728,730],"declarations":[{"constant":false,"id":728,"mutability":"mutable","name":"success","nameLocation":"7229:7:2","nodeType":"VariableDeclaration","scope":743,"src":"7224:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":727,"name":"bool","nodeType":"ElementaryTypeName","src":"7224:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":730,"mutability":"mutable","name":"returndata","nameLocation":"7251:10:2","nodeType":"VariableDeclaration","scope":743,"src":"7238:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":729,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":735,"initialValue":{"arguments":[{"id":733,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"7285:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":731,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"7265:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7272:12:2","memberName":"delegatecall","nodeType":"MemberAccess","src":"7265:19:2","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7265:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7223:67:2"},{"expression":{"arguments":[{"id":737,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"7334:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":738,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":728,"src":"7342:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":739,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":730,"src":"7351:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":740,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"7363:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":736,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"7307:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7307:69:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":726,"id":742,"nodeType":"Return","src":"7300:76:2"}]},"documentation":{"id":716,"nodeType":"StructuredDocumentation","src":"6878:175:2","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":744,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7067:20:2","nodeType":"FunctionDefinition","parameters":{"id":723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":718,"mutability":"mutable","name":"target","nameLocation":"7105:6:2","nodeType":"VariableDeclaration","scope":744,"src":"7097:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":717,"name":"address","nodeType":"ElementaryTypeName","src":"7097:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":720,"mutability":"mutable","name":"data","nameLocation":"7134:4:2","nodeType":"VariableDeclaration","scope":744,"src":"7121:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":719,"name":"bytes","nodeType":"ElementaryTypeName","src":"7121:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":722,"mutability":"mutable","name":"errorMessage","nameLocation":"7162:12:2","nodeType":"VariableDeclaration","scope":744,"src":"7148:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":721,"name":"string","nodeType":"ElementaryTypeName","src":"7148:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7087:93:2"},"returnParameters":{"id":726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":725,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":744,"src":"7199:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":724,"name":"bytes","nodeType":"ElementaryTypeName","src":"7199:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7198:14:2"},"scope":828,"src":"7058:325:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":782,"nodeType":"Block","src":"7865:434:2","statements":[{"condition":{"id":758,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":749,"src":"7879:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":780,"nodeType":"Block","src":"8235:58:2","statements":[{"expression":{"arguments":[{"id":776,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":751,"src":"8257:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":777,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":753,"src":"8269:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":775,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":827,"src":"8249:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8249:33:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":779,"nodeType":"ExpressionStatement","src":"8249:33:2"}]},"id":781,"nodeType":"IfStatement","src":"7875:418:2","trueBody":{"id":774,"nodeType":"Block","src":"7888:341:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":759,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":751,"src":"7906:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7917:6:2","memberName":"length","nodeType":"MemberAccess","src":"7906:17:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7927:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7906:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":771,"nodeType":"IfStatement","src":"7902:286:2","trueBody":{"id":770,"nodeType":"Block","src":"7930:258:2","statements":[{"expression":{"arguments":[{"arguments":[{"id":765,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"8132:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":764,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":516,"src":"8121:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8121:18:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8141:31:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":763,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8113:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8113:60:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":769,"nodeType":"ExpressionStatement","src":"8113:60:2"}]}},{"expression":{"id":772,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":751,"src":"8208:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":757,"id":773,"nodeType":"Return","src":"8201:17:2"}]}}]},"documentation":{"id":745,"nodeType":"StructuredDocumentation","src":"7389:277:2","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":783,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7680:26:2","nodeType":"FunctionDefinition","parameters":{"id":754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":747,"mutability":"mutable","name":"target","nameLocation":"7724:6:2","nodeType":"VariableDeclaration","scope":783,"src":"7716:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":746,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":749,"mutability":"mutable","name":"success","nameLocation":"7745:7:2","nodeType":"VariableDeclaration","scope":783,"src":"7740:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":748,"name":"bool","nodeType":"ElementaryTypeName","src":"7740:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":751,"mutability":"mutable","name":"returndata","nameLocation":"7775:10:2","nodeType":"VariableDeclaration","scope":783,"src":"7762:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":750,"name":"bytes","nodeType":"ElementaryTypeName","src":"7762:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":753,"mutability":"mutable","name":"errorMessage","nameLocation":"7809:12:2","nodeType":"VariableDeclaration","scope":783,"src":"7795:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":752,"name":"string","nodeType":"ElementaryTypeName","src":"7795:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7706:121:2"},"returnParameters":{"id":757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":783,"src":"7851:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":755,"name":"bytes","nodeType":"ElementaryTypeName","src":"7851:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7850:14:2"},"scope":828,"src":"7671:628:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":806,"nodeType":"Block","src":"8680:135:2","statements":[{"condition":{"id":795,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"8694:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":804,"nodeType":"Block","src":"8751:58:2","statements":[{"expression":{"arguments":[{"id":800,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"8773:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":801,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"8785:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":799,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":827,"src":"8765:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8765:33:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":803,"nodeType":"ExpressionStatement","src":"8765:33:2"}]},"id":805,"nodeType":"IfStatement","src":"8690:119:2","trueBody":{"id":798,"nodeType":"Block","src":"8703:42:2","statements":[{"expression":{"id":796,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"8724:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":794,"id":797,"nodeType":"Return","src":"8717:17:2"}]}}]},"documentation":{"id":784,"nodeType":"StructuredDocumentation","src":"8305:210:2","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":807,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8529:16:2","nodeType":"FunctionDefinition","parameters":{"id":791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":786,"mutability":"mutable","name":"success","nameLocation":"8560:7:2","nodeType":"VariableDeclaration","scope":807,"src":"8555:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":785,"name":"bool","nodeType":"ElementaryTypeName","src":"8555:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"returndata","nameLocation":"8590:10:2","nodeType":"VariableDeclaration","scope":807,"src":"8577:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":787,"name":"bytes","nodeType":"ElementaryTypeName","src":"8577:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":790,"mutability":"mutable","name":"errorMessage","nameLocation":"8624:12:2","nodeType":"VariableDeclaration","scope":807,"src":"8610:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":789,"name":"string","nodeType":"ElementaryTypeName","src":"8610:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8545:97:2"},"returnParameters":{"id":794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":807,"src":"8666:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":792,"name":"bytes","nodeType":"ElementaryTypeName","src":"8666:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8665:14:2"},"scope":828,"src":"8520:295:2","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":826,"nodeType":"Block","src":"8904:457:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":814,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":809,"src":"8980:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8991:6:2","memberName":"length","nodeType":"MemberAccess","src":"8980:17:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9000:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8980:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":824,"nodeType":"Block","src":"9310:45:2","statements":[{"expression":{"arguments":[{"id":821,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"9331:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":820,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9324:6:2","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9324:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":823,"nodeType":"ExpressionStatement","src":"9324:20:2"}]},"id":825,"nodeType":"IfStatement","src":"8976:379:2","trueBody":{"id":819,"nodeType":"Block","src":"9003:301:2","statements":[{"AST":{"nodeType":"YulBlock","src":"9161:133:2","statements":[{"nodeType":"YulVariableDeclaration","src":"9179:40:2","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9208:10:2"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9202:5:2"},"nodeType":"YulFunctionCall","src":"9202:17:2"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9183:15:2","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9247:2:2","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9251:10:2"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9243:3:2"},"nodeType":"YulFunctionCall","src":"9243:19:2"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9264:15:2"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9236:6:2"},"nodeType":"YulFunctionCall","src":"9236:44:2"},"nodeType":"YulExpressionStatement","src":"9236:44:2"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":809,"isOffset":false,"isSlot":false,"src":"9208:10:2","valueSize":1},{"declaration":809,"isOffset":false,"isSlot":false,"src":"9251:10:2","valueSize":1}],"id":818,"nodeType":"InlineAssembly","src":"9152:142:2"}]}}]},"id":827,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8830:7:2","nodeType":"FunctionDefinition","parameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":809,"mutability":"mutable","name":"returndata","nameLocation":"8851:10:2","nodeType":"VariableDeclaration","scope":827,"src":"8838:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":808,"name":"bytes","nodeType":"ElementaryTypeName","src":"8838:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":811,"mutability":"mutable","name":"errorMessage","nameLocation":"8877:12:2","nodeType":"VariableDeclaration","scope":827,"src":"8863:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":810,"name":"string","nodeType":"ElementaryTypeName","src":"8863:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8837:53:2"},"returnParameters":{"id":813,"nodeType":"ParameterList","parameters":[],"src":"8904:0:2"},"scope":828,"src":"8821:540:2","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":829,"src":"194:9169:2","usedErrors":[]}],"src":"101:9263:2"},"id":2},"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol":{"ast":{"absolutePath":"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol","exportedSymbols":{"Address":[828],"IFirewall":[1203],"IFirewallConsumer":[1211],"IFirewallConsumerStorage":[1234],"Initializable":[168],"SimpleUpgradeableFirewallConsumer":[1155]},"id":1156,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":830,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:3"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":832,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1156,"sourceUnit":169,"src":"140:96:3","symbolAliases":[{"foreign":{"id":831,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"148:13:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":834,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1156,"sourceUnit":829,"src":"237:66:3","symbolAliases":[{"foreign":{"id":833,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"245:7:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewall.sol","file":"../interfaces/IFirewall.sol","id":836,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1156,"sourceUnit":1204,"src":"304:54:3","symbolAliases":[{"foreign":{"id":835,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"312:9:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewallConsumer.sol","file":"../interfaces/IFirewallConsumer.sol","id":838,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1156,"sourceUnit":1212,"src":"359:70:3","symbolAliases":[{"foreign":{"id":837,"name":"IFirewallConsumer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1211,"src":"367:17:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewallConsumerStorage.sol","file":"../interfaces/IFirewallConsumerStorage.sol","id":840,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1156,"sourceUnit":1235,"src":"430:84:3","symbolAliases":[{"foreign":{"id":839,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"438:24:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":842,"name":"IFirewallConsumer","nameLocations":["882:17:3"],"nodeType":"IdentifierPath","referencedDeclaration":1211,"src":"882:17:3"},"id":843,"nodeType":"InheritanceSpecifier","src":"882:17:3"},{"baseName":{"id":844,"name":"Initializable","nameLocations":["901:13:3"],"nodeType":"IdentifierPath","referencedDeclaration":168,"src":"901:13:3"},"id":845,"nodeType":"InheritanceSpecifier","src":"901:13:3"}],"canonicalName":"SimpleUpgradeableFirewallConsumer","contractDependencies":[],"contractKind":"contract","documentation":{"id":841,"nodeType":"StructuredDocumentation","src":"516:319:3","text":" @title Firewall Minimal Upgradeable Consumer Contract\n @author David Benchimol @ Ironblocks\n @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n The contract is the most minimal upgradeable contract that implements the FirewallConsumer interface."},"fullyImplemented":true,"id":1155,"linearizedBaseContracts":[1155,168,1211],"name":"SimpleUpgradeableFirewallConsumer","nameLocation":"845:33:3","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":858,"mutability":"constant","name":"FIREWALL_CONSUMER_STORAGE_SLOT","nameLocation":"1010:30:3","nodeType":"VariableDeclaration","scope":1155,"src":"985:126:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":846,"name":"bytes32","nodeType":"ElementaryTypeName","src":"985:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c2e636f6e73756d65722e73746f72616765","id":852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1069:35:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d","typeString":"literal_string \"eip1967.firewall.consumer.storage\""},"value":"eip1967.firewall.consumer.storage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d","typeString":"literal_string \"eip1967.firewall.consumer.storage\""}],"id":851,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1059:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1059:46:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1051:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":849,"name":"uint256","nodeType":"ElementaryTypeName","src":"1051:7:3","typeDescriptions":{}}},"id":854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1051:55:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1109:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1051:59:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1043:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":847,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1043:7:3","typeDescriptions":{}}},"id":857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1043:68:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":871,"mutability":"constant","name":"FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT","nameLocation":"1142:49:3","nodeType":"VariableDeclaration","scope":1155,"src":"1117:164:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":859,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1117:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c2e636f6e73756d65722e696e697469616c697a65722e6669726577616c6c2e61646d696e","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1220:54:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e3c00479826132de4d9fbea35ecc012d08897d0189005139e3f3edc7ccc966d","typeString":"literal_string \"eip1967.firewall.consumer.initializer.firewall.admin\""},"value":"eip1967.firewall.consumer.initializer.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e3c00479826132de4d9fbea35ecc012d08897d0189005139e3f3edc7ccc966d","typeString":"literal_string \"eip1967.firewall.consumer.initializer.firewall.admin\""}],"id":864,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1210:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1210:65:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1202:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":862,"name":"uint256","nodeType":"ElementaryTypeName","src":"1202:7:3","typeDescriptions":{}}},"id":867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1202:74:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1279:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1202:78:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1194:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":860,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1194:7:3","typeDescriptions":{}}},"id":870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1194:87:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":934,"nodeType":"Block","src":"1807:675:3","statements":[{"assignments":[875],"declarations":[{"constant":false,"id":875,"mutability":"mutable","name":"firewallConsumerStorage","nameLocation":"1825:23:3","nodeType":"VariableDeclaration","scope":934,"src":"1817:31:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":874,"name":"address","nodeType":"ElementaryTypeName","src":"1817:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":878,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":876,"name":"_getFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1134,"src":"1851:27:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1851:29:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1817:63:3"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":879,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"1894:23:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1929:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1921:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":880,"name":"address","nodeType":"ElementaryTypeName","src":"1921:7:3","typeDescriptions":{}}},"id":883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1921:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1894:37:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"1890:89:3","trueBody":{"id":887,"nodeType":"Block","src":"1933:46:3","statements":[{"id":885,"nodeType":"PlaceholderStatement","src":"1947:1:3"},{"id":886,"nodeType":"Return","src":"1962:7:3"}]}},{"assignments":[890],"declarations":[{"constant":false,"id":890,"mutability":"mutable","name":"firewall","nameLocation":"1996:8:3","nodeType":"VariableDeclaration","scope":934,"src":"1988:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":889,"name":"address","nodeType":"ElementaryTypeName","src":"1988:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":896,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":892,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":875,"src":"2032:23:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":891,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"2007:24:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewallConsumerStorage_$1234_$","typeString":"type(contract IFirewallConsumerStorage)"}},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2007:49:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$1234","typeString":"contract IFirewallConsumerStorage"}},"id":894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2057:11:3","memberName":"getFirewall","nodeType":"MemberAccess","referencedDeclaration":1223,"src":"2007:61:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2007:63:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1988:82:3"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":897,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"2084:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2104:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2096:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":898,"name":"address","nodeType":"ElementaryTypeName","src":"2096:7:3","typeDescriptions":{}}},"id":901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2096:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2084:22:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":906,"nodeType":"IfStatement","src":"2080:74:3","trueBody":{"id":905,"nodeType":"Block","src":"2108:46:3","statements":[{"id":903,"nodeType":"PlaceholderStatement","src":"2122:1:3"},{"id":904,"nodeType":"Return","src":"2137:7:3"}]}},{"assignments":[908],"declarations":[{"constant":false,"id":908,"mutability":"mutable","name":"value","nameLocation":"2254:5:3","nodeType":"VariableDeclaration","scope":934,"src":"2246:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":907,"name":"uint256","nodeType":"ElementaryTypeName","src":"2246:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":909,"nodeType":"VariableDeclarationStatement","src":"2246:13:3"},{"AST":{"nodeType":"YulBlock","src":"2278:44:3","statements":[{"nodeType":"YulAssignment","src":"2292:20:3","value":{"arguments":[],"functionName":{"name":"callvalue","nodeType":"YulIdentifier","src":"2301:9:3"},"nodeType":"YulFunctionCall","src":"2301:11:3"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2292:5:3"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":908,"isOffset":false,"isSlot":false,"src":"2292:5:3","valueSize":1}],"id":910,"nodeType":"InlineAssembly","src":"2269:53:3"},{"expression":{"arguments":[{"expression":{"id":915,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2364:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2368:6:3","memberName":"sender","nodeType":"MemberAccess","src":"2364:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":917,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2376:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2380:4:3","memberName":"data","nodeType":"MemberAccess","src":"2376:8:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":908,"src":"2386:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":912,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"2341:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":911,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"2331:9:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$1203_$","typeString":"type(contract IFirewall)"}},"id":913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2331:19:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$1203","typeString":"contract IFirewall"}},"id":914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2351:12:3","memberName":"preExecution","nodeType":"MemberAccess","referencedDeclaration":1166,"src":"2331:32:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2331:61:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":921,"nodeType":"ExpressionStatement","src":"2331:61:3"},{"id":922,"nodeType":"PlaceholderStatement","src":"2402:1:3"},{"expression":{"arguments":[{"expression":{"id":927,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2447:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2451:6:3","memberName":"sender","nodeType":"MemberAccess","src":"2447:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":929,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2459:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2463:4:3","memberName":"data","nodeType":"MemberAccess","src":"2459:8:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":931,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":908,"src":"2469:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":924,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"2423:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":923,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"2413:9:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$1203_$","typeString":"type(contract IFirewall)"}},"id":925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2413:19:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$1203","typeString":"contract IFirewall"}},"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2433:13:3","memberName":"postExecution","nodeType":"MemberAccess","referencedDeclaration":1175,"src":"2413:33:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2413:62:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":933,"nodeType":"ExpressionStatement","src":"2413:62:3"}]},"documentation":{"id":872,"nodeType":"StructuredDocumentation","src":"1288:485:3","text":" @dev modifier that will run the preExecution and postExecution hooks of the firewall, applying each of\n the subscribed policies.\n NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n prevent the postExecution hook from running - breaking the protection provided by the firewall.\n If you have any questions, please refer to the Firewall's documentation and/or contact our support."},"id":935,"name":"firewallProtected","nameLocation":"1787:17:3","nodeType":"ModifierDefinition","parameters":{"id":873,"nodeType":"ParameterList","parameters":[],"src":"1804:2:3"},"src":"1778:704:3","virtual":false,"visibility":"internal"},{"body":{"id":948,"nodeType":"Block","src":"2604:110:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":939,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2622:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2626:6:3","memberName":"sender","nodeType":"MemberAccess","src":"2622:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":941,"name":"_getFirewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1123,"src":"2636:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2636:19:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2622:33:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061646d696e","id":944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2657:38:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda","typeString":"literal_string \"FirewallConsumer: not firewall admin\""},"value":"FirewallConsumer: not firewall admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda","typeString":"literal_string \"FirewallConsumer: not firewall admin\""}],"id":938,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2614:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2614:82:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":946,"nodeType":"ExpressionStatement","src":"2614:82:3"},{"id":947,"nodeType":"PlaceholderStatement","src":"2706:1:3"}]},"documentation":{"id":936,"nodeType":"StructuredDocumentation","src":"2488:82:3","text":" @dev modifier similar to onlyOwner, but for the firewall admin."},"id":949,"name":"onlyFirewallAdmin","nameLocation":"2584:17:3","nodeType":"ModifierDefinition","parameters":{"id":937,"nodeType":"ParameterList","parameters":[],"src":"2601:2:3"},"src":"2575:139:3","virtual":false,"visibility":"internal"},{"body":{"id":1003,"nodeType":"Block","src":"3487:451:3","statements":[{"assignments":[960],"declarations":[{"constant":false,"id":960,"mutability":"mutable","name":"firewallConsumerStorage","nameLocation":"3505:23:3","nodeType":"VariableDeclaration","scope":1003,"src":"3497:31:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":959,"name":"address","nodeType":"ElementaryTypeName","src":"3497:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":963,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":961,"name":"_getFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1134,"src":"3531:27:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3531:29:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3497:63:3"},{"assignments":[965],"declarations":[{"constant":false,"id":965,"mutability":"mutable","name":"vennPolicy","nameLocation":"3578:10:3","nodeType":"VariableDeclaration","scope":1003,"src":"3570:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":964,"name":"address","nodeType":"ElementaryTypeName","src":"3570:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":971,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":967,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"3616:23:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":966,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"3591:24:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewallConsumerStorage_$1234_$","typeString":"type(contract IFirewallConsumerStorage)"}},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3591:49:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$1234","typeString":"contract IFirewallConsumerStorage"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3641:21:3","memberName":"getApprovedVennPolicy","nodeType":"MemberAccess","referencedDeclaration":1228,"src":"3591:71:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3591:73:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3570:94:3"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":973,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3682:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3686:5:3","memberName":"value","nodeType":"MemberAccess","src":"3682:9:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":975,"name":"userNativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"3695:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3682:26:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768206e61746976652076616c756520666f7220666565","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3710:51:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_07febfd97e0fd373aad0774c26ec4d8253768884ed8a5ab3a228f46a0ba43d3c","typeString":"literal_string \"FirewallConsumer: Not enough native value for fee\""},"value":"FirewallConsumer: Not enough native value for fee"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_07febfd97e0fd373aad0774c26ec4d8253768884ed8a5ab3a228f46a0ba43d3c","typeString":"literal_string \"FirewallConsumer: Not enough native value for fee\""}],"id":972,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3674:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3674:88:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":979,"nodeType":"ExpressionStatement","src":"3674:88:3"},{"assignments":[981,null],"declarations":[{"constant":false,"id":981,"mutability":"mutable","name":"success","nameLocation":"3778:7:3","nodeType":"VariableDeclaration","scope":1003,"src":"3773:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":980,"name":"bool","nodeType":"ElementaryTypeName","src":"3773:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":988,"initialValue":{"arguments":[{"id":986,"name":"vennPolicyPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"3828:17:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":982,"name":"vennPolicy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"3790:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3801:4:3","memberName":"call","nodeType":"MemberAccess","src":"3790:15:3","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":984,"name":"userNativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"3813:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3790:37:3","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3790:56:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3772:74:3"},{"expression":{"arguments":[{"id":990,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":981,"src":"3864:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":989,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3856:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3856:16:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":992,"nodeType":"ExpressionStatement","src":"3856:16:3"},{"expression":{"arguments":[{"arguments":[{"id":998,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3919:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_SimpleUpgradeableFirewallConsumer_$1155","typeString":"contract SimpleUpgradeableFirewallConsumer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SimpleUpgradeableFirewallConsumer_$1155","typeString":"contract SimpleUpgradeableFirewallConsumer"}],"id":997,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3911:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":996,"name":"address","nodeType":"ElementaryTypeName","src":"3911:7:3","typeDescriptions":{}}},"id":999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3911:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1000,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"3926:4:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":993,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"3882:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$828_$","typeString":"type(library Address)"}},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3890:20:3","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":715,"src":"3882:28:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3882:49:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1002,"nodeType":"ExpressionStatement","src":"3882:49:3"}]},"documentation":{"id":950,"nodeType":"StructuredDocumentation","src":"2720:611:3","text":" @dev Allows calling an approved external Venn policy before executing a method.\n This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before\n executing a function, allowing synchronous transaction approvals.\n NOTE: If userNativeFee is non zero, functions using this must take into account that\n the value received will be slightly less than msg.value due to the fee.\n @param vennPolicyPayload payload to be sent to the Venn policy\n @param data data to be executed after the Venn policy call"},"functionSelector":"cb09f61f","id":1004,"implemented":true,"kind":"function","modifiers":[],"name":"safeFunctionCall","nameLocation":"3345:16:3","nodeType":"FunctionDefinition","parameters":{"id":957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":952,"mutability":"mutable","name":"userNativeFee","nameLocation":"3379:13:3","nodeType":"VariableDeclaration","scope":1004,"src":"3371:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":951,"name":"uint256","nodeType":"ElementaryTypeName","src":"3371:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":954,"mutability":"mutable","name":"vennPolicyPayload","nameLocation":"3417:17:3","nodeType":"VariableDeclaration","scope":1004,"src":"3402:32:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":953,"name":"bytes","nodeType":"ElementaryTypeName","src":"3402:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":956,"mutability":"mutable","name":"data","nameLocation":"3459:4:3","nodeType":"VariableDeclaration","scope":1004,"src":"3444:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":955,"name":"bytes","nodeType":"ElementaryTypeName","src":"3444:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3361:108:3"},"returnParameters":{"id":958,"nodeType":"ParameterList","parameters":[],"src":"3487:0:3"},"scope":1155,"src":"3336:602:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[1210],"body":{"id":1013,"nodeType":"Block","src":"4066:43:3","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1010,"name":"_getFirewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1123,"src":"4083:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4083:19:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1009,"id":1012,"nodeType":"Return","src":"4076:26:3"}]},"documentation":{"id":1005,"nodeType":"StructuredDocumentation","src":"3944:60:3","text":" @dev View function for the firewall admin"},"functionSelector":"f05c8582","id":1014,"implemented":true,"kind":"function","modifiers":[],"name":"firewallAdmin","nameLocation":"4018:13:3","nodeType":"FunctionDefinition","parameters":{"id":1006,"nodeType":"ParameterList","parameters":[],"src":"4031:2:3"},"returnParameters":{"id":1009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1008,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1014,"src":"4057:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1007,"name":"address","nodeType":"ElementaryTypeName","src":"4057:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4056:9:3"},"scope":1155,"src":"4009:100:3","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":1034,"nodeType":"Block","src":"4212:182:3","statements":[{"expression":{"arguments":[{"id":1022,"name":"FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"4240:49:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4299:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1024,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4291:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1023,"name":"address","nodeType":"ElementaryTypeName","src":"4291:7:3","typeDescriptions":{}}},"id":1026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4291:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1021,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"4222:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4222:80:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1028,"nodeType":"ExpressionStatement","src":"4222:80:3"},{"expression":{"arguments":[{"id":1030,"name":"FIREWALL_CONSUMER_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"4330:30:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1031,"name":"_firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"4362:24:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1029,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"4312:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4312:75:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1033,"nodeType":"ExpressionStatement","src":"4312:75:3"}]},"functionSelector":"af076af4","id":1035,"implemented":true,"kind":"function","modifiers":[{"id":1019,"kind":"modifierInvocation","modifierName":{"id":1018,"name":"onlyFirewallAdmin","nameLocations":["4194:17:3"],"nodeType":"IdentifierPath","referencedDeclaration":949,"src":"4194:17:3"},"nodeType":"ModifierInvocation","src":"4194:17:3"}],"name":"setFirewallConsumerStorage","nameLocation":"4124:26:3","nodeType":"FunctionDefinition","parameters":{"id":1017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1016,"mutability":"mutable","name":"_firewallConsumerStorage","nameLocation":"4159:24:3","nodeType":"VariableDeclaration","scope":1035,"src":"4151:32:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1015,"name":"address","nodeType":"ElementaryTypeName","src":"4151:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4150:34:3"},"returnParameters":{"id":1020,"nodeType":"ParameterList","parameters":[],"src":"4212:0:3"},"scope":1155,"src":"4115:279:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1092,"nodeType":"Block","src":"4551:548:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1048,"name":"_firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"4578:24:3","typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$1234","typeString":"contract IFirewallConsumerStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$1234","typeString":"contract IFirewallConsumerStorage"}],"id":1047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4570:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1046,"name":"address","nodeType":"ElementaryTypeName","src":"4570:7:3","typeDescriptions":{}}},"id":1049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4570:33:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4615:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4607:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1050,"name":"address","nodeType":"ElementaryTypeName","src":"4607:7:3","typeDescriptions":{}}},"id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4570:47:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1055,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4569:49:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1056,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1040,"src":"4622:14:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4648:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4640:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1057,"name":"address","nodeType":"ElementaryTypeName","src":"4640:7:3","typeDescriptions":{}}},"id":1060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4640:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4622:28:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4569:81:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206d7573742068617665206669726577616c6c20636f6e73756d65722073746f72616765206f72206669726577616c6c2061646d696e","id":1063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4652:73:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_33565c926b695c4ac07253821675609a7a4db29d5d6517a25bcc304c1c1267f0","typeString":"literal_string \"FirewallConsumer: must have firewall consumer storage or firewall admin\""},"value":"FirewallConsumer: must have firewall consumer storage or firewall admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_33565c926b695c4ac07253821675609a7a4db29d5d6517a25bcc304c1c1267f0","typeString":"literal_string \"FirewallConsumer: must have firewall consumer storage or firewall admin\""}],"id":1045,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4561:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4561:165:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1065,"nodeType":"ExpressionStatement","src":"4561:165:3"},{"assignments":[1067],"declarations":[{"constant":false,"id":1067,"mutability":"mutable","name":"_firewallConsumerStorageAddress","nameLocation":"4744:31:3","nodeType":"VariableDeclaration","scope":1092,"src":"4736:39:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1066,"name":"address","nodeType":"ElementaryTypeName","src":"4736:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1072,"initialValue":{"arguments":[{"id":1070,"name":"_firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"4786:24:3","typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$1234","typeString":"contract IFirewallConsumerStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$1234","typeString":"contract IFirewallConsumerStorage"}],"id":1069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4778:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1068,"name":"address","nodeType":"ElementaryTypeName","src":"4778:7:3","typeDescriptions":{}}},"id":1071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4778:33:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4736:75:3"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1073,"name":"_firewallConsumerStorageAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1067,"src":"4825:31:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4868:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4860:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1074,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:3","typeDescriptions":{}}},"id":1077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4860:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4825:45:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1086,"nodeType":"IfStatement","src":"4821:180:3","trueBody":{"id":1085,"nodeType":"Block","src":"4872:129:3","statements":[{"expression":{"arguments":[{"id":1080,"name":"FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"4904:49:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1081,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1040,"src":"4955:14:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1079,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"4886:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4886:84:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1083,"nodeType":"ExpressionStatement","src":"4886:84:3"},{"functionReturnParameters":1044,"id":1084,"nodeType":"Return","src":"4984:7:3"}]}},{"expression":{"arguments":[{"id":1088,"name":"FIREWALL_CONSUMER_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"5028:30:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1089,"name":"_firewallConsumerStorageAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1067,"src":"5060:31:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1087,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"5010:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5010:82:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1091,"nodeType":"ExpressionStatement","src":"5010:82:3"}]},"id":1093,"implemented":true,"kind":"function","modifiers":[{"id":1043,"kind":"modifierInvocation","modifierName":{"id":1042,"name":"onlyInitializing","nameLocations":["4534:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":113,"src":"4534:16:3"},"nodeType":"ModifierInvocation","src":"4534:16:3"}],"name":"__SimpleUpgradeableFirewallConsumer_init","nameLocation":"4409:40:3","nodeType":"FunctionDefinition","parameters":{"id":1041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1038,"mutability":"mutable","name":"_firewallConsumerStorage","nameLocation":"4475:24:3","nodeType":"VariableDeclaration","scope":1093,"src":"4450:49:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$1234","typeString":"contract IFirewallConsumerStorage"},"typeName":{"id":1037,"nodeType":"UserDefinedTypeName","pathNode":{"id":1036,"name":"IFirewallConsumerStorage","nameLocations":["4450:24:3"],"nodeType":"IdentifierPath","referencedDeclaration":1234,"src":"4450:24:3"},"referencedDeclaration":1234,"src":"4450:24:3","typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$1234","typeString":"contract IFirewallConsumerStorage"}},"visibility":"internal"},{"constant":false,"id":1040,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"4509:14:3","nodeType":"VariableDeclaration","scope":1093,"src":"4501:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1039,"name":"address","nodeType":"ElementaryTypeName","src":"4501:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4449:75:3"},"returnParameters":{"id":1044,"nodeType":"ParameterList","parameters":[],"src":"4551:0:3"},"scope":1155,"src":"4400:699:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1122,"nodeType":"Block","src":"5240:317:3","statements":[{"assignments":[1100],"declarations":[{"constant":false,"id":1100,"mutability":"mutable","name":"firewallConsumerStorage","nameLocation":"5258:23:3","nodeType":"VariableDeclaration","scope":1122,"src":"5250:31:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1099,"name":"address","nodeType":"ElementaryTypeName","src":"5250:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1103,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1101,"name":"_getFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1134,"src":"5284:27:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5284:29:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5250:63:3"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1104,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"5327:23:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5362:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5354:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1105,"name":"address","nodeType":"ElementaryTypeName","src":"5354:7:3","typeDescriptions":{}}},"id":1108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5354:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5327:37:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1115,"nodeType":"IfStatement","src":"5323:143:3","trueBody":{"id":1114,"nodeType":"Block","src":"5366:100:3","statements":[{"expression":{"arguments":[{"id":1111,"name":"FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"5405:49:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1110,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1154,"src":"5387:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5387:68:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1098,"id":1113,"nodeType":"Return","src":"5380:75:3"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1117,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"5507:23:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1116,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"5482:24:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewallConsumerStorage_$1234_$","typeString":"type(contract IFirewallConsumerStorage)"}},"id":1118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5482:49:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$1234","typeString":"contract IFirewallConsumerStorage"}},"id":1119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5532:16:3","memberName":"getFirewallAdmin","nodeType":"MemberAccess","referencedDeclaration":1218,"src":"5482:66:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5482:68:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1098,"id":1121,"nodeType":"Return","src":"5475:75:3"}]},"documentation":{"id":1094,"nodeType":"StructuredDocumentation","src":"5105:69:3","text":" @dev Internal view function for the firewall admin"},"id":1123,"implemented":true,"kind":"function","modifiers":[],"name":"_getFirewallAdmin","nameLocation":"5188:17:3","nodeType":"FunctionDefinition","parameters":{"id":1095,"nodeType":"ParameterList","parameters":[],"src":"5205:2:3"},"returnParameters":{"id":1098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1097,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1123,"src":"5231:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1096,"name":"address","nodeType":"ElementaryTypeName","src":"5231:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5230:9:3"},"scope":1155,"src":"5179:378:3","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1133,"nodeType":"Block","src":"5710:73:3","statements":[{"expression":{"arguments":[{"id":1130,"name":"FIREWALL_CONSUMER_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"5745:30:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1129,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1154,"src":"5727:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5727:49:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1128,"id":1132,"nodeType":"Return","src":"5720:56:3"}]},"documentation":{"id":1124,"nodeType":"StructuredDocumentation","src":"5563:71:3","text":" @dev Internal view function for the consumer storage"},"id":1134,"implemented":true,"kind":"function","modifiers":[],"name":"_getFirewallConsumerStorage","nameLocation":"5648:27:3","nodeType":"FunctionDefinition","parameters":{"id":1125,"nodeType":"ParameterList","parameters":[],"src":"5675:2:3"},"returnParameters":{"id":1128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1134,"src":"5701:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1126,"name":"address","nodeType":"ElementaryTypeName","src":"5701:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5700:9:3"},"scope":1155,"src":"5639:144:3","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1143,"nodeType":"Block","src":"6022:72:3","statements":[{"AST":{"nodeType":"YulBlock","src":"6041:47:3","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"6062:5:3"},{"name":"_address","nodeType":"YulIdentifier","src":"6069:8:3"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"6055:6:3"},"nodeType":"YulFunctionCall","src":"6055:23:3"},"nodeType":"YulExpressionStatement","src":"6055:23:3"}]},"evmVersion":"paris","externalReferences":[{"declaration":1139,"isOffset":false,"isSlot":false,"src":"6069:8:3","valueSize":1},{"declaration":1137,"isOffset":false,"isSlot":false,"src":"6062:5:3","valueSize":1}],"id":1142,"nodeType":"InlineAssembly","src":"6032:56:3"}]},"documentation":{"id":1135,"nodeType":"StructuredDocumentation","src":"5790:158:3","text":" @dev Internal helper function to set an address in a storage slot\n @param _slot storage slot\n @param _address address to be set"},"id":1144,"implemented":true,"kind":"function","modifiers":[],"name":"_setAddressBySlot","nameLocation":"5962:17:3","nodeType":"FunctionDefinition","parameters":{"id":1140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1137,"mutability":"mutable","name":"_slot","nameLocation":"5988:5:3","nodeType":"VariableDeclaration","scope":1144,"src":"5980:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1136,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5980:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1139,"mutability":"mutable","name":"_address","nameLocation":"6003:8:3","nodeType":"VariableDeclaration","scope":1144,"src":"5995:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1138,"name":"address","nodeType":"ElementaryTypeName","src":"5995:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5979:33:3"},"returnParameters":{"id":1141,"nodeType":"ParameterList","parameters":[],"src":"6022:0:3"},"scope":1155,"src":"5953:141:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1153,"nodeType":"Block","src":"6353:73:3","statements":[{"AST":{"nodeType":"YulBlock","src":"6372:48:3","statements":[{"nodeType":"YulAssignment","src":"6386:24:3","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"6404:5:3"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"6398:5:3"},"nodeType":"YulFunctionCall","src":"6398:12:3"},"variableNames":[{"name":"_address","nodeType":"YulIdentifier","src":"6386:8:3"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1150,"isOffset":false,"isSlot":false,"src":"6386:8:3","valueSize":1},{"declaration":1147,"isOffset":false,"isSlot":false,"src":"6404:5:3","valueSize":1}],"id":1152,"nodeType":"InlineAssembly","src":"6363:57:3"}]},"documentation":{"id":1145,"nodeType":"StructuredDocumentation","src":"6100:165:3","text":" @dev Internal helper function to get an address from a storage slot\n @param _slot storage slot\n @return _address from the storage slot"},"id":1154,"implemented":true,"kind":"function","modifiers":[],"name":"_getAddressBySlot","nameLocation":"6279:17:3","nodeType":"FunctionDefinition","parameters":{"id":1148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1147,"mutability":"mutable","name":"_slot","nameLocation":"6305:5:3","nodeType":"VariableDeclaration","scope":1154,"src":"6297:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1146,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6297:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6296:15:3"},"returnParameters":{"id":1151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1150,"mutability":"mutable","name":"_address","nameLocation":"6343:8:3","nodeType":"VariableDeclaration","scope":1154,"src":"6335:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1149,"name":"address","nodeType":"ElementaryTypeName","src":"6335:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6334:18:3"},"scope":1155,"src":"6270:156:3","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1156,"src":"836:5593:3","usedErrors":[]}],"src":"115:6314:3"},"id":3},"contracts/interfaces/IFirewall.sol":{"ast":{"absolutePath":"contracts/interfaces/IFirewall.sol","exportedSymbols":{"IFirewall":[1203]},"id":1204,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1157,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IFirewall","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1203,"linearizedBaseContracts":[1203],"name":"IFirewall","nameLocation":"148:9:4","nodeType":"ContractDefinition","nodes":[{"functionSelector":"6fe1967c","id":1166,"implemented":false,"kind":"function","modifiers":[],"name":"preExecution","nameLocation":"173:12:4","nodeType":"FunctionDefinition","parameters":{"id":1164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1159,"mutability":"mutable","name":"sender","nameLocation":"194:6:4","nodeType":"VariableDeclaration","scope":1166,"src":"186:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1158,"name":"address","nodeType":"ElementaryTypeName","src":"186:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1161,"mutability":"mutable","name":"data","nameLocation":"215:4:4","nodeType":"VariableDeclaration","scope":1166,"src":"202:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1160,"name":"bytes","nodeType":"ElementaryTypeName","src":"202:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1163,"mutability":"mutable","name":"value","nameLocation":"229:5:4","nodeType":"VariableDeclaration","scope":1166,"src":"221:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1162,"name":"uint256","nodeType":"ElementaryTypeName","src":"221:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"185:50:4"},"returnParameters":{"id":1165,"nodeType":"ParameterList","parameters":[],"src":"244:0:4"},"scope":1203,"src":"164:81:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"93163a91","id":1175,"implemented":false,"kind":"function","modifiers":[],"name":"postExecution","nameLocation":"259:13:4","nodeType":"FunctionDefinition","parameters":{"id":1173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1168,"mutability":"mutable","name":"sender","nameLocation":"281:6:4","nodeType":"VariableDeclaration","scope":1175,"src":"273:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1167,"name":"address","nodeType":"ElementaryTypeName","src":"273:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1170,"mutability":"mutable","name":"data","nameLocation":"302:4:4","nodeType":"VariableDeclaration","scope":1175,"src":"289:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1169,"name":"bytes","nodeType":"ElementaryTypeName","src":"289:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1172,"mutability":"mutable","name":"value","nameLocation":"316:5:4","nodeType":"VariableDeclaration","scope":1175,"src":"308:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1171,"name":"uint256","nodeType":"ElementaryTypeName","src":"308:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"272:50:4"},"returnParameters":{"id":1174,"nodeType":"ParameterList","parameters":[],"src":"331:0:4"},"scope":1203,"src":"250:82:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"33a0c536","id":1187,"implemented":false,"kind":"function","modifiers":[],"name":"preExecutionPrivateInvariants","nameLocation":"346:29:4","nodeType":"FunctionDefinition","parameters":{"id":1182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1177,"mutability":"mutable","name":"sender","nameLocation":"384:6:4","nodeType":"VariableDeclaration","scope":1187,"src":"376:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1176,"name":"address","nodeType":"ElementaryTypeName","src":"376:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1179,"mutability":"mutable","name":"data","nameLocation":"405:4:4","nodeType":"VariableDeclaration","scope":1187,"src":"392:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1178,"name":"bytes","nodeType":"ElementaryTypeName","src":"392:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1181,"mutability":"mutable","name":"value","nameLocation":"419:5:4","nodeType":"VariableDeclaration","scope":1187,"src":"411:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1180,"name":"uint256","nodeType":"ElementaryTypeName","src":"411:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"375:50:4"},"returnParameters":{"id":1186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1185,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1187,"src":"444:18:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1183,"name":"bytes32","nodeType":"ElementaryTypeName","src":"444:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1184,"nodeType":"ArrayTypeName","src":"444:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"443:20:4"},"scope":1203,"src":"337:127:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"cacb2838","id":1202,"implemented":false,"kind":"function","modifiers":[],"name":"postExecutionPrivateInvariants","nameLocation":"478:30:4","nodeType":"FunctionDefinition","parameters":{"id":1200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1189,"mutability":"mutable","name":"sender","nameLocation":"526:6:4","nodeType":"VariableDeclaration","scope":1202,"src":"518:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1188,"name":"address","nodeType":"ElementaryTypeName","src":"518:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1191,"mutability":"mutable","name":"data","nameLocation":"555:4:4","nodeType":"VariableDeclaration","scope":1202,"src":"542:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1190,"name":"bytes","nodeType":"ElementaryTypeName","src":"542:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1193,"mutability":"mutable","name":"value","nameLocation":"577:5:4","nodeType":"VariableDeclaration","scope":1202,"src":"569:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1192,"name":"uint256","nodeType":"ElementaryTypeName","src":"569:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1196,"mutability":"mutable","name":"preValues","nameLocation":"611:9:4","nodeType":"VariableDeclaration","scope":1202,"src":"592:28:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1194,"name":"bytes32","nodeType":"ElementaryTypeName","src":"592:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1195,"nodeType":"ArrayTypeName","src":"592:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":1199,"mutability":"mutable","name":"postValues","nameLocation":"649:10:4","nodeType":"VariableDeclaration","scope":1202,"src":"630:29:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1197,"name":"bytes32","nodeType":"ElementaryTypeName","src":"630:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1198,"nodeType":"ArrayTypeName","src":"630:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"508:157:4"},"returnParameters":{"id":1201,"nodeType":"ParameterList","parameters":[],"src":"674:0:4"},"scope":1203,"src":"469:206:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1204,"src":"138:539:4","usedErrors":[]}],"src":"115:562:4"},"id":4},"contracts/interfaces/IFirewallConsumer.sol":{"ast":{"absolutePath":"contracts/interfaces/IFirewallConsumer.sol","exportedSymbols":{"IFirewallConsumer":[1211]},"id":1212,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1205,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IFirewallConsumer","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1211,"linearizedBaseContracts":[1211],"name":"IFirewallConsumer","nameLocation":"148:17:5","nodeType":"ContractDefinition","nodes":[{"functionSelector":"f05c8582","id":1210,"implemented":false,"kind":"function","modifiers":[],"name":"firewallAdmin","nameLocation":"181:13:5","nodeType":"FunctionDefinition","parameters":{"id":1206,"nodeType":"ParameterList","parameters":[],"src":"194:2:5"},"returnParameters":{"id":1209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1208,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1210,"src":"220:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1207,"name":"address","nodeType":"ElementaryTypeName","src":"220:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"219:9:5"},"scope":1211,"src":"172:57:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1212,"src":"138:93:5","usedErrors":[]}],"src":"115:116:5"},"id":5},"contracts/interfaces/IFirewallConsumerStorage.sol":{"ast":{"absolutePath":"contracts/interfaces/IFirewallConsumerStorage.sol","exportedSymbols":{"IFirewallConsumerStorage":[1234]},"id":1235,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1213,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"IFirewallConsumerStorage","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1234,"linearizedBaseContracts":[1234],"name":"IFirewallConsumerStorage","nameLocation":"150:24:6","nodeType":"ContractDefinition","nodes":[{"functionSelector":"af7f27f4","id":1218,"implemented":false,"kind":"function","modifiers":[],"name":"getFirewallAdmin","nameLocation":"190:16:6","nodeType":"FunctionDefinition","parameters":{"id":1214,"nodeType":"ParameterList","parameters":[],"src":"206:2:6"},"returnParameters":{"id":1217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1216,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1218,"src":"232:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1215,"name":"address","nodeType":"ElementaryTypeName","src":"232:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"231:9:6"},"scope":1234,"src":"181:60:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"51cfdd39","id":1223,"implemented":false,"kind":"function","modifiers":[],"name":"getFirewall","nameLocation":"255:11:6","nodeType":"FunctionDefinition","parameters":{"id":1219,"nodeType":"ParameterList","parameters":[],"src":"266:2:6"},"returnParameters":{"id":1222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1221,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1223,"src":"292:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1220,"name":"address","nodeType":"ElementaryTypeName","src":"292:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"291:9:6"},"scope":1234,"src":"246:55:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6064a013","id":1228,"implemented":false,"kind":"function","modifiers":[],"name":"getApprovedVennPolicy","nameLocation":"315:21:6","nodeType":"FunctionDefinition","parameters":{"id":1224,"nodeType":"ParameterList","parameters":[],"src":"336:2:6"},"returnParameters":{"id":1227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1226,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1228,"src":"362:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1225,"name":"address","nodeType":"ElementaryTypeName","src":"362:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"361:9:6"},"scope":1234,"src":"306:65:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1498be2f","id":1233,"implemented":false,"kind":"function","modifiers":[],"name":"getUserNativeFee","nameLocation":"385:16:6","nodeType":"FunctionDefinition","parameters":{"id":1229,"nodeType":"ParameterList","parameters":[],"src":"401:2:6"},"returnParameters":{"id":1232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1231,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1233,"src":"427:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1230,"name":"uint256","nodeType":"ElementaryTypeName","src":"427:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"426:9:6"},"scope":1234,"src":"376:60:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1235,"src":"140:298:6","usedErrors":[]}],"src":"115:324:6"},"id":6}},"contracts":{"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() {     _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable {     function initialize() initializer public {         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");     } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {     function initializeV2() reinitializer(2) public {         __ERC20Permit_init(\\\"MyToken\\\");     } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":6,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":9,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e380f9e83f55e00224733f46e5f767be278461009deb4ad86598053bf5f845d664736f6c63430008130033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL 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 0xE3 DUP1 0xF9 0xE8 EXTCODEHASH SSTORE 0xE0 MUL 0x24 PUSH20 0x3F46E5F767BE278461009DEB4AD86598053BF5F8 GASLIMIT 0xD6 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"194:9180:1:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9180:1;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e380f9e83f55e00224733f46e5f767be278461009deb4ad86598053bf5f845d664736f6c63430008130033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE3 DUP1 0xF9 0xE8 EXTCODEHASH SSTORE 0xE0 MUL 0x24 PUSH20 0x3F46E5F767BE278461009DEB4AD86598053BF5F8 GASLIMIT 0xD6 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"194:9180:1:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220365300b846e9cd226fb9ff580218ca34d5e88d7a7bbc8199c8e16b16722b9a7a64736f6c63430008130033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL 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 CALLDATASIZE MSTORE8 STOP 0xB8 CHAINID 0xE9 0xCD 0x22 PUSH16 0xB9FF580218CA34D5E88D7A7BBC8199C8 0xE1 PUSH12 0x16722B9A7A64736F6C634300 ADDMOD SGT STOP CALLER ","sourceMap":"194:9169:2:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9169:2;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220365300b846e9cd226fb9ff580218ca34d5e88d7a7bbc8199c8e16b16722b9a7a64736f6c63430008130033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATASIZE MSTORE8 STOP 0xB8 CHAINID 0xE9 0xCD 0x22 PUSH16 0xB9FF580218CA34D5E88D7A7BBC8199C8 0xE1 PUSH12 0x16722B9A7A64736F6C634300 ADDMOD SGT STOP CALLER ","sourceMap":"194:9169:2:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol":{"SimpleUpgradeableFirewallConsumer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"userNativeFee","type":"uint256"},{"internalType":"bytes","name":"vennPolicyPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallConsumerStorage","type":"address"}],"name":"setFirewallConsumerStorage","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506108bb806100206000396000f3fe6080604052600436106100345760003560e01c8063af076af414610039578063cb09f61f1461005b578063f05c85821461006e575b600080fd5b34801561004557600080fd5b5061005961005436600461067f565b6100ac565b005b6100596100693660046106ec565b6101dc565b34801561007a57600080fd5b506100836103b0565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46103bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610172576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e0000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6101a66101a060017f8e3c00479826132de4d9fbea35ecc012d08897d0189005139e3f3edc7ccc966d610766565b60009055565b6101d96101d460017f7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d610766565b829055565b50565b60006101e661048e565b905060008173ffffffffffffffffffffffffffffffffffffffff16636064a0136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610235573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025991906107a0565b9050863410156102eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768206e617460448201527f6976652076616c756520666f72206665650000000000000000000000000000006064820152608401610169565b60008173ffffffffffffffffffffffffffffffffffffffff168888886040516103159291906107bd565b60006040518083038185875af1925050503d8060008114610352576040519150601f19603f3d011682016040523d82523d6000602084013e610357565b606091505b505090508061036557600080fd5b6103a53086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104be92505050565b505050505050505050565b60006103ba6103bf565b905090565b6000806103ca61048e565b905073ffffffffffffffffffffffffffffffffffffffff811661041f5761041961041560017f8e3c00479826132de4d9fbea35ecc012d08897d0189005139e3f3edc7ccc966d610766565b5490565b91505090565b8073ffffffffffffffffffffffffffffffffffffffff1663af7f27f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561046a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041991906107a0565b60006103ba61041560017f7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d610766565b60606104e3838360405180606001604052806027815260200161085f602791396104ec565b90505b92915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161051691906107f1565b600060405180830381855af49150503d8060008114610551576040519150601f19603f3d011682016040523d82523d6000602084013e610556565b606091505b509150915061056786838387610571565b9695505050505050565b606083156106075782516000036106005773ffffffffffffffffffffffffffffffffffffffff85163b610600576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b5081610611565b6106118383610619565b949350505050565b8151156106295781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610169919061080d565b73ffffffffffffffffffffffffffffffffffffffff811681146101d957600080fd5b60006020828403121561069157600080fd5b813561069c8161065d565b9392505050565b60008083601f8401126106b557600080fd5b50813567ffffffffffffffff8111156106cd57600080fd5b6020830191508360208285010111156106e557600080fd5b9250929050565b60008060008060006060868803121561070457600080fd5b85359450602086013567ffffffffffffffff8082111561072357600080fd5b61072f89838a016106a3565b9096509450604088013591508082111561074857600080fd5b50610755888289016106a3565b969995985093965092949392505050565b818103818111156104e6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000602082840312156107b257600080fd5b815161069c8161065d565b8183823760009101908152919050565b60005b838110156107e85781810151838201526020016107d0565b50506000910152565b600082516108038184602087016107cd565b9190910192915050565b602081526000825180602084015261082c8160408501602087016107cd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201798097893f2284215dcd42223b5d819091e7e8e0cd81a6c7eb7fa6c9ae6436d64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8BB DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAF076AF4 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xCB09F61F EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x67F JUMP JUMPDEST PUSH2 0xAC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x59 PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x6EC JUMP JUMPDEST PUSH2 0x1DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x83 PUSH2 0x3B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB4 PUSH2 0x3BF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x172 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1A6 PUSH2 0x1A0 PUSH1 0x1 PUSH32 0x8E3C00479826132DE4D9FBEA35ECC012D08897D0189005139E3F3EDC7CCC966D PUSH2 0x766 JUMP JUMPDEST PUSH1 0x0 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x1D4 PUSH1 0x1 PUSH32 0x7FFA9B40FF30EBF8641C7BC9A690E086033CB7145678974A167B48D9033BA95D PUSH2 0x766 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E6 PUSH2 0x48E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6064A013 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x235 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x259 SWAP2 SWAP1 PUSH2 0x7A0 JUMP JUMPDEST SWAP1 POP DUP7 CALLVALUE LT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F756768206E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6976652076616C756520666F7220666565000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x315 SWAP3 SWAP2 SWAP1 PUSH2 0x7BD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x352 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x357 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A5 ADDRESS DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4BE SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BA PUSH2 0x3BF JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3CA PUSH2 0x48E JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x41F JUMPI PUSH2 0x419 PUSH2 0x415 PUSH1 0x1 PUSH32 0x8E3C00479826132DE4D9FBEA35ECC012D08897D0189005139E3F3EDC7CCC966D PUSH2 0x766 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAF7F27F4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x46A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x7A0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BA PUSH2 0x415 PUSH1 0x1 PUSH32 0x7FFA9B40FF30EBF8641C7BC9A690E086033CB7145678974A167B48D9033BA95D PUSH2 0x766 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x85F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x4EC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x516 SWAP2 SWAP1 PUSH2 0x7F1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x551 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x556 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x567 DUP7 DUP4 DUP4 DUP8 PUSH2 0x571 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x607 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x600 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0x600 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x169 JUMP JUMPDEST POP DUP2 PUSH2 0x611 JUMP JUMPDEST PUSH2 0x611 DUP4 DUP4 PUSH2 0x619 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x629 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x80D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x69C DUP2 PUSH2 0x65D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x723 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x72F DUP10 DUP4 DUP11 ADD PUSH2 0x6A3 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x755 DUP9 DUP3 DUP10 ADD PUSH2 0x6A3 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x4E6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x69C DUP2 PUSH2 0x65D JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7E8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7D0 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x803 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x7CD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x82C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x7CD JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220179809 PUSH25 0x93F2284215DCD42223B5D819091E7E8E0CD81A6C7EB7FA6C9A 0xE6 NUMBER PUSH14 0x64736F6C63430008130033000000 ","sourceMap":"836:5593:3:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_1154":{"entryPoint":null,"id":1154,"parameterSlots":1,"returnSlots":1},"@_getFirewallAdmin_1123":{"entryPoint":959,"id":1123,"parameterSlots":0,"returnSlots":1},"@_getFirewallConsumerStorage_1134":{"entryPoint":1166,"id":1134,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":1561,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1144":{"entryPoint":null,"id":1144,"parameterSlots":2,"returnSlots":0},"@firewallAdmin_1014":{"entryPoint":944,"id":1014,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":1214,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":1260,"id":744,"parameterSlots":3,"returnSlots":1},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_1004":{"entryPoint":476,"id":1004,"parameterSlots":5,"returnSlots":0},"@setFirewallConsumerStorage_1035":{"entryPoint":172,"id":1035,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_783":{"entryPoint":1393,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":1699,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":1663,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":1952,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":1772,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1981,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":2033,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2061,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_07febfd97e0fd373aad0774c26ec4d8253768884ed8a5ab3a228f46a0ba43d3c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":1894,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1997,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_address":{"entryPoint":1629,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4802:7","statements":[{"nodeType":"YulBlock","src":"6:3:7","statements":[]},{"body":{"nodeType":"YulBlock","src":"59:109:7","statements":[{"body":{"nodeType":"YulBlock","src":"146:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"155:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"158:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"148:6:7"},"nodeType":"YulFunctionCall","src":"148:12:7"},"nodeType":"YulExpressionStatement","src":"148:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"82:5:7"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"93:5:7"},{"kind":"number","nodeType":"YulLiteral","src":"100:42:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"89:3:7"},"nodeType":"YulFunctionCall","src":"89:54:7"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"79:2:7"},"nodeType":"YulFunctionCall","src":"79:65:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"72:6:7"},"nodeType":"YulFunctionCall","src":"72:73:7"},"nodeType":"YulIf","src":"69:93:7"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"48:5:7","type":""}],"src":"14:154:7"},{"body":{"nodeType":"YulBlock","src":"243:177:7","statements":[{"body":{"nodeType":"YulBlock","src":"289:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"298:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"301:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"291:6:7"},"nodeType":"YulFunctionCall","src":"291:12:7"},"nodeType":"YulExpressionStatement","src":"291:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"264:7:7"},{"name":"headStart","nodeType":"YulIdentifier","src":"273:9:7"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"260:3:7"},"nodeType":"YulFunctionCall","src":"260:23:7"},{"kind":"number","nodeType":"YulLiteral","src":"285:2:7","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"256:3:7"},"nodeType":"YulFunctionCall","src":"256:32:7"},"nodeType":"YulIf","src":"253:52:7"},{"nodeType":"YulVariableDeclaration","src":"314:36:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"340:9:7"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"327:12:7"},"nodeType":"YulFunctionCall","src":"327:23:7"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"318:5:7","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"384:5:7"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"359:24:7"},"nodeType":"YulFunctionCall","src":"359:31:7"},"nodeType":"YulExpressionStatement","src":"359:31:7"},{"nodeType":"YulAssignment","src":"399:15:7","value":{"name":"value","nodeType":"YulIdentifier","src":"409:5:7"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"399:6:7"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"209:9:7","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"220:7:7","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"232:6:7","type":""}],"src":"173:247:7"},{"body":{"nodeType":"YulBlock","src":"497:275:7","statements":[{"body":{"nodeType":"YulBlock","src":"546:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"555:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"558:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"548:6:7"},"nodeType":"YulFunctionCall","src":"548:12:7"},"nodeType":"YulExpressionStatement","src":"548:12:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"525:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"533:4:7","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"521:3:7"},"nodeType":"YulFunctionCall","src":"521:17:7"},{"name":"end","nodeType":"YulIdentifier","src":"540:3:7"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"517:3:7"},"nodeType":"YulFunctionCall","src":"517:27:7"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"510:6:7"},"nodeType":"YulFunctionCall","src":"510:35:7"},"nodeType":"YulIf","src":"507:55:7"},{"nodeType":"YulAssignment","src":"571:30:7","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"594:6:7"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"581:12:7"},"nodeType":"YulFunctionCall","src":"581:20:7"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"571:6:7"}]},{"body":{"nodeType":"YulBlock","src":"644:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"653:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"656:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"646:6:7"},"nodeType":"YulFunctionCall","src":"646:12:7"},"nodeType":"YulExpressionStatement","src":"646:12:7"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"616:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"624:18:7","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"613:2:7"},"nodeType":"YulFunctionCall","src":"613:30:7"},"nodeType":"YulIf","src":"610:50:7"},{"nodeType":"YulAssignment","src":"669:29:7","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"685:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"693:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"681:3:7"},"nodeType":"YulFunctionCall","src":"681:17:7"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"669:8:7"}]},{"body":{"nodeType":"YulBlock","src":"750:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"759:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"762:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"752:6:7"},"nodeType":"YulFunctionCall","src":"752:12:7"},"nodeType":"YulExpressionStatement","src":"752:12:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"721:6:7"},{"name":"length","nodeType":"YulIdentifier","src":"729:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"717:3:7"},"nodeType":"YulFunctionCall","src":"717:19:7"},{"kind":"number","nodeType":"YulLiteral","src":"738:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"713:3:7"},"nodeType":"YulFunctionCall","src":"713:30:7"},{"name":"end","nodeType":"YulIdentifier","src":"745:3:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"710:2:7"},"nodeType":"YulFunctionCall","src":"710:39:7"},"nodeType":"YulIf","src":"707:59:7"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"460:6:7","type":""},{"name":"end","nodeType":"YulTypedName","src":"468:3:7","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"476:8:7","type":""},{"name":"length","nodeType":"YulTypedName","src":"486:6:7","type":""}],"src":"425:347:7"},{"body":{"nodeType":"YulBlock","src":"919:643:7","statements":[{"body":{"nodeType":"YulBlock","src":"965:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"974:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"977:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"967:6:7"},"nodeType":"YulFunctionCall","src":"967:12:7"},"nodeType":"YulExpressionStatement","src":"967:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"940:7:7"},{"name":"headStart","nodeType":"YulIdentifier","src":"949:9:7"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"936:3:7"},"nodeType":"YulFunctionCall","src":"936:23:7"},{"kind":"number","nodeType":"YulLiteral","src":"961:2:7","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"932:3:7"},"nodeType":"YulFunctionCall","src":"932:32:7"},"nodeType":"YulIf","src":"929:52:7"},{"nodeType":"YulAssignment","src":"990:33:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1013:9:7"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1000:12:7"},"nodeType":"YulFunctionCall","src":"1000:23:7"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"990:6:7"}]},{"nodeType":"YulVariableDeclaration","src":"1032:46:7","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1063:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"1074:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1059:3:7"},"nodeType":"YulFunctionCall","src":"1059:18:7"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1046:12:7"},"nodeType":"YulFunctionCall","src":"1046:32:7"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1036:6:7","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1087:28:7","value":{"kind":"number","nodeType":"YulLiteral","src":"1097:18:7","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1091:2:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"1142:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1151:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1154:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1144:6:7"},"nodeType":"YulFunctionCall","src":"1144:12:7"},"nodeType":"YulExpressionStatement","src":"1144:12:7"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1130:6:7"},{"name":"_1","nodeType":"YulIdentifier","src":"1138:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1127:2:7"},"nodeType":"YulFunctionCall","src":"1127:14:7"},"nodeType":"YulIf","src":"1124:34:7"},{"nodeType":"YulVariableDeclaration","src":"1167:84:7","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1223:9:7"},{"name":"offset","nodeType":"YulIdentifier","src":"1234:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1219:3:7"},"nodeType":"YulFunctionCall","src":"1219:22:7"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1243:7:7"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1193:25:7"},"nodeType":"YulFunctionCall","src":"1193:58:7"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"1171:8:7","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"1181:8:7","type":""}]},{"nodeType":"YulAssignment","src":"1260:18:7","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1270:8:7"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1260:6:7"}]},{"nodeType":"YulAssignment","src":"1287:18:7","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1297:8:7"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1287:6:7"}]},{"nodeType":"YulVariableDeclaration","src":"1314:48:7","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1347:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"1358:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1343:3:7"},"nodeType":"YulFunctionCall","src":"1343:18:7"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1330:12:7"},"nodeType":"YulFunctionCall","src":"1330:32:7"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1318:8:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"1391:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1400:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1403:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1393:6:7"},"nodeType":"YulFunctionCall","src":"1393:12:7"},"nodeType":"YulExpressionStatement","src":"1393:12:7"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1377:8:7"},{"name":"_1","nodeType":"YulIdentifier","src":"1387:2:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1374:2:7"},"nodeType":"YulFunctionCall","src":"1374:16:7"},"nodeType":"YulIf","src":"1371:36:7"},{"nodeType":"YulVariableDeclaration","src":"1416:86:7","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1472:9:7"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1483:8:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1468:3:7"},"nodeType":"YulFunctionCall","src":"1468:24:7"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1494:7:7"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1442:25:7"},"nodeType":"YulFunctionCall","src":"1442:60:7"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1420:8:7","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1430:8:7","type":""}]},{"nodeType":"YulAssignment","src":"1511:18:7","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1521:8:7"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1511:6:7"}]},{"nodeType":"YulAssignment","src":"1538:18:7","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1548:8:7"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1538:6:7"}]}]},"name":"abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"853:9:7","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"864:7:7","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"876:6:7","type":""},{"name":"value1","nodeType":"YulTypedName","src":"884:6:7","type":""},{"name":"value2","nodeType":"YulTypedName","src":"892:6:7","type":""},{"name":"value3","nodeType":"YulTypedName","src":"900:6:7","type":""},{"name":"value4","nodeType":"YulTypedName","src":"908:6:7","type":""}],"src":"777:785:7"},{"body":{"nodeType":"YulBlock","src":"1668:125:7","statements":[{"nodeType":"YulAssignment","src":"1678:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1690:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"1701:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1686:3:7"},"nodeType":"YulFunctionCall","src":"1686:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1678:4:7"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1720:9:7"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1735:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"1743:42:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1731:3:7"},"nodeType":"YulFunctionCall","src":"1731:55:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1713:6:7"},"nodeType":"YulFunctionCall","src":"1713:74:7"},"nodeType":"YulExpressionStatement","src":"1713:74:7"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1637:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1648:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1659:4:7","type":""}],"src":"1567:226:7"},{"body":{"nodeType":"YulBlock","src":"1972:226:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1989:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2000:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1982:6:7"},"nodeType":"YulFunctionCall","src":"1982:21:7"},"nodeType":"YulExpressionStatement","src":"1982:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2023:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2034:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2019:3:7"},"nodeType":"YulFunctionCall","src":"2019:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"2039:2:7","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2012:6:7"},"nodeType":"YulFunctionCall","src":"2012:30:7"},"nodeType":"YulExpressionStatement","src":"2012:30:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2062:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2073:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2058:3:7"},"nodeType":"YulFunctionCall","src":"2058:18:7"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"2078:34:7","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2051:6:7"},"nodeType":"YulFunctionCall","src":"2051:62:7"},"nodeType":"YulExpressionStatement","src":"2051:62:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2133:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2144:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2129:3:7"},"nodeType":"YulFunctionCall","src":"2129:18:7"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"2149:6:7","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2122:6:7"},"nodeType":"YulFunctionCall","src":"2122:34:7"},"nodeType":"YulExpressionStatement","src":"2122:34:7"},{"nodeType":"YulAssignment","src":"2165:27:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2177:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2188:3:7","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2173:3:7"},"nodeType":"YulFunctionCall","src":"2173:19:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2165:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1949:9:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1963:4:7","type":""}],"src":"1798:400:7"},{"body":{"nodeType":"YulBlock","src":"2252:233:7","statements":[{"nodeType":"YulAssignment","src":"2262:17:7","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2274:1:7"},{"name":"y","nodeType":"YulIdentifier","src":"2277:1:7"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2270:3:7"},"nodeType":"YulFunctionCall","src":"2270:9:7"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2262:4:7"}]},{"body":{"nodeType":"YulBlock","src":"2311:168:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2332:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2335:77:7","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2325:6:7"},"nodeType":"YulFunctionCall","src":"2325:88:7"},"nodeType":"YulExpressionStatement","src":"2325:88:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2433:1:7","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2436:4:7","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2426:6:7"},"nodeType":"YulFunctionCall","src":"2426:15:7"},"nodeType":"YulExpressionStatement","src":"2426:15:7"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2461:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2464:4:7","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2454:6:7"},"nodeType":"YulFunctionCall","src":"2454:15:7"},"nodeType":"YulExpressionStatement","src":"2454:15:7"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2294:4:7"},{"name":"x","nodeType":"YulIdentifier","src":"2300:1:7"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2291:2:7"},"nodeType":"YulFunctionCall","src":"2291:11:7"},"nodeType":"YulIf","src":"2288:191:7"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2234:1:7","type":""},{"name":"y","nodeType":"YulTypedName","src":"2237:1:7","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2243:4:7","type":""}],"src":"2203:282:7"},{"body":{"nodeType":"YulBlock","src":"2571:170:7","statements":[{"body":{"nodeType":"YulBlock","src":"2617:16:7","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2626:1:7","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2629:1:7","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2619:6:7"},"nodeType":"YulFunctionCall","src":"2619:12:7"},"nodeType":"YulExpressionStatement","src":"2619:12:7"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2592:7:7"},{"name":"headStart","nodeType":"YulIdentifier","src":"2601:9:7"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2588:3:7"},"nodeType":"YulFunctionCall","src":"2588:23:7"},{"kind":"number","nodeType":"YulLiteral","src":"2613:2:7","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2584:3:7"},"nodeType":"YulFunctionCall","src":"2584:32:7"},"nodeType":"YulIf","src":"2581:52:7"},{"nodeType":"YulVariableDeclaration","src":"2642:29:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2661:9:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2655:5:7"},"nodeType":"YulFunctionCall","src":"2655:16:7"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2646:5:7","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2705:5:7"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2680:24:7"},"nodeType":"YulFunctionCall","src":"2680:31:7"},"nodeType":"YulExpressionStatement","src":"2680:31:7"},{"nodeType":"YulAssignment","src":"2720:15:7","value":{"name":"value","nodeType":"YulIdentifier","src":"2730:5:7"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2720:6:7"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2537:9:7","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2548:7:7","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2560:6:7","type":""}],"src":"2490:251:7"},{"body":{"nodeType":"YulBlock","src":"2920:239:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2937:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2948:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2930:6:7"},"nodeType":"YulFunctionCall","src":"2930:21:7"},"nodeType":"YulExpressionStatement","src":"2930:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2971:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"2982:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2967:3:7"},"nodeType":"YulFunctionCall","src":"2967:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"2987:2:7","type":"","value":"49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2960:6:7"},"nodeType":"YulFunctionCall","src":"2960:30:7"},"nodeType":"YulExpressionStatement","src":"2960:30:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3010:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3021:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3006:3:7"},"nodeType":"YulFunctionCall","src":"3006:18:7"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768206e6174","kind":"string","nodeType":"YulLiteral","src":"3026:34:7","type":"","value":"FirewallConsumer: Not enough nat"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2999:6:7"},"nodeType":"YulFunctionCall","src":"2999:62:7"},"nodeType":"YulExpressionStatement","src":"2999:62:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3081:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3092:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3077:3:7"},"nodeType":"YulFunctionCall","src":"3077:18:7"},{"hexValue":"6976652076616c756520666f7220666565","kind":"string","nodeType":"YulLiteral","src":"3097:19:7","type":"","value":"ive value for fee"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3070:6:7"},"nodeType":"YulFunctionCall","src":"3070:47:7"},"nodeType":"YulExpressionStatement","src":"3070:47:7"},{"nodeType":"YulAssignment","src":"3126:27:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3138:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"3149:3:7","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3134:3:7"},"nodeType":"YulFunctionCall","src":"3134:19:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3126:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_07febfd97e0fd373aad0774c26ec4d8253768884ed8a5ab3a228f46a0ba43d3c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2897:9:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2911:4:7","type":""}],"src":"2746:413:7"},{"body":{"nodeType":"YulBlock","src":"3311:124:7","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3334:3:7"},{"name":"value0","nodeType":"YulIdentifier","src":"3339:6:7"},{"name":"value1","nodeType":"YulIdentifier","src":"3347:6:7"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3321:12:7"},"nodeType":"YulFunctionCall","src":"3321:33:7"},"nodeType":"YulExpressionStatement","src":"3321:33:7"},{"nodeType":"YulVariableDeclaration","src":"3363:26:7","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3377:3:7"},{"name":"value1","nodeType":"YulIdentifier","src":"3382:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3373:3:7"},"nodeType":"YulFunctionCall","src":"3373:16:7"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3367:2:7","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3405:2:7"},{"kind":"number","nodeType":"YulLiteral","src":"3409:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3398:6:7"},"nodeType":"YulFunctionCall","src":"3398:13:7"},"nodeType":"YulExpressionStatement","src":"3398:13:7"},{"nodeType":"YulAssignment","src":"3420:9:7","value":{"name":"_1","nodeType":"YulIdentifier","src":"3427:2:7"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3420:3:7"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3279:3:7","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3284:6:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3292:6:7","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3303:3:7","type":""}],"src":"3164:271:7"},{"body":{"nodeType":"YulBlock","src":"3506:184:7","statements":[{"nodeType":"YulVariableDeclaration","src":"3516:10:7","value":{"kind":"number","nodeType":"YulLiteral","src":"3525:1:7","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3520:1:7","type":""}]},{"body":{"nodeType":"YulBlock","src":"3585:63:7","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3610:3:7"},{"name":"i","nodeType":"YulIdentifier","src":"3615:1:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3606:3:7"},"nodeType":"YulFunctionCall","src":"3606:11:7"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3629:3:7"},{"name":"i","nodeType":"YulIdentifier","src":"3634:1:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3625:3:7"},"nodeType":"YulFunctionCall","src":"3625:11:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3619:5:7"},"nodeType":"YulFunctionCall","src":"3619:18:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3599:6:7"},"nodeType":"YulFunctionCall","src":"3599:39:7"},"nodeType":"YulExpressionStatement","src":"3599:39:7"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3546:1:7"},{"name":"length","nodeType":"YulIdentifier","src":"3549:6:7"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3543:2:7"},"nodeType":"YulFunctionCall","src":"3543:13:7"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3557:19:7","statements":[{"nodeType":"YulAssignment","src":"3559:15:7","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3568:1:7"},{"kind":"number","nodeType":"YulLiteral","src":"3571:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3564:3:7"},"nodeType":"YulFunctionCall","src":"3564:10:7"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3559:1:7"}]}]},"pre":{"nodeType":"YulBlock","src":"3539:3:7","statements":[]},"src":"3535:113:7"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3668:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"3673:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3664:3:7"},"nodeType":"YulFunctionCall","src":"3664:16:7"},{"kind":"number","nodeType":"YulLiteral","src":"3682:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3657:6:7"},"nodeType":"YulFunctionCall","src":"3657:27:7"},"nodeType":"YulExpressionStatement","src":"3657:27:7"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3484:3:7","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3489:3:7","type":""},{"name":"length","nodeType":"YulTypedName","src":"3494:6:7","type":""}],"src":"3440:250:7"},{"body":{"nodeType":"YulBlock","src":"3832:150:7","statements":[{"nodeType":"YulVariableDeclaration","src":"3842:27:7","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3862:6:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3856:5:7"},"nodeType":"YulFunctionCall","src":"3856:13:7"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3846:6:7","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3917:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"3925:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3913:3:7"},"nodeType":"YulFunctionCall","src":"3913:17:7"},{"name":"pos","nodeType":"YulIdentifier","src":"3932:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"3937:6:7"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"3878:34:7"},"nodeType":"YulFunctionCall","src":"3878:66:7"},"nodeType":"YulExpressionStatement","src":"3878:66:7"},{"nodeType":"YulAssignment","src":"3953:23:7","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3964:3:7"},{"name":"length","nodeType":"YulIdentifier","src":"3969:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3960:3:7"},"nodeType":"YulFunctionCall","src":"3960:16:7"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3953:3:7"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3808:3:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3813:6:7","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3824:3:7","type":""}],"src":"3695:287:7"},{"body":{"nodeType":"YulBlock","src":"4161:179:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4178:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4189:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4171:6:7"},"nodeType":"YulFunctionCall","src":"4171:21:7"},"nodeType":"YulExpressionStatement","src":"4171:21:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4212:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4223:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4208:3:7"},"nodeType":"YulFunctionCall","src":"4208:18:7"},{"kind":"number","nodeType":"YulLiteral","src":"4228:2:7","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4201:6:7"},"nodeType":"YulFunctionCall","src":"4201:30:7"},"nodeType":"YulExpressionStatement","src":"4201:30:7"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4251:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4262:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4247:3:7"},"nodeType":"YulFunctionCall","src":"4247:18:7"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"4267:31:7","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4240:6:7"},"nodeType":"YulFunctionCall","src":"4240:59:7"},"nodeType":"YulExpressionStatement","src":"4240:59:7"},{"nodeType":"YulAssignment","src":"4308:26:7","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4320:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4331:2:7","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4316:3:7"},"nodeType":"YulFunctionCall","src":"4316:18:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4308:4:7"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4138:9:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4152:4:7","type":""}],"src":"3987:353:7"},{"body":{"nodeType":"YulBlock","src":"4466:334:7","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4483:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4494:2:7","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4476:6:7"},"nodeType":"YulFunctionCall","src":"4476:21:7"},"nodeType":"YulExpressionStatement","src":"4476:21:7"},{"nodeType":"YulVariableDeclaration","src":"4506:27:7","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4526:6:7"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4520:5:7"},"nodeType":"YulFunctionCall","src":"4520:13:7"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4510:6:7","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4553:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4564:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4549:3:7"},"nodeType":"YulFunctionCall","src":"4549:18:7"},{"name":"length","nodeType":"YulIdentifier","src":"4569:6:7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4542:6:7"},"nodeType":"YulFunctionCall","src":"4542:34:7"},"nodeType":"YulExpressionStatement","src":"4542:34:7"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4624:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"4632:2:7","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4620:3:7"},"nodeType":"YulFunctionCall","src":"4620:15:7"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4641:9:7"},{"kind":"number","nodeType":"YulLiteral","src":"4652:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4637:3:7"},"nodeType":"YulFunctionCall","src":"4637:18:7"},{"name":"length","nodeType":"YulIdentifier","src":"4657:6:7"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4585:34:7"},"nodeType":"YulFunctionCall","src":"4585:79:7"},"nodeType":"YulExpressionStatement","src":"4585:79:7"},{"nodeType":"YulAssignment","src":"4673:121:7","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4689:9:7"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4708:6:7"},{"kind":"number","nodeType":"YulLiteral","src":"4716:2:7","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4704:3:7"},"nodeType":"YulFunctionCall","src":"4704:15:7"},{"kind":"number","nodeType":"YulLiteral","src":"4721:66:7","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4700:3:7"},"nodeType":"YulFunctionCall","src":"4700:88:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4685:3:7"},"nodeType":"YulFunctionCall","src":"4685:104:7"},{"kind":"number","nodeType":"YulLiteral","src":"4791:2:7","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4681:3:7"},"nodeType":"YulFunctionCall","src":"4681:113:7"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4673:4:7"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4435:9:7","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4446:6:7","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4457:4:7","type":""}],"src":"4345:455:7"}]},"contents":"{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"FirewallConsumer: not firewall a\")\n        mstore(add(headStart, 96), \"dmin\")\n        tail := add(headStart, 128)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_07febfd97e0fd373aad0774c26ec4d8253768884ed8a5ab3a228f46a0ba43d3c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not enough nat\")\n        mstore(add(headStart, 96), \"ive value for fee\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}","id":7,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100345760003560e01c8063af076af414610039578063cb09f61f1461005b578063f05c85821461006e575b600080fd5b34801561004557600080fd5b5061005961005436600461067f565b6100ac565b005b6100596100693660046106ec565b6101dc565b34801561007a57600080fd5b506100836103b0565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46103bf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610172576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e0000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6101a66101a060017f8e3c00479826132de4d9fbea35ecc012d08897d0189005139e3f3edc7ccc966d610766565b60009055565b6101d96101d460017f7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d610766565b829055565b50565b60006101e661048e565b905060008173ffffffffffffffffffffffffffffffffffffffff16636064a0136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610235573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025991906107a0565b9050863410156102eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768206e617460448201527f6976652076616c756520666f72206665650000000000000000000000000000006064820152608401610169565b60008173ffffffffffffffffffffffffffffffffffffffff168888886040516103159291906107bd565b60006040518083038185875af1925050503d8060008114610352576040519150601f19603f3d011682016040523d82523d6000602084013e610357565b606091505b505090508061036557600080fd5b6103a53086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104be92505050565b505050505050505050565b60006103ba6103bf565b905090565b6000806103ca61048e565b905073ffffffffffffffffffffffffffffffffffffffff811661041f5761041961041560017f8e3c00479826132de4d9fbea35ecc012d08897d0189005139e3f3edc7ccc966d610766565b5490565b91505090565b8073ffffffffffffffffffffffffffffffffffffffff1663af7f27f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561046a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041991906107a0565b60006103ba61041560017f7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d610766565b60606104e3838360405180606001604052806027815260200161085f602791396104ec565b90505b92915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161051691906107f1565b600060405180830381855af49150503d8060008114610551576040519150601f19603f3d011682016040523d82523d6000602084013e610556565b606091505b509150915061056786838387610571565b9695505050505050565b606083156106075782516000036106005773ffffffffffffffffffffffffffffffffffffffff85163b610600576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b5081610611565b6106118383610619565b949350505050565b8151156106295781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610169919061080d565b73ffffffffffffffffffffffffffffffffffffffff811681146101d957600080fd5b60006020828403121561069157600080fd5b813561069c8161065d565b9392505050565b60008083601f8401126106b557600080fd5b50813567ffffffffffffffff8111156106cd57600080fd5b6020830191508360208285010111156106e557600080fd5b9250929050565b60008060008060006060868803121561070457600080fd5b85359450602086013567ffffffffffffffff8082111561072357600080fd5b61072f89838a016106a3565b9096509450604088013591508082111561074857600080fd5b50610755888289016106a3565b969995985093965092949392505050565b818103818111156104e6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000602082840312156107b257600080fd5b815161069c8161065d565b8183823760009101908152919050565b60005b838110156107e85781810151838201526020016107d0565b50506000910152565b600082516108038184602087016107cd565b9190910192915050565b602081526000825180602084015261082c8160408501602087016107cd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201798097893f2284215dcd42223b5d819091e7e8e0cd81a6c7eb7fa6c9ae6436d64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAF076AF4 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xCB09F61F EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x67F JUMP JUMPDEST PUSH2 0xAC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x59 PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x6EC JUMP JUMPDEST PUSH2 0x1DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x83 PUSH2 0x3B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB4 PUSH2 0x3BF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x172 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1A6 PUSH2 0x1A0 PUSH1 0x1 PUSH32 0x8E3C00479826132DE4D9FBEA35ECC012D08897D0189005139E3F3EDC7CCC966D PUSH2 0x766 JUMP JUMPDEST PUSH1 0x0 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x1D4 PUSH1 0x1 PUSH32 0x7FFA9B40FF30EBF8641C7BC9A690E086033CB7145678974A167B48D9033BA95D PUSH2 0x766 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E6 PUSH2 0x48E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6064A013 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x235 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x259 SWAP2 SWAP1 PUSH2 0x7A0 JUMP JUMPDEST SWAP1 POP DUP7 CALLVALUE LT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F756768206E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6976652076616C756520666F7220666565000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x169 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x315 SWAP3 SWAP2 SWAP1 PUSH2 0x7BD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x352 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x357 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3A5 ADDRESS DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x4BE SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BA PUSH2 0x3BF JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3CA PUSH2 0x48E JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x41F JUMPI PUSH2 0x419 PUSH2 0x415 PUSH1 0x1 PUSH32 0x8E3C00479826132DE4D9FBEA35ECC012D08897D0189005139E3F3EDC7CCC966D PUSH2 0x766 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAF7F27F4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x46A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x419 SWAP2 SWAP1 PUSH2 0x7A0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BA PUSH2 0x415 PUSH1 0x1 PUSH32 0x7FFA9B40FF30EBF8641C7BC9A690E086033CB7145678974A167B48D9033BA95D PUSH2 0x766 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E3 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x85F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x4EC JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x516 SWAP2 SWAP1 PUSH2 0x7F1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x551 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x556 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x567 DUP7 DUP4 DUP4 DUP8 PUSH2 0x571 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x607 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x600 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0x600 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x169 JUMP JUMPDEST POP DUP2 PUSH2 0x611 JUMP JUMPDEST PUSH2 0x611 DUP4 DUP4 PUSH2 0x619 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x629 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x169 SWAP2 SWAP1 PUSH2 0x80D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x691 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x69C DUP2 PUSH2 0x65D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x704 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x723 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x72F DUP10 DUP4 DUP11 ADD PUSH2 0x6A3 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x755 DUP9 DUP3 DUP10 ADD PUSH2 0x6A3 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x4E6 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x69C DUP2 PUSH2 0x65D JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7E8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7D0 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x803 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x7CD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x82C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x7CD JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220179809 PUSH25 0x93F2284215DCD42223B5D819091E7E8E0CD81A6C7EB7FA6C9A 0xE6 NUMBER PUSH14 0x64736F6C63430008130033000000 ","sourceMap":"836:5593:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4115:279;;;;;;;;;;-1:-1:-1;4115:279:3;;;;;:::i;:::-;;:::i;:::-;;3336:602;;;;;;:::i;:::-;;:::i;4009:100::-;;;;;;;;;;;;;:::i;:::-;;;1743:42:7;1731:55;;;1713:74;;1701:2;1686:18;4009:100:3;;;;;;;4115:279;2636:19;:17;:19::i;:::-;2622:33;;:10;:33;;;2614:82;;;;;;;2000:2:7;2614:82:3;;;1982:21:7;2039:2;2019:18;;;2012:30;2078:34;2058:18;;;2051:62;2149:6;2129:18;;;2122:34;2173:19;;2614:82:3;;;;;;;;;4222:80:::1;1202:78;1279:1;1210:65;1202:78;:::i;:::-;1194:87;6055:23:::0;;5953:141;4222:80:::1;4312:75;1051:59;1109:1;1059:46;1051:59;:::i;:::-;4362:24:::0;6055:23;;5953:141;4312:75:::1;4115:279:::0;:::o;3336:602::-;3497:31;3531:29;:27;:29::i;:::-;3497:63;;3570:18;3616:23;3591:71;;;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3570:94;;3695:13;3682:9;:26;;3674:88;;;;;;;2948:2:7;3674:88:3;;;2930:21:7;2987:2;2967:18;;;2960:30;3026:34;3006:18;;;2999:62;3097:19;3077:18;;;3070:47;3134:19;;3674:88:3;2746:413:7;3674:88:3;3773:12;3790:10;:15;;3813:13;3828:17;;3790:56;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3772:74;;;3864:7;3856:16;;;;;;3882:49;3919:4;3926;;3882:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3882:28:3;;-1:-1:-1;;;3882:49:3:i;:::-;;3487:451;;;3336:602;;;;;:::o;4009:100::-;4057:7;4083:19;:17;:19::i;:::-;4076:26;;4009:100;:::o;5179:378::-;5231:7;5250:31;5284:29;:27;:29::i;:::-;5250:63;-1:-1:-1;5327:37:3;;;5323:143;;5387:68;1202:78;1279:1;1210:65;1202:78;:::i;:::-;6398:12;;6270:156;5387:68;5380:75;;;5179:378;:::o;5323:143::-;5507:23;5482:66;;;:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5639:144::-;5701:7;5727:49;1051:59;1109:1;1059:46;1051:59;:::i;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;;6674:198;;;;;:::o;7058:325::-;7199:12;7224;7238:23;7265:6;:19;;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:2:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;;;;4189:2:7;8113:60:2;;;4171:21:7;4228:2;4208:18;;;4201:30;4267:31;4247:18;;;4240:59;4316:18;;8113:60:2;3987:353:7;8113:60:2;-1:-1:-1;8208:10:2;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;;;;;;;;;;:::i;14:154:7:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:247;232:6;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;340:9;327:23;359:31;384:5;359:31;:::i;:::-;409:5;173:247;-1:-1:-1;;;173:247:7:o;425:347::-;476:8;486:6;540:3;533:4;525:6;521:17;517:27;507:55;;558:1;555;548:12;507:55;-1:-1:-1;581:20:7;;624:18;613:30;;610:50;;;656:1;653;646:12;610:50;693:4;685:6;681:17;669:29;;745:3;738:4;729:6;721;717:19;713:30;710:39;707:59;;;762:1;759;752:12;707:59;425:347;;;;;:::o;777:785::-;876:6;884;892;900;908;961:2;949:9;940:7;936:23;932:32;929:52;;;977:1;974;967:12;929:52;1013:9;1000:23;990:33;;1074:2;1063:9;1059:18;1046:32;1097:18;1138:2;1130:6;1127:14;1124:34;;;1154:1;1151;1144:12;1124:34;1193:58;1243:7;1234:6;1223:9;1219:22;1193:58;:::i;:::-;1270:8;;-1:-1:-1;1167:84:7;-1:-1:-1;1358:2:7;1343:18;;1330:32;;-1:-1:-1;1374:16:7;;;1371:36;;;1403:1;1400;1393:12;1371:36;;1442:60;1494:7;1483:8;1472:9;1468:24;1442:60;:::i;:::-;777:785;;;;-1:-1:-1;777:785:7;;-1:-1:-1;1521:8:7;;1416:86;777:785;-1:-1:-1;;;777:785:7:o;2203:282::-;2270:9;;;2291:11;;;2288:191;;;2335:77;2332:1;2325:88;2436:4;2433:1;2426:15;2464:4;2461:1;2454:15;2490:251;2560:6;2613:2;2601:9;2592:7;2588:23;2584:32;2581:52;;;2629:1;2626;2619:12;2581:52;2661:9;2655:16;2680:31;2705:5;2680:31;:::i;3164:271::-;3347:6;3339;3334:3;3321:33;3303:3;3373:16;;3398:13;;;3373:16;3164:271;-1:-1:-1;3164:271:7:o;3440:250::-;3525:1;3535:113;3549:6;3546:1;3543:13;3535:113;;;3625:11;;;3619:18;3606:11;;;3599:39;3571:2;3564:10;3535:113;;;-1:-1:-1;;3682:1:7;3664:16;;3657:27;3440:250::o;3695:287::-;3824:3;3862:6;3856:13;3878:66;3937:6;3932:3;3925:4;3917:6;3913:17;3878:66;:::i;:::-;3960:16;;;;;3695:287;-1:-1:-1;;3695:287:7:o;4345:455::-;4494:2;4483:9;4476:21;4457:4;4526:6;4520:13;4569:6;4564:2;4553:9;4549:18;4542:34;4585:79;4657:6;4652:2;4641:9;4637:18;4632:2;4624:6;4620:15;4585:79;:::i;:::-;4716:2;4704:15;4721:66;4700:88;4685:104;;;;4791:2;4681:113;;4345:455;-1:-1:-1;;4345:455:7:o"},"methodIdentifiers":{"firewallAdmin()":"f05c8582","safeFunctionCall(uint256,bytes,bytes)":"cb09f61f","setFirewallConsumerStorage(address)":"af076af4"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userNativeFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"vennPolicyPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallConsumerStorage\",\"type\":\"address\"}],\"name\":\"setFirewallConsumerStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"David Benchimol @ Ironblocks\",\"details\":\"This contract is a parent contract that can be used to add firewall protection to any contract. The contract is the most minimal upgradeable contract that implements the FirewallConsumer interface.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"safeFunctionCall(uint256,bytes,bytes)\":{\"details\":\"Allows calling an approved external Venn policy before executing a method. This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before executing a function, allowing synchronous transaction approvals. NOTE: If userNativeFee is non zero, functions using this must take into account that the value received will be slightly less than msg.value due to the fee.\",\"params\":{\"data\":\"data to be executed after the Venn policy call\",\"vennPolicyPayload\":\"payload to be sent to the Venn policy\"}}},\"title\":\"Firewall Minimal Upgradeable Consumer Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol\":\"SimpleUpgradeableFirewallConsumer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol\":{\"keccak256\":\"0x4ab781a5338dfc09c8ef27029a4bad2f4facf84b56eaf8b8b3367b3728212062\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b060b653ea93aa4c6453e4213867937ad4f24bb83b2fcc3c95605ee9f2bb0d3a\",\"dweb:/ipfs/QmdzuuyiDfX755fFe2cD2jmi1vYHvngNj3aXGNDvhWJWNB\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0x1740f678dc4abd112bdec06f27b13b9984bc07a2df2134f5862d31e6436cd67b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://380ab5aa19f4494fc72d4ef33ce6928a4cac4351e5dfa1b48d5ab9fed49921f7\",\"dweb:/ipfs/QmbNCygeWjkf32QzrRP2mS2gF83jaFQYMBWdSCvaGCpKNf\"]},\"contracts/interfaces/IFirewallConsumerStorage.sol\":{\"keccak256\":\"0x1939d1f1b5574ce839b08dbaaa7c899aec16c19f03d182058326e1b3a8eb7269\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://59dac1dab4984d5d8c1374f871ead9a887a2fcea7ce10eabb96fcd3bdd76ce0f\",\"dweb:/ipfs/QmQ6C3D1DUJT4Y5WWvTh2XQENHMqLBFvvwrNF1phZWbG9p\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":6,"contract":"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol:SimpleUpgradeableFirewallConsumer","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":9,"contract":"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol:SimpleUpgradeableFirewallConsumer","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}}}},"contracts/interfaces/IFirewall.sol":{"IFirewall":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"postExecution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes32[]","name":"preValues","type":"bytes32[]"},{"internalType":"bytes32[]","name":"postValues","type":"bytes32[]"}],"name":"postExecutionPrivateInvariants","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"preExecution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"preExecutionPrivateInvariants","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"postExecution(address,bytes,uint256)":"93163a91","postExecutionPrivateInvariants(address,bytes,uint256,bytes32[],bytes32[])":"cacb2838","preExecution(address,bytes,uint256)":"6fe1967c","preExecutionPrivateInvariants(address,bytes,uint256)":"33a0c536"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"postExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"preValues\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"postValues\",\"type\":\"bytes32[]\"}],\"name\":\"postExecutionPrivateInvariants\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"preExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"preExecutionPrivateInvariants\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFirewall.sol\":\"IFirewall\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/interfaces/IFirewallConsumer.sol":{"IFirewallConsumer":{"abi":[{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"firewallAdmin()":"f05c8582"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFirewallConsumer.sol\":\"IFirewallConsumer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0x1740f678dc4abd112bdec06f27b13b9984bc07a2df2134f5862d31e6436cd67b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://380ab5aa19f4494fc72d4ef33ce6928a4cac4351e5dfa1b48d5ab9fed49921f7\",\"dweb:/ipfs/QmbNCygeWjkf32QzrRP2mS2gF83jaFQYMBWdSCvaGCpKNf\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/interfaces/IFirewallConsumerStorage.sol":{"IFirewallConsumerStorage":{"abi":[{"inputs":[],"name":"getApprovedVennPolicy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFirewall","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFirewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUserNativeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getApprovedVennPolicy()":"6064a013","getFirewall()":"51cfdd39","getFirewallAdmin()":"af7f27f4","getUserNativeFee()":"1498be2f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getApprovedVennPolicy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFirewall\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFirewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUserNativeFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFirewallConsumerStorage.sol\":\"IFirewallConsumerStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFirewallConsumerStorage.sol\":{\"keccak256\":\"0x1939d1f1b5574ce839b08dbaaa7c899aec16c19f03d182058326e1b3a8eb7269\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://59dac1dab4984d5d8c1374f871ead9a887a2fcea7ce10eabb96fcd3bdd76ce0f\",\"dweb:/ipfs/QmQ6C3D1DUJT4Y5WWvTh2XQENHMqLBFvvwrNF1phZWbG9p\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}}}}}