{"id":"db590b791234d49ea9baac091b14acfe","_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"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/introspection/ERC165Checker.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Library used to query support of an interface declared via {IERC165}.\n *\n * Note that these functions return the actual result of the query: they do not\n * `revert` if an interface is not supported. It is up to the caller to decide\n * what to do in these cases.\n */\nlibrary ERC165Checker {\n    // As per the EIP-165 spec, no interface should ever match 0xffffffff\n    bytes4 private constant _INTERFACE_ID_INVALID = 0xffffffff;\n\n    /**\n     * @dev Returns true if `account` supports the {IERC165} interface.\n     */\n    function supportsERC165(address account) internal view returns (bool) {\n        // Any contract that implements ERC165 must explicitly indicate support of\n        // InterfaceId_ERC165 and explicitly indicate non-support of InterfaceId_Invalid\n        return\n            supportsERC165InterfaceUnchecked(account, type(IERC165).interfaceId) &&\n            !supportsERC165InterfaceUnchecked(account, _INTERFACE_ID_INVALID);\n    }\n\n    /**\n     * @dev Returns true if `account` supports the interface defined by\n     * `interfaceId`. Support for {IERC165} itself is queried automatically.\n     *\n     * See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(address account, bytes4 interfaceId) internal view returns (bool) {\n        // query support of both ERC165 as per the spec and support of _interfaceId\n        return supportsERC165(account) && supportsERC165InterfaceUnchecked(account, interfaceId);\n    }\n\n    /**\n     * @dev Returns a boolean array where each value corresponds to the\n     * interfaces passed in and whether they're supported or not. This allows\n     * you to batch check interfaces for a contract where your expectation\n     * is that some interfaces may not be supported.\n     *\n     * See {IERC165-supportsInterface}.\n     *\n     * _Available since v3.4._\n     */\n    function getSupportedInterfaces(\n        address account,\n        bytes4[] memory interfaceIds\n    ) internal view returns (bool[] memory) {\n        // an array of booleans corresponding to interfaceIds and whether they're supported or not\n        bool[] memory interfaceIdsSupported = new bool[](interfaceIds.length);\n\n        // query support of ERC165 itself\n        if (supportsERC165(account)) {\n            // query support of each interface in interfaceIds\n            for (uint256 i = 0; i < interfaceIds.length; i++) {\n                interfaceIdsSupported[i] = supportsERC165InterfaceUnchecked(account, interfaceIds[i]);\n            }\n        }\n\n        return interfaceIdsSupported;\n    }\n\n    /**\n     * @dev Returns true if `account` supports all the interfaces defined in\n     * `interfaceIds`. Support for {IERC165} itself is queried automatically.\n     *\n     * Batch-querying can lead to gas savings by skipping repeated checks for\n     * {IERC165} support.\n     *\n     * See {IERC165-supportsInterface}.\n     */\n    function supportsAllInterfaces(address account, bytes4[] memory interfaceIds) internal view returns (bool) {\n        // query support of ERC165 itself\n        if (!supportsERC165(account)) {\n            return false;\n        }\n\n        // query support of each interface in interfaceIds\n        for (uint256 i = 0; i < interfaceIds.length; i++) {\n            if (!supportsERC165InterfaceUnchecked(account, interfaceIds[i])) {\n                return false;\n            }\n        }\n\n        // all interfaces supported\n        return true;\n    }\n\n    /**\n     * @notice Query if a contract implements an interface, does not check ERC165 support\n     * @param account The address of the contract to query for support of an interface\n     * @param interfaceId The interface identifier, as specified in ERC-165\n     * @return true if the contract at account indicates support of the interface with\n     * identifier interfaceId, false otherwise\n     * @dev Assumes that account contains a contract that supports ERC165, otherwise\n     * the behavior of this method is undefined. This precondition can be checked\n     * with {supportsERC165}.\n     *\n     * Some precompiled contracts will falsely indicate support for a given interface, so caution\n     * should be exercised when using this function.\n     *\n     * Interface identification is specified in ERC-165.\n     */\n    function supportsERC165InterfaceUnchecked(address account, bytes4 interfaceId) internal view returns (bool) {\n        // prepare call\n        bytes memory encodedParams = abi.encodeWithSelector(IERC165.supportsInterface.selector, interfaceId);\n\n        // perform static call\n        bool success;\n        uint256 returnSize;\n        uint256 returnValue;\n        assembly {\n            success := staticcall(30000, account, add(encodedParams, 0x20), mload(encodedParams), 0x00, 0x20)\n            returnSize := returndatasize()\n            returnValue := mload(0x00)\n        }\n\n        return success && returnSize >= 0x20 && returnValue > 0;\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"contracts/consumers/FirewallConsumerStorage.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 {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {IFirewall} from \"../interfaces/IFirewall.sol\";\nimport {IFirewallConsumerStorage} from \"../interfaces/IFirewallConsumerStorage.sol\";\n\n/**\n * @title Firewall Consumer Storage 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 must define a firewall contract which will manage the policies that are applied to the contract.\n * It also must define a firewall admin which will be able to add and remove policies.\n *\n */\ncontract FirewallConsumerStorage is IFirewallConsumerStorage {\n\n    // This slot is used to store the firewall address\n    bytes32 private constant FIREWALL_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall\")) - 1);\n\n    // This slot is used to store the firewall admin address\n    bytes32 private constant FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall.admin\")) - 1);\n\n    // This slot is used to store the new firewall admin address (when changing admin)\n    bytes32 private constant NEW_FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.new.firewall.admin\")) - 1);\n\n    // This slot is special since it's used for mappings and not a single value\n    bytes32 private constant APPROVED_TARGET_SLOT = bytes32(uint256(keccak256(\"eip1967.approved.target\")) - 1);\n\n    bytes32 private constant USER_NATIVE_FEE_SLOT = bytes32(uint256(keccak256(\"eip1967.user.native.fee\")) - 1);\n\n    event FirewallAdminUpdated(address newAdmin);\n    event FirewallUpdated(address newFirewall);\n\n    /**\n     * @dev modifier similar to onlyOwner, but for the firewall admin.\n     */\n    modifier onlyFirewallAdmin() {\n        require(msg.sender == _getAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT), \"FirewallConsumer: not firewall admin\");\n        _;\n    }\n\n    /**\n     * @dev Initializes a contract protected by a firewall, with a firewall address and a firewall admin.\n     */\n    constructor(\n        address _firewall,\n        address _firewallAdmin\n    ) {\n        _setAddressBySlot(FIREWALL_STORAGE_SLOT, _firewall);\n        _setAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT, _firewallAdmin);\n    }\n\n    function getApprovedTarget() external view returns (address) {\n        return _getAddressBySlot(APPROVED_TARGET_SLOT);\n    }\n\n    function getUserNativeFee() external view returns (uint256) {\n        return uint256(_getValueBySlot(USER_NATIVE_FEE_SLOT));\n    }\n\n    function getFirewall() external view returns (address) {\n        return _getAddressBySlot(FIREWALL_STORAGE_SLOT);\n    }\n\n    function getFirewallAdmin() external view returns (address) {\n        return _getAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT);\n    }\n\n    /**\n     * @dev Allows firewall admin to set target.\n     * IMPORTANT: Only set approved target if you know what you're doing. Anyone can cause this contract\n     * to send any data to an approved target.\n     *\n     * @param target address of the target\n     */\n    function setTarget(address target) external onlyFirewallAdmin {\n        _setAddressBySlot(APPROVED_TARGET_SLOT, target);\n    }\n\n    /**\n     * @dev Allows firewall admin to set user native fee for safeFunctionCall.\n     *\n     * @param fee native fee for the user\n     */\n    function setUserNativeFee(uint256 fee) external onlyFirewallAdmin {\n        _setValueBySlot(USER_NATIVE_FEE_SLOT, fee);\n    }\n\n    /**\n     * @dev Admin only function allowing the consumers admin to set the firewall address.\n     * @param _firewall address of the firewall\n     */\n    function setFirewall(address _firewall) external onlyFirewallAdmin {\n        _setAddressBySlot(FIREWALL_STORAGE_SLOT, _firewall);\n        emit FirewallUpdated(_firewall);\n    }\n\n    /**\n     * @dev Admin only function, sets new firewall admin. New admin must accept.\n     * @param _firewallAdmin address of the new firewall admin\n     */\n    function setFirewallAdmin(address _firewallAdmin) external onlyFirewallAdmin {\n        require(_firewallAdmin != address(0), \"FirewallConsumer: zero address\");\n        _setAddressBySlot(NEW_FIREWALL_ADMIN_STORAGE_SLOT, _firewallAdmin);\n    }\n\n    /**\n     * @dev Accept the role as firewall admin.\n     */\n    function acceptFirewallAdmin() external {\n        require(msg.sender == _getAddressBySlot(NEW_FIREWALL_ADMIN_STORAGE_SLOT), \"FirewallConsumer: not new admin\");\n        _setAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT, msg.sender);\n        emit FirewallAdminUpdated(msg.sender);\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    function _setValueBySlot(bytes32 _slot, uint256 _value) internal {\n        assembly {\n            sstore(_slot, _value)\n        }\n    }\n\n    /**\n     * @dev Internal helper function to get a value from a storage slot\n     * @param _slot storage slot\n     * @return _value from the storage slot\n     */\n    function _getValueBySlot(bytes32 _slot) internal view returns (bytes32 _value) {\n        assembly {\n            _value := sload(_slot)\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\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        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 target 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 targetPayload payload to be sent to the target\n     * @param data data to be executed after the target call\n     */\n    function safeFunctionCall(\n        bytes calldata targetPayload,\n        bytes calldata data\n    ) external payable {\n        address firewallConsumerStorage = _getFirewallConsumerStorage();\n        address target = IFirewallConsumerStorage(firewallConsumerStorage).getApprovedTarget();\n        uint256 userNativeFee = IFirewallConsumerStorage(firewallConsumerStorage).getUserNativeFee();\n        require(msg.value >= userNativeFee, \"FirewallConsumer: Not enough native value for fee\");\n        (bool success,) = target.call{value: userNativeFee}(targetPayload);\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_STORAGE_SLOT, _firewallConsumerStorage);\n    }\n\n    function __SimpleUpgradeableFirewallConsumer_init(address _firewallConsumerStorage) internal onlyInitializing {\n        _setAddressBySlot(FIREWALL_CONSUMER_STORAGE_SLOT, _firewallConsumerStorage);\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        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/FirewallConsumer.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\nimport {FirewallConsumerBase} from \"./FirewallConsumerBase.sol\";\n\n/**\n * @title Firewall Consumer\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 must initializes with the firewall contract disabled, and the deployer\n * as the firewall admin.\n *\n */\ncontract FirewallConsumer is FirewallConsumerBase(address(0), msg.sender) {\n}"},"contracts/FirewallConsumerBase.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\nimport {ERC165Checker} from \"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {Context} from \"@openzeppelin/contracts/utils/Context.sol\";\nimport {IFirewall} from \"./interfaces/IFirewall.sol\";\nimport {IFirewallConsumer} from \"./interfaces/IFirewallConsumer.sol\";\n\n/**\n * @title Firewall Consumer Base 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 must define a firewall contract which will manage the policies that are applied to the contract.\n * It also must define a firewall admin which will be able to add and remove policies.\n *\n */\ncontract FirewallConsumerBase is IFirewallConsumer, Context {\n\n    // This slot is used to store the firewall address\n    bytes32 private constant FIREWALL_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall\")) - 1);\n\n    // This slot is used to store the firewall admin address\n    bytes32 private constant FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall.admin\")) - 1);\n\n    // This slot is used to store the new firewall admin address (when changing admin)\n    bytes32 private constant NEW_FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.new.firewall.admin\")) - 1);\n    bytes4 private constant SUPPORTS_APPROVE_VIA_SIGNATURE_INTERFACE_ID = bytes4(0x0c908cff); // sighash of approveCallsViaSignature\n\n    // This slot is special since it's used for mappings and not a single value\n    bytes32 private constant APPROVED_TARGETS_MAPPING_SLOT = bytes32(uint256(keccak256(\"eip1967.approved.targets\")) - 1);\n\n    event FirewallAdminUpdated(address newAdmin);\n    event FirewallUpdated(address newFirewall);\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 firewall = _getAddressBySlot(FIREWALL_STORAGE_SLOT);\n        if (firewall == address(0)) {\n            _;\n            return;\n        }\n        uint256 value = _msgValue();\n        IFirewall(firewall).preExecution(_msgSender(), _msgData(), value);\n        _;\n        IFirewall(firewall).postExecution(_msgSender(), _msgData(), value);\n    }\n\n    /**\n     * @dev modifier that will run the preExecution and postExecution hooks of the firewall, applying each of\n     * the subscribed policies. Allows passing custom data to the firewall, not necessarily msg.data.\n     * Useful for checking internal function calls\n     *\n     * @param data custom data to be passed to the firewall\n     * NOTE: Using this modifier affects the data that is passed to the firewall, and as such it is mainly meant\n     * to be used by internal functions, and only in conjuction with policies that whose protection strategy\n     * requires this data.\n     *\n     * Using this modifier incorrectly may result in unexpected behavior.\n     *\n     * If you have any questions on how or when to use this modifier, please refer to the Firewall's documentation\n     * and/or contact our support.\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 firewallProtectedCustom(bytes memory data) {\n        address firewall = _getAddressBySlot(FIREWALL_STORAGE_SLOT);\n        if (firewall == address(0)) {\n            _;\n            return;\n        }\n        uint256 value = _msgValue();\n        IFirewall(firewall).preExecution(_msgSender(), data, value);\n        _;\n        IFirewall(firewall).postExecution(_msgSender(), data, value);\n    }\n\n    /**\n     * @dev identical to the rest of the modifiers in terms of logic, but makes it more\n     * aesthetic when all you want to pass are signatures/unique identifiers.\n     *\n     * @param selector unique identifier for the function\n     *\n     * NOTE: Using this modifier affects the data that is passed to the firewall, and as such it is mainly to\n     * be used by policies that whose protection strategy relies on the function's signature hahs.\n     *\n     * Using this modifier incorrectly may result in unexpected behavior.\n     *\n     * If you have any questions on how or when to use this modifier, please refer to the Firewall's documentation\n     * and/or contact our support.\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 firewallProtectedSig(bytes4 selector) {\n        address firewall = _getAddressBySlot(FIREWALL_STORAGE_SLOT);\n        if (firewall == address(0)) {\n            _;\n            return;\n        }\n        uint256 value = _msgValue();\n        IFirewall(firewall).preExecution(_msgSender(), abi.encodePacked(selector), value);\n        _;\n        IFirewall(firewall).postExecution(_msgSender(), abi.encodePacked(selector), value);\n    }\n\n    /**\n     * @dev modifier that will run the preExecution and postExecution hooks of the firewall invariant policy,\n     * applying the subscribed invariant policy\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 invariantProtected() {\n        address firewall = _getAddressBySlot(FIREWALL_STORAGE_SLOT);\n        if (firewall == address(0)) {\n            _;\n            return;\n        }\n        uint256 value = _msgValue();\n        bytes32[] memory storageSlots = IFirewall(firewall).preExecutionPrivateInvariants(_msgSender(), _msgData(), value);\n        bytes32[] memory preValues = _readStorage(storageSlots);\n        _;\n        bytes32[] memory postValues = _readStorage(storageSlots);\n        IFirewall(firewall).postExecutionPrivateInvariants(_msgSender(), _msgData(), value, preValues, postValues);\n    }\n\n\n    /**\n     * @dev modifier asserting that the target is approved\n     * @param target address of the target\n     */\n    modifier onlyApprovedTarget(address target) {\n        // We use the same logic that solidity uses for mapping locations, but we add a pseudorandom\n        // constant \"salt\" instead of a constant placeholder so that there are no storage collisions\n        // if adding this to an upgradeable contract implementation\n        bytes32 _slot = keccak256(abi.encode(APPROVED_TARGETS_MAPPING_SLOT, target));\n        bool isApprovedTarget = _getValueBySlot(_slot) != bytes32(0);\n        require(isApprovedTarget, \"FirewallConsumer: Not approved target\");\n        require(ERC165Checker.supportsERC165InterfaceUnchecked(target, SUPPORTS_APPROVE_VIA_SIGNATURE_INTERFACE_ID));\n        _;\n    }\n\n    /**\n     * @dev modifier similar to onlyOwner, but for the firewall admin.\n     */\n    modifier onlyFirewallAdmin() {\n        require(msg.sender == _getAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT), \"FirewallConsumer: not firewall admin\");\n        _;\n    }\n\n    /**\n     * @dev Initializes a contract protected by a firewall, with a firewall address and a firewall admin.\n     */\n    constructor(\n        address _firewall,\n        address _firewallAdmin\n    ) {\n        _setAddressBySlot(FIREWALL_STORAGE_SLOT, _firewall);\n        _setAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT, _firewallAdmin);\n    }\n\n    /**\n     * @dev Allows calling an approved external target 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     * @param target address of the target\n     * @param targetPayload payload to be sent to the target\n     * @param data data to be executed after the target call\n     */\n    function safeFunctionCall(\n        address target,\n        bytes calldata targetPayload,\n        bytes calldata data\n    ) external payable onlyApprovedTarget(target) {\n        (bool success, ) = target.call(targetPayload);\n        require(success);\n        require(msg.sender == _msgSender(), \"FirewallConsumer: No meta transactions\");\n        Address.functionDelegateCall(address(this), data);\n    }\n\n    /**\n     * @dev Allows firewall admin to set approved targets.\n     * IMPORTANT: Only set approved target if you know what you're doing. Anyone can cause this contract\n     * to send any data to an approved target.\n     *\n     * @param target address of the target\n     * @param status status of the target\n     */\n    function setApprovedTarget(address target, bool status) external onlyFirewallAdmin {\n        bytes32 _slot = keccak256(abi.encode(APPROVED_TARGETS_MAPPING_SLOT, target));\n        assembly {\n            sstore(_slot, status)\n        }\n    }\n\n    /**\n     * @dev View function for the firewall admin\n     */\n    function firewallAdmin() external override view returns (address) {\n        return _getAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT);\n    }\n\n    /**\n     * @dev Admin only function allowing the consumers admin to set the firewall address.\n     * @param _firewall address of the firewall\n     */\n    function setFirewall(address _firewall) external onlyFirewallAdmin {\n        _setAddressBySlot(FIREWALL_STORAGE_SLOT, _firewall);\n        emit FirewallUpdated(_firewall);\n    }\n\n    /**\n     * @dev Admin only function, sets new firewall admin. New admin must accept.\n     * @param _firewallAdmin address of the new firewall admin\n     */\n    function setFirewallAdmin(address _firewallAdmin) external onlyFirewallAdmin {\n        require(_firewallAdmin != address(0), \"FirewallConsumer: zero address\");\n        _setAddressBySlot(NEW_FIREWALL_ADMIN_STORAGE_SLOT, _firewallAdmin);\n    }\n\n    /**\n     * @dev Accept the role as firewall admin.\n     */\n    function acceptFirewallAdmin() external {\n        require(msg.sender == _getAddressBySlot(NEW_FIREWALL_ADMIN_STORAGE_SLOT), \"FirewallConsumer: not new admin\");\n        _setAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT, msg.sender);\n        emit FirewallAdminUpdated(msg.sender);\n    }\n\n    /**\n     * @dev Internal helper funtion to get the msg.value\n     * @return value of the msg.value\n     */\n    function _msgValue() internal view returns (uint256 value) {\n        // We do this because msg.value can only be accessed in payable functions.\n        assembly {\n            value := callvalue()\n        }\n    }\n\n    /**\n     * @dev Internal helper function to read storage slots\n     * @param storageSlots array of storage slots\n     */\n    function _readStorage(bytes32[] memory storageSlots) internal view returns (bytes32[] memory) {\n        uint256 slotsLength = storageSlots.length;\n        bytes32[] memory values = new bytes32[](slotsLength);\n\n        for (uint256 i = 0; i < slotsLength; i++) {\n            bytes32 slotValue = _getValueBySlot(storageSlots[i]);\n            values[i] = slotValue;\n        }\n        return values;\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    /**\n     * @dev Internal helper function to get a value from a storage slot\n     * @param _slot storage slot\n     * @return _value from the storage slot\n     */\n    function _getValueBySlot(bytes32 _slot) internal view returns (bytes32 _value) {\n        assembly {\n            _value := sload(_slot)\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 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 getApprovedTarget() external view returns (address);\n    function getUserNativeFee() external view returns (uint256);\n}"},"contracts/interfaces/IOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8;\n\ninterface IOwnable {\n    function owner() external view returns (address);\n}"},"contracts/proxies/BeaconProxyFirewallConsumer.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\nimport {ProxyFirewallConsumerBase} from \"./ProxyFirewallConsumerBase.sol\";\n\n/**\n * @title BeaconProxyFirewallConsumer\n * @notice this extension allows the Beacon Proxy Owner to initialize the firewall admin even if the contract was originally deployed\n * with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n */\ncontract BeaconProxyFirewallConsumer is ProxyFirewallConsumerBase {\n    // This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1\n    bytes32 private constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n    /**\n     * @dev Beacon Proxy Owner only function, allows the Beacon Proxy Owner to initialize the firewall admin in the following cases:\n     * - If the contract was originally deployed with a zero-address in the constructor (for various reasons)\n     * - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n     * @param _firewallAdmin address of the firewall admin\n     */\n    function initializeFirewallAdmin(address _firewallAdmin) isAllowedInitializer(BEACON_SLOT) external {\n        _initializeFirewallAdmin(_firewallAdmin);\n    }\n}"},"contracts/proxies/ProxyFirewallConsumerBase.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\nimport {FirewallConsumerBase} from \"../FirewallConsumerBase.sol\";\nimport {IOwnable} from \"../interfaces/IOwnable.sol\";\n\n/**\n * @title BeaconProxyFirewallConsumer\n * @notice this extension allows the Beacon Proxy Owner to initialize the firewall admin even if the contract was originally deployed\n * with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n */\ncontract ProxyFirewallConsumerBase is FirewallConsumerBase(address(0), address(0)) {\n    bytes32 private constant FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall.admin\")) - 1);\n\n    // This slot is used to store the new firewall admin address (when changing admin)\n    bytes32 private constant NEW_FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.new.firewall.admin\")) - 1);\n\n    modifier isAllowedInitializer(bytes32 _admin_memory_slot) {\n        address initializerAddress = _getAddressBySlot(_admin_memory_slot);\n        address initializerOwner = IOwnable(initializerAddress).owner();\n        require(msg.sender == initializerOwner, \"ProxyFirewallConsumerBase: sender is not allowed\");\n        _;\n    }\n\n    /**\n     * @dev Beacon Proxy Owner only function, allows the Beacon Proxy Owner to initialize the firewall admin in the following cases:\n     * - If the contract was originally deployed with a zero-address in the constructor (for various reasons)\n     * - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n     * @param _firewallAdmin address of the firewall admin\n     */\n    function _initializeFirewallAdmin(address _firewallAdmin) internal {\n        require(_firewallAdmin != address(0), \"ProxyFirewallConsumerBase: zero address\");\n        require(_getAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT) == address(0), \"ProxyFirewallConsumerBase: admin already set\");\n\n        _setAddressBySlot(NEW_FIREWALL_ADMIN_STORAGE_SLOT, _firewallAdmin);\n    }\n}"},"contracts/proxies/TransparentProxyFirewallConsumer.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\nimport {ProxyFirewallConsumerBase} from \"./ProxyFirewallConsumerBase.sol\";\n\n/**\n * @title TransparentProxyFirewallConsumer\n * @notice For proxies that implement ERC1967 with an admin slot, this extension allows the Proxy Admin to initialize the firewall admin\n * even when the contract was originally deployed with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n */\ncontract TransparentProxyFirewallConsumer is ProxyFirewallConsumerBase {\n    // This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1\n    bytes32 private constant PROXY_ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n    /**\n     * @dev Proxy Admin only function, allows the Proxy Admin to initialize the firewall admin in the following cases:\n     * - If the contract was originally deployed with a zero-address in the constructor (for various reasons)\n     * - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n     * @param _firewallAdmin address of the firewall admin\n     */\n    function initializeFirewallAdmin(address _firewallAdmin) isAllowedInitializer(PROXY_ADMIN_SLOT) external {\n        _initializeFirewallAdmin(_firewallAdmin);\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},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[850]},"id":851,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":830,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:3"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":831,"nodeType":"StructuredDocumentation","src":"111:496:3","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":850,"linearizedBaseContracts":[850],"name":"Context","nameLocation":"626:7:3","nodeType":"ContractDefinition","nodes":[{"body":{"id":839,"nodeType":"Block","src":"702:34:3","statements":[{"expression":{"expression":{"id":836,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"723:6:3","memberName":"sender","nodeType":"MemberAccess","src":"719:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":835,"id":838,"nodeType":"Return","src":"712:17:3"}]},"id":840,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:3","nodeType":"FunctionDefinition","parameters":{"id":832,"nodeType":"ParameterList","parameters":[],"src":"659:2:3"},"returnParameters":{"id":835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":840,"src":"693:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":833,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:3"},"scope":850,"src":"640:96:3","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":848,"nodeType":"Block","src":"809:32:3","statements":[{"expression":{"expression":{"id":845,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"830:4:3","memberName":"data","nodeType":"MemberAccess","src":"826:8:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":844,"id":847,"nodeType":"Return","src":"819:15:3"}]},"id":849,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:3","nodeType":"FunctionDefinition","parameters":{"id":841,"nodeType":"ParameterList","parameters":[],"src":"759:2:3"},"returnParameters":{"id":844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":849,"src":"793:14:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":842,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:3"},"scope":850,"src":"742:99:3","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":851,"src":"608:235:3","usedErrors":[]}],"src":"86:758:3"},"id":3},"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol","exportedSymbols":{"ERC165Checker":[1044],"IERC165":[1056]},"id":1045,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":852,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"121:23:4"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":853,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1045,"sourceUnit":1057,"src":"146:23:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC165Checker","contractDependencies":[],"contractKind":"library","documentation":{"id":854,"nodeType":"StructuredDocumentation","src":"171:277:4","text":" @dev Library used to query support of an interface declared via {IERC165}.\n Note that these functions return the actual result of the query: they do not\n `revert` if an interface is not supported. It is up to the caller to decide\n what to do in these cases."},"fullyImplemented":true,"id":1044,"linearizedBaseContracts":[1044],"name":"ERC165Checker","nameLocation":"457:13:4","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":857,"mutability":"constant","name":"_INTERFACE_ID_INVALID","nameLocation":"575:21:4","nodeType":"VariableDeclaration","scope":1044,"src":"551:58:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":855,"name":"bytes4","nodeType":"ElementaryTypeName","src":"551:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30786666666666666666","id":856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"599:10:4","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"visibility":"private"},{"body":{"id":879,"nodeType":"Block","src":"774:357:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":866,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"1008:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":868,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1056,"src":"1022:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1056_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1056_$","typeString":"type(contract IERC165)"}],"id":867,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1017:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1017:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1056","typeString":"type(contract IERC165)"}},"id":870,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1031:11:4","memberName":"interfaceId","nodeType":"MemberAccess","src":"1017:25:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":865,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"975:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"975:68:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1059:65:4","subExpression":{"arguments":[{"id":873,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"1093:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":874,"name":"_INTERFACE_ID_INVALID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"1102:21:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":872,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1060:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1060:64:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"975:149:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":864,"id":878,"nodeType":"Return","src":"956:168:4"}]},"documentation":{"id":858,"nodeType":"StructuredDocumentation","src":"616:83:4","text":" @dev Returns true if `account` supports the {IERC165} interface."},"id":880,"implemented":true,"kind":"function","modifiers":[],"name":"supportsERC165","nameLocation":"713:14:4","nodeType":"FunctionDefinition","parameters":{"id":861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":860,"mutability":"mutable","name":"account","nameLocation":"736:7:4","nodeType":"VariableDeclaration","scope":880,"src":"728:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":859,"name":"address","nodeType":"ElementaryTypeName","src":"728:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"727:17:4"},"returnParameters":{"id":864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":863,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":880,"src":"768:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":862,"name":"bool","nodeType":"ElementaryTypeName","src":"768:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"767:6:4"},"scope":1044,"src":"704:427:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":899,"nodeType":"Block","src":"1442:189:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":891,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"1558:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":890,"name":"supportsERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"1543:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1543:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":894,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"1603:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":895,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"1612:11:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":893,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1570:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1570:54:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1543:81:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":889,"id":898,"nodeType":"Return","src":"1536:88:4"}]},"documentation":{"id":881,"nodeType":"StructuredDocumentation","src":"1137:207:4","text":" @dev Returns true if `account` supports the interface defined by\n `interfaceId`. Support for {IERC165} itself is queried automatically.\n See {IERC165-supportsInterface}."},"id":900,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1358:17:4","nodeType":"FunctionDefinition","parameters":{"id":886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":883,"mutability":"mutable","name":"account","nameLocation":"1384:7:4","nodeType":"VariableDeclaration","scope":900,"src":"1376:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":882,"name":"address","nodeType":"ElementaryTypeName","src":"1376:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":885,"mutability":"mutable","name":"interfaceId","nameLocation":"1400:11:4","nodeType":"VariableDeclaration","scope":900,"src":"1393:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":884,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1393:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1375:37:4"},"returnParameters":{"id":889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":888,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":900,"src":"1436:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":887,"name":"bool","nodeType":"ElementaryTypeName","src":"1436:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1435:6:4"},"scope":1044,"src":"1349:282:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":955,"nodeType":"Block","src":"2155:560:4","statements":[{"assignments":[916],"declarations":[{"constant":false,"id":916,"mutability":"mutable","name":"interfaceIdsSupported","nameLocation":"2278:21:4","nodeType":"VariableDeclaration","scope":955,"src":"2264:35:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":914,"name":"bool","nodeType":"ElementaryTypeName","src":"2264:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":915,"nodeType":"ArrayTypeName","src":"2264:6:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"id":923,"initialValue":{"arguments":[{"expression":{"id":920,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"2313:12:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2326:6:4","memberName":"length","nodeType":"MemberAccess","src":"2313:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2302:10:4","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bool[] memory)"},"typeName":{"baseType":{"id":917,"name":"bool","nodeType":"ElementaryTypeName","src":"2306:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"ArrayTypeName","src":"2306:6:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}}},"id":922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2302:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2264:69:4"},{"condition":{"arguments":[{"id":925,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"2405:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":924,"name":"supportsERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"2390:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2390:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":952,"nodeType":"IfStatement","src":"2386:284:4","trueBody":{"id":951,"nodeType":"Block","src":"2415:255:4","statements":[{"body":{"id":949,"nodeType":"Block","src":"2542:118:4","statements":[{"expression":{"id":947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":938,"name":"interfaceIdsSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":916,"src":"2560:21:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":940,"indexExpression":{"id":939,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2582:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2560:24:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":942,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"2620:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":943,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"2629:12:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":945,"indexExpression":{"id":944,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2642:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2629:15:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":941,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"2587:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2587:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2560:85:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":948,"nodeType":"ExpressionStatement","src":"2560:85:4"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":931,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2512:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":932,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"2516:12:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2529:6:4","memberName":"length","nodeType":"MemberAccess","src":"2516:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2512:23:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":950,"initializationExpression":{"assignments":[928],"declarations":[{"constant":false,"id":928,"mutability":"mutable","name":"i","nameLocation":"2505:1:4","nodeType":"VariableDeclaration","scope":950,"src":"2497:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":927,"name":"uint256","nodeType":"ElementaryTypeName","src":"2497:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":930,"initialValue":{"hexValue":"30","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2509:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2497:13:4"},"loopExpression":{"expression":{"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2537:3:4","subExpression":{"id":935,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2537:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":937,"nodeType":"ExpressionStatement","src":"2537:3:4"},"nodeType":"ForStatement","src":"2492:168:4"}]}},{"expression":{"id":953,"name":"interfaceIdsSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":916,"src":"2687:21:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"functionReturnParameters":911,"id":954,"nodeType":"Return","src":"2680:28:4"}]},"documentation":{"id":901,"nodeType":"StructuredDocumentation","src":"1637:374:4","text":" @dev Returns a boolean array where each value corresponds to the\n interfaces passed in and whether they're supported or not. This allows\n you to batch check interfaces for a contract where your expectation\n is that some interfaces may not be supported.\n See {IERC165-supportsInterface}.\n _Available since v3.4._"},"id":956,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedInterfaces","nameLocation":"2025:22:4","nodeType":"FunctionDefinition","parameters":{"id":907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":903,"mutability":"mutable","name":"account","nameLocation":"2065:7:4","nodeType":"VariableDeclaration","scope":956,"src":"2057:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":902,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":906,"mutability":"mutable","name":"interfaceIds","nameLocation":"2098:12:4","nodeType":"VariableDeclaration","scope":956,"src":"2082:28:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":904,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2082:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":905,"nodeType":"ArrayTypeName","src":"2082:8:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"2047:69:4"},"returnParameters":{"id":911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":956,"src":"2140:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":908,"name":"bool","nodeType":"ElementaryTypeName","src":"2140:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":909,"nodeType":"ArrayTypeName","src":"2140:6:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"2139:15:4"},"scope":1044,"src":"2016:699:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1001,"nodeType":"Block","src":"3157:436:4","statements":[{"condition":{"id":970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3213:24:4","subExpression":{"arguments":[{"id":968,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"3229:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":967,"name":"supportsERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"3214:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3214:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":974,"nodeType":"IfStatement","src":"3209:67:4","trueBody":{"id":973,"nodeType":"Block","src":"3239:37:4","statements":[{"expression":{"hexValue":"66616c7365","id":971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3260:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":966,"id":972,"nodeType":"Return","src":"3253:12:4"}]}},{"body":{"id":997,"nodeType":"Block","src":"3395:134:4","statements":[{"condition":{"id":992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3413:59:4","subExpression":{"arguments":[{"id":987,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"3447:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":988,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"3456:12:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":990,"indexExpression":{"id":989,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"3469:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3456:15:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":986,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"3414:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3414:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":996,"nodeType":"IfStatement","src":"3409:110:4","trueBody":{"id":995,"nodeType":"Block","src":"3474:45:4","statements":[{"expression":{"hexValue":"66616c7365","id":993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3499:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":966,"id":994,"nodeType":"Return","src":"3492:12:4"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":979,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"3365:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":980,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"3369:12:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3382:6:4","memberName":"length","nodeType":"MemberAccess","src":"3369:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3365:23:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":998,"initializationExpression":{"assignments":[976],"declarations":[{"constant":false,"id":976,"mutability":"mutable","name":"i","nameLocation":"3358:1:4","nodeType":"VariableDeclaration","scope":998,"src":"3350:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":975,"name":"uint256","nodeType":"ElementaryTypeName","src":"3350:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":978,"initialValue":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3362:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3350:13:4"},"loopExpression":{"expression":{"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3390:3:4","subExpression":{"id":983,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"3390:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":985,"nodeType":"ExpressionStatement","src":"3390:3:4"},"nodeType":"ForStatement","src":"3345:184:4"},{"expression":{"hexValue":"74727565","id":999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3582:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":966,"id":1000,"nodeType":"Return","src":"3575:11:4"}]},"documentation":{"id":957,"nodeType":"StructuredDocumentation","src":"2721:324:4","text":" @dev Returns true if `account` supports all the interfaces defined in\n `interfaceIds`. Support for {IERC165} itself is queried automatically.\n Batch-querying can lead to gas savings by skipping repeated checks for\n {IERC165} support.\n See {IERC165-supportsInterface}."},"id":1002,"implemented":true,"kind":"function","modifiers":[],"name":"supportsAllInterfaces","nameLocation":"3059:21:4","nodeType":"FunctionDefinition","parameters":{"id":963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":959,"mutability":"mutable","name":"account","nameLocation":"3089:7:4","nodeType":"VariableDeclaration","scope":1002,"src":"3081:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":958,"name":"address","nodeType":"ElementaryTypeName","src":"3081:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":962,"mutability":"mutable","name":"interfaceIds","nameLocation":"3114:12:4","nodeType":"VariableDeclaration","scope":1002,"src":"3098:28:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":960,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3098:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":961,"nodeType":"ArrayTypeName","src":"3098:8:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"3080:47:4"},"returnParameters":{"id":966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":965,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1002,"src":"3151:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":964,"name":"bool","nodeType":"ElementaryTypeName","src":"3151:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3150:6:4"},"scope":1044,"src":"3050:543:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1042,"nodeType":"Block","src":"4529:539:4","statements":[{"assignments":[1013],"declarations":[{"constant":false,"id":1013,"mutability":"mutable","name":"encodedParams","nameLocation":"4576:13:4","nodeType":"VariableDeclaration","scope":1042,"src":"4563:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1012,"name":"bytes","nodeType":"ElementaryTypeName","src":"4563:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1021,"initialValue":{"arguments":[{"expression":{"expression":{"id":1016,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1056,"src":"4615:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1056_$","typeString":"type(contract IERC165)"}},"id":1017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4623:17:4","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1055,"src":"4615:25:4","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes4_$returns$_t_bool_$","typeString":"function IERC165.supportsInterface(bytes4) view returns (bool)"}},"id":1018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4641:8:4","memberName":"selector","nodeType":"MemberAccess","src":"4615:34:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":1019,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"4651:11:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1014,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4592:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4596:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4592:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":1020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4592:71:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4563:100:4"},{"assignments":[1023],"declarations":[{"constant":false,"id":1023,"mutability":"mutable","name":"success","nameLocation":"4710:7:4","nodeType":"VariableDeclaration","scope":1042,"src":"4705:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1022,"name":"bool","nodeType":"ElementaryTypeName","src":"4705:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1024,"nodeType":"VariableDeclarationStatement","src":"4705:12:4"},{"assignments":[1026],"declarations":[{"constant":false,"id":1026,"mutability":"mutable","name":"returnSize","nameLocation":"4735:10:4","nodeType":"VariableDeclaration","scope":1042,"src":"4727:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1025,"name":"uint256","nodeType":"ElementaryTypeName","src":"4727:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1027,"nodeType":"VariableDeclarationStatement","src":"4727:18:4"},{"assignments":[1029],"declarations":[{"constant":false,"id":1029,"mutability":"mutable","name":"returnValue","nameLocation":"4763:11:4","nodeType":"VariableDeclaration","scope":1042,"src":"4755:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1028,"name":"uint256","nodeType":"ElementaryTypeName","src":"4755:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1030,"nodeType":"VariableDeclarationStatement","src":"4755:19:4"},{"AST":{"nodeType":"YulBlock","src":"4793:203:4","statements":[{"nodeType":"YulAssignment","src":"4807:97:4","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4829:5:4","type":"","value":"30000"},{"name":"account","nodeType":"YulIdentifier","src":"4836:7:4"},{"arguments":[{"name":"encodedParams","nodeType":"YulIdentifier","src":"4849:13:4"},{"kind":"number","nodeType":"YulLiteral","src":"4864:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4845:3:4"},"nodeType":"YulFunctionCall","src":"4845:24:4"},{"arguments":[{"name":"encodedParams","nodeType":"YulIdentifier","src":"4877:13:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4871:5:4"},"nodeType":"YulFunctionCall","src":"4871:20:4"},{"kind":"number","nodeType":"YulLiteral","src":"4893:4:4","type":"","value":"0x00"},{"kind":"number","nodeType":"YulLiteral","src":"4899:4:4","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"4818:10:4"},"nodeType":"YulFunctionCall","src":"4818:86:4"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"4807:7:4"}]},{"nodeType":"YulAssignment","src":"4917:30:4","value":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4931:14:4"},"nodeType":"YulFunctionCall","src":"4931:16:4"},"variableNames":[{"name":"returnSize","nodeType":"YulIdentifier","src":"4917:10:4"}]},{"nodeType":"YulAssignment","src":"4960:26:4","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4981:4:4","type":"","value":"0x00"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4975:5:4"},"nodeType":"YulFunctionCall","src":"4975:11:4"},"variableNames":[{"name":"returnValue","nodeType":"YulIdentifier","src":"4960:11:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1005,"isOffset":false,"isSlot":false,"src":"4836:7:4","valueSize":1},{"declaration":1013,"isOffset":false,"isSlot":false,"src":"4849:13:4","valueSize":1},{"declaration":1013,"isOffset":false,"isSlot":false,"src":"4877:13:4","valueSize":1},{"declaration":1026,"isOffset":false,"isSlot":false,"src":"4917:10:4","valueSize":1},{"declaration":1029,"isOffset":false,"isSlot":false,"src":"4960:11:4","valueSize":1},{"declaration":1023,"isOffset":false,"isSlot":false,"src":"4807:7:4","valueSize":1}],"id":1031,"nodeType":"InlineAssembly","src":"4784:212:4"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1032,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1023,"src":"5013:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1033,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"5024:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30783230","id":1034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5038:4:4","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5024:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5013:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1037,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"5046:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5060:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5046:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5013:48:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1011,"id":1041,"nodeType":"Return","src":"5006:55:4"}]},"documentation":{"id":1003,"nodeType":"StructuredDocumentation","src":"3599:817:4","text":" @notice Query if a contract implements an interface, does not check ERC165 support\n @param account The address of the contract to query for support of an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @return true if the contract at account indicates support of the interface with\n identifier interfaceId, false otherwise\n @dev Assumes that account contains a contract that supports ERC165, otherwise\n the behavior of this method is undefined. This precondition can be checked\n with {supportsERC165}.\n Some precompiled contracts will falsely indicate support for a given interface, so caution\n should be exercised when using this function.\n Interface identification is specified in ERC-165."},"id":1043,"implemented":true,"kind":"function","modifiers":[],"name":"supportsERC165InterfaceUnchecked","nameLocation":"4430:32:4","nodeType":"FunctionDefinition","parameters":{"id":1008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1005,"mutability":"mutable","name":"account","nameLocation":"4471:7:4","nodeType":"VariableDeclaration","scope":1043,"src":"4463:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1004,"name":"address","nodeType":"ElementaryTypeName","src":"4463:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1007,"mutability":"mutable","name":"interfaceId","nameLocation":"4487:11:4","nodeType":"VariableDeclaration","scope":1043,"src":"4480:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1006,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4480:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4462:37:4"},"returnParameters":{"id":1011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1010,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1043,"src":"4523:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1009,"name":"bool","nodeType":"ElementaryTypeName","src":"4523:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4522:6:4"},"scope":1044,"src":"4421:647:4","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1045,"src":"449:4621:4","usedErrors":[]}],"src":"121:4950:4"},"id":4},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[1056]},"id":1057,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1046,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1047,"nodeType":"StructuredDocumentation","src":"125:279:5","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":1056,"linearizedBaseContracts":[1056],"name":"IERC165","nameLocation":"415:7:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1048,"nodeType":"StructuredDocumentation","src":"429:340:5","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":1055,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:5","nodeType":"FunctionDefinition","parameters":{"id":1051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1050,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:5","nodeType":"VariableDeclaration","scope":1055,"src":"801:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1049,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:5"},"returnParameters":{"id":1054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1053,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1055,"src":"844:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1052,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:5"},"scope":1056,"src":"774:76:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1057,"src":"405:447:5","usedErrors":[]}],"src":"100:753:5"},"id":5},"contracts/FirewallConsumer.sol":{"ast":{"absolutePath":"contracts/FirewallConsumer.sol","exportedSymbols":{"FirewallConsumer":[1070],"FirewallConsumerBase":[1691]},"id":1071,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1058,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:6"},{"absolutePath":"contracts/FirewallConsumerBase.sol","file":"./FirewallConsumerBase.sol","id":1060,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1071,"sourceUnit":1692,"src":"138:64:6","symbolAliases":[{"foreign":{"id":1059,"name":"FirewallConsumerBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1691,"src":"146:20:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"arguments":[{"arguments":[{"hexValue":"30","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"561:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1064,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"553:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1063,"name":"address","nodeType":"ElementaryTypeName","src":"553:7:6","typeDescriptions":{}}},"id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"553:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1067,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"565:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"569:6:6","memberName":"sender","nodeType":"MemberAccess","src":"565:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"baseName":{"id":1062,"name":"FirewallConsumerBase","nameLocations":["532:20:6"],"nodeType":"IdentifierPath","referencedDeclaration":1691,"src":"532:20:6"},"id":1069,"nodeType":"InheritanceSpecifier","src":"532:44:6"}],"canonicalName":"FirewallConsumer","contractDependencies":[],"contractKind":"contract","documentation":{"id":1061,"nodeType":"StructuredDocumentation","src":"204:298:6","text":" @title Firewall Consumer\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 must initializes with the firewall contract disabled, and the deployer\n as the firewall admin."},"fullyImplemented":true,"id":1070,"linearizedBaseContracts":[1070,1691,850,2289],"name":"FirewallConsumer","nameLocation":"512:16:6","nodeType":"ContractDefinition","nodes":[],"scope":1071,"src":"503:77:6","usedErrors":[]}],"src":"115:465:6"},"id":6},"contracts/FirewallConsumerBase.sol":{"ast":{"absolutePath":"contracts/FirewallConsumerBase.sol","exportedSymbols":{"Address":[828],"Context":[850],"ERC165Checker":[1044],"FirewallConsumerBase":[1691],"IFirewall":[2281],"IFirewallConsumer":[2289]},"id":1692,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1072,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:7"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol","id":1074,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1692,"sourceUnit":1045,"src":"138:92:7","symbolAliases":[{"foreign":{"id":1073,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"146:13:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":1076,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1692,"sourceUnit":829,"src":"231:66:7","symbolAliases":[{"foreign":{"id":1075,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"239:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"@openzeppelin/contracts/utils/Context.sol","id":1078,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1692,"sourceUnit":851,"src":"298:66:7","symbolAliases":[{"foreign":{"id":1077,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":850,"src":"306:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewall.sol","file":"./interfaces/IFirewall.sol","id":1080,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1692,"sourceUnit":2282,"src":"365:53:7","symbolAliases":[{"foreign":{"id":1079,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"373:9:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewallConsumer.sol","file":"./interfaces/IFirewallConsumer.sol","id":1082,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1692,"sourceUnit":2290,"src":"419:69:7","symbolAliases":[{"foreign":{"id":1081,"name":"IFirewallConsumer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"427:17:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1084,"name":"IFirewallConsumer","nameLocations":["923:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":2289,"src":"923:17:7"},"id":1085,"nodeType":"InheritanceSpecifier","src":"923:17:7"},{"baseName":{"id":1086,"name":"Context","nameLocations":["942:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":850,"src":"942:7:7"},"id":1087,"nodeType":"InheritanceSpecifier","src":"942:7:7"}],"canonicalName":"FirewallConsumerBase","contractDependencies":[],"contractKind":"contract","documentation":{"id":1083,"nodeType":"StructuredDocumentation","src":"490:399:7","text":" @title Firewall Consumer Base 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 must define a firewall contract which will manage the policies that are applied to the contract.\n It also must define a firewall admin which will be able to add and remove policies."},"fullyImplemented":true,"id":1691,"linearizedBaseContracts":[1691,850,2289],"name":"FirewallConsumerBase","nameLocation":"899:20:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1100,"mutability":"constant","name":"FIREWALL_STORAGE_SLOT","nameLocation":"1037:21:7","nodeType":"VariableDeclaration","scope":1691,"src":"1012:100:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1088,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1012:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1098,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c","id":1094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1087:18:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662","typeString":"literal_string \"eip1967.firewall\""},"value":"eip1967.firewall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662","typeString":"literal_string \"eip1967.firewall\""}],"id":1093,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1077:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1077:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1092,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1069:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1091,"name":"uint256","nodeType":"ElementaryTypeName","src":"1069:7:7","typeDescriptions":{}}},"id":1096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1069:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1110:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1069:42:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1061:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1089,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1061:7:7","typeDescriptions":{}}},"id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1061:51:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1113,"mutability":"constant","name":"FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"1205:27:7","nodeType":"VariableDeclaration","scope":1691,"src":"1180:112:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1101,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1180:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c2e61646d696e","id":1107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1261:24:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""},"value":"eip1967.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""}],"id":1106,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1251:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1251:35:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1243:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1243:7:7","typeDescriptions":{}}},"id":1109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1243:44:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1290:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1243:48:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1235:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1102,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1235:7:7","typeDescriptions":{}}},"id":1112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1235:57:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1126,"mutability":"constant","name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"1411:31:7","nodeType":"VariableDeclaration","scope":1691,"src":"1386:120:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1114,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1386:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6e65772e6669726577616c6c2e61646d696e","id":1120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1471:28:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""},"value":"eip1967.new.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""}],"id":1119,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1461:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1461:39:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1453:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1117,"name":"uint256","nodeType":"ElementaryTypeName","src":"1453:7:7","typeDescriptions":{}}},"id":1122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1453:48:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1504:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1453:52:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1445:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1115,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1445:7:7","typeDescriptions":{}}},"id":1125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1445:61:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1132,"mutability":"constant","name":"SUPPORTS_APPROVE_VIA_SIGNATURE_INTERFACE_ID","nameLocation":"1536:43:7","nodeType":"VariableDeclaration","scope":1691,"src":"1512:88:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1127,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1512:6:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"arguments":[{"hexValue":"30783063393038636666","id":1130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1589:10:7","typeDescriptions":{"typeIdentifier":"t_rational_210799871_by_1","typeString":"int_const 210799871"},"value":"0x0c908cff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_210799871_by_1","typeString":"int_const 210799871"}],"id":1129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1582:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":1128,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1582:6:7","typeDescriptions":{}}},"id":1131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1582:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"private"},{"constant":true,"id":1145,"mutability":"constant","name":"APPROVED_TARGETS_MAPPING_SLOT","nameLocation":"1751:29:7","nodeType":"VariableDeclaration","scope":1691,"src":"1726:116:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1133,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1726:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e617070726f7665642e74617267657473","id":1139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1809:26:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_bee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9","typeString":"literal_string \"eip1967.approved.targets\""},"value":"eip1967.approved.targets"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_bee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9","typeString":"literal_string \"eip1967.approved.targets\""}],"id":1138,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1799:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1799:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1791:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1136,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:7","typeDescriptions":{}}},"id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1791:46:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1840:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1791:50:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1783:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1134,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1783:7:7","typeDescriptions":{}}},"id":1144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1783:59:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"anonymous":false,"eventSelector":"2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b","id":1149,"name":"FirewallAdminUpdated","nameLocation":"1855:20:7","nodeType":"EventDefinition","parameters":{"id":1148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1147,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"1884:8:7","nodeType":"VariableDeclaration","scope":1149,"src":"1876:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1146,"name":"address","nodeType":"ElementaryTypeName","src":"1876:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1875:18:7"},"src":"1849:45:7"},{"anonymous":false,"eventSelector":"60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd03608670","id":1153,"name":"FirewallUpdated","nameLocation":"1905:15:7","nodeType":"EventDefinition","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"indexed":false,"mutability":"mutable","name":"newFirewall","nameLocation":"1929:11:7","nodeType":"VariableDeclaration","scope":1153,"src":"1921:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1150,"name":"address","nodeType":"ElementaryTypeName","src":"1921:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1920:21:7"},"src":"1899:43:7"},{"body":{"id":1200,"nodeType":"Block","src":"2467:358:7","statements":[{"assignments":[1157],"declarations":[{"constant":false,"id":1157,"mutability":"mutable","name":"firewall","nameLocation":"2485:8:7","nodeType":"VariableDeclaration","scope":1200,"src":"2477:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1156,"name":"address","nodeType":"ElementaryTypeName","src":"2477:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1161,"initialValue":{"arguments":[{"id":1159,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"2514:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1158,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"2496:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2496:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2477:59:7"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1162,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"2550:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2570:1:7","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":1164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2562:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1163,"name":"address","nodeType":"ElementaryTypeName","src":"2562:7:7","typeDescriptions":{}}},"id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2562:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2550:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1171,"nodeType":"IfStatement","src":"2546:74:7","trueBody":{"id":1170,"nodeType":"Block","src":"2574:46:7","statements":[{"id":1168,"nodeType":"PlaceholderStatement","src":"2588:1:7"},{"id":1169,"nodeType":"Return","src":"2603:7:7"}]}},{"assignments":[1173],"declarations":[{"constant":false,"id":1173,"mutability":"mutable","name":"value","nameLocation":"2637:5:7","nodeType":"VariableDeclaration","scope":1200,"src":"2629:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1172,"name":"uint256","nodeType":"ElementaryTypeName","src":"2629:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1176,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1174,"name":"_msgValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1605,"src":"2645:9:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2645:11:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2629:27:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1181,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2699:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2699:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1183,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"2713:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":1184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2713:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1185,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"2725:5:7","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":1178,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"2676:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1177,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"2666:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$2281_$","typeString":"type(contract IFirewall)"}},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2666:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$2281","typeString":"contract IFirewall"}},"id":1180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2686:12:7","memberName":"preExecution","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"2666:32:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2666:65:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1187,"nodeType":"ExpressionStatement","src":"2666:65:7"},{"id":1188,"nodeType":"PlaceholderStatement","src":"2741:1:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1193,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2786:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2786:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1195,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"2800:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":1196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2800:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1197,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"2812:5:7","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":1190,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1157,"src":"2762:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1189,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"2752:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$2281_$","typeString":"type(contract IFirewall)"}},"id":1191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2752:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$2281","typeString":"contract IFirewall"}},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2772:13:7","memberName":"postExecution","nodeType":"MemberAccess","referencedDeclaration":2253,"src":"2752:33:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":1198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2752:66:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1199,"nodeType":"ExpressionStatement","src":"2752:66:7"}]},"documentation":{"id":1154,"nodeType":"StructuredDocumentation","src":"1948:485:7","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":1201,"name":"firewallProtected","nameLocation":"2447:17:7","nodeType":"ModifierDefinition","parameters":{"id":1155,"nodeType":"ParameterList","parameters":[],"src":"2464:2:7"},"src":"2438:387:7","virtual":false,"visibility":"internal"},{"body":{"id":1248,"nodeType":"Block","src":"4048:346:7","statements":[{"assignments":[1207],"declarations":[{"constant":false,"id":1207,"mutability":"mutable","name":"firewall","nameLocation":"4066:8:7","nodeType":"VariableDeclaration","scope":1248,"src":"4058:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1206,"name":"address","nodeType":"ElementaryTypeName","src":"4058:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1211,"initialValue":{"arguments":[{"id":1209,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"4095:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1208,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"4077:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4077:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4058:59:7"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1212,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1207,"src":"4131:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4151:1:7","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":1214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4143:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1213,"name":"address","nodeType":"ElementaryTypeName","src":"4143:7:7","typeDescriptions":{}}},"id":1216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4143:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4131:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1221,"nodeType":"IfStatement","src":"4127:74:7","trueBody":{"id":1220,"nodeType":"Block","src":"4155:46:7","statements":[{"id":1218,"nodeType":"PlaceholderStatement","src":"4169:1:7"},{"id":1219,"nodeType":"Return","src":"4184:7:7"}]}},{"assignments":[1223],"declarations":[{"constant":false,"id":1223,"mutability":"mutable","name":"value","nameLocation":"4218:5:7","nodeType":"VariableDeclaration","scope":1248,"src":"4210:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1222,"name":"uint256","nodeType":"ElementaryTypeName","src":"4210:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1226,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1224,"name":"_msgValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1605,"src":"4226:9:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4226:11:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4210:27:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1231,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"4280:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4280:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1233,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1204,"src":"4294:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1234,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1223,"src":"4300:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1228,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1207,"src":"4257:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1227,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"4247:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$2281_$","typeString":"type(contract IFirewall)"}},"id":1229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4247:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$2281","typeString":"contract IFirewall"}},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4267:12:7","memberName":"preExecution","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"4247:32:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4247:59:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1236,"nodeType":"ExpressionStatement","src":"4247:59:7"},{"id":1237,"nodeType":"PlaceholderStatement","src":"4316:1:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1242,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"4361:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4361:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1244,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1204,"src":"4375:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1245,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1223,"src":"4381:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1239,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1207,"src":"4337:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1238,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"4327:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$2281_$","typeString":"type(contract IFirewall)"}},"id":1240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4327:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$2281","typeString":"contract IFirewall"}},"id":1241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4347:13:7","memberName":"postExecution","nodeType":"MemberAccess","referencedDeclaration":2253,"src":"4327:33:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4327:60:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1247,"nodeType":"ExpressionStatement","src":"4327:60:7"}]},"documentation":{"id":1202,"nodeType":"StructuredDocumentation","src":"2831:1160:7","text":" @dev modifier that will run the preExecution and postExecution hooks of the firewall, applying each of\n the subscribed policies. Allows passing custom data to the firewall, not necessarily msg.data.\n Useful for checking internal function calls\n @param data custom data to be passed to the firewall\n NOTE: Using this modifier affects the data that is passed to the firewall, and as such it is mainly meant\n to be used by internal functions, and only in conjuction with policies that whose protection strategy\n requires this data.\n Using this modifier incorrectly may result in unexpected behavior.\n If you have any questions on how or when to use this modifier, please refer to the Firewall's documentation\n and/or contact our support.\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":1249,"name":"firewallProtectedCustom","nameLocation":"4005:23:7","nodeType":"ModifierDefinition","parameters":{"id":1205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1204,"mutability":"mutable","name":"data","nameLocation":"4042:4:7","nodeType":"VariableDeclaration","scope":1249,"src":"4029:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1203,"name":"bytes","nodeType":"ElementaryTypeName","src":"4029:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4028:19:7"},"src":"3996:398:7","virtual":false,"visibility":"internal"},{"body":{"id":1302,"nodeType":"Block","src":"5480:390:7","statements":[{"assignments":[1255],"declarations":[{"constant":false,"id":1255,"mutability":"mutable","name":"firewall","nameLocation":"5498:8:7","nodeType":"VariableDeclaration","scope":1302,"src":"5490:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1254,"name":"address","nodeType":"ElementaryTypeName","src":"5490:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1259,"initialValue":{"arguments":[{"id":1257,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"5527:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1256,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"5509:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5509:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5490:59:7"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1260,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1255,"src":"5563:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5583:1:7","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":1262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5575:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1261,"name":"address","nodeType":"ElementaryTypeName","src":"5575:7:7","typeDescriptions":{}}},"id":1264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5575:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5563:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1269,"nodeType":"IfStatement","src":"5559:74:7","trueBody":{"id":1268,"nodeType":"Block","src":"5587:46:7","statements":[{"id":1266,"nodeType":"PlaceholderStatement","src":"5601:1:7"},{"id":1267,"nodeType":"Return","src":"5616:7:7"}]}},{"assignments":[1271],"declarations":[{"constant":false,"id":1271,"mutability":"mutable","name":"value","nameLocation":"5650:5:7","nodeType":"VariableDeclaration","scope":1302,"src":"5642:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1270,"name":"uint256","nodeType":"ElementaryTypeName","src":"5642:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1274,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1272,"name":"_msgValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1605,"src":"5658:9:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5658:11:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5642:27:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1279,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"5712:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5712:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1283,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"5743:8:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1281,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5726:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5730:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"5726:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5726:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1285,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1271,"src":"5754:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1276,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1255,"src":"5689:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1275,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"5679:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$2281_$","typeString":"type(contract IFirewall)"}},"id":1277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5679:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$2281","typeString":"contract IFirewall"}},"id":1278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5699:12:7","memberName":"preExecution","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"5679:32:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":1286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5679:81:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1287,"nodeType":"ExpressionStatement","src":"5679:81:7"},{"id":1288,"nodeType":"PlaceholderStatement","src":"5770:1:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1293,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"5815:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5815:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1297,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"5846:8:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1295,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5829:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1296,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5833:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"5829:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1271,"src":"5857:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1290,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1255,"src":"5791:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1289,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"5781:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$2281_$","typeString":"type(contract IFirewall)"}},"id":1291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5781:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$2281","typeString":"contract IFirewall"}},"id":1292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5801:13:7","memberName":"postExecution","nodeType":"MemberAccess","referencedDeclaration":2253,"src":"5781:33:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5781:82:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1301,"nodeType":"ExpressionStatement","src":"5781:82:7"}]},"documentation":{"id":1250,"nodeType":"StructuredDocumentation","src":"4400:1028:7","text":" @dev identical to the rest of the modifiers in terms of logic, but makes it more\n aesthetic when all you want to pass are signatures/unique identifiers.\n @param selector unique identifier for the function\n NOTE: Using this modifier affects the data that is passed to the firewall, and as such it is mainly to\n be used by policies that whose protection strategy relies on the function's signature hahs.\n Using this modifier incorrectly may result in unexpected behavior.\n If you have any questions on how or when to use this modifier, please refer to the Firewall's documentation\n and/or contact our support.\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":1303,"name":"firewallProtectedSig","nameLocation":"5442:20:7","nodeType":"ModifierDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1252,"mutability":"mutable","name":"selector","nameLocation":"5470:8:7","nodeType":"VariableDeclaration","scope":1303,"src":"5463:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1251,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5463:6:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5462:17:7"},"src":"5433:437:7","virtual":false,"visibility":"internal"},{"body":{"id":1375,"nodeType":"Block","src":"6412:578:7","statements":[{"assignments":[1307],"declarations":[{"constant":false,"id":1307,"mutability":"mutable","name":"firewall","nameLocation":"6430:8:7","nodeType":"VariableDeclaration","scope":1375,"src":"6422:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1306,"name":"address","nodeType":"ElementaryTypeName","src":"6422:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1311,"initialValue":{"arguments":[{"id":1309,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"6459:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1308,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"6441:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6441:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6422:59:7"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1312,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"6495:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6515:1:7","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":1314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6507:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1313,"name":"address","nodeType":"ElementaryTypeName","src":"6507:7:7","typeDescriptions":{}}},"id":1316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6507:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6495:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1321,"nodeType":"IfStatement","src":"6491:74:7","trueBody":{"id":1320,"nodeType":"Block","src":"6519:46:7","statements":[{"id":1318,"nodeType":"PlaceholderStatement","src":"6533:1:7"},{"id":1319,"nodeType":"Return","src":"6548:7:7"}]}},{"assignments":[1323],"declarations":[{"constant":false,"id":1323,"mutability":"mutable","name":"value","nameLocation":"6582:5:7","nodeType":"VariableDeclaration","scope":1375,"src":"6574:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1322,"name":"uint256","nodeType":"ElementaryTypeName","src":"6574:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1326,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1324,"name":"_msgValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1605,"src":"6590:9:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6590:11:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6574:27:7"},{"assignments":[1331],"declarations":[{"constant":false,"id":1331,"mutability":"mutable","name":"storageSlots","nameLocation":"6628:12:7","nodeType":"VariableDeclaration","scope":1375,"src":"6611:29:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1329,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6611:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1330,"nodeType":"ArrayTypeName","src":"6611:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":1342,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1336,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"6693:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6693:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1338,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"6707:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":1339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6707:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1340,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"6719:5:7","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":1333,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"6653:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1332,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"6643:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$2281_$","typeString":"type(contract IFirewall)"}},"id":1334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6643:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$2281","typeString":"contract IFirewall"}},"id":1335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6663:29:7","memberName":"preExecutionPrivateInvariants","nodeType":"MemberAccess","referencedDeclaration":2265,"src":"6643:49:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (address,bytes memory,uint256) external returns (bytes32[] memory)"}},"id":1341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6643:82:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6611:114:7"},{"assignments":[1347],"declarations":[{"constant":false,"id":1347,"mutability":"mutable","name":"preValues","nameLocation":"6752:9:7","nodeType":"VariableDeclaration","scope":1375,"src":"6735:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1345,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6735:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1346,"nodeType":"ArrayTypeName","src":"6735:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":1351,"initialValue":{"arguments":[{"id":1349,"name":"storageSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1331,"src":"6777:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"id":1348,"name":"_readStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1660,"src":"6764:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (bytes32[] memory) view returns (bytes32[] memory)"}},"id":1350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6764:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6735:55:7"},{"id":1352,"nodeType":"PlaceholderStatement","src":"6800:1:7"},{"assignments":[1357],"declarations":[{"constant":false,"id":1357,"mutability":"mutable","name":"postValues","nameLocation":"6828:10:7","nodeType":"VariableDeclaration","scope":1375,"src":"6811:27:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1355,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6811:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1356,"nodeType":"ArrayTypeName","src":"6811:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":1361,"initialValue":{"arguments":[{"id":1359,"name":"storageSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1331,"src":"6854:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"id":1358,"name":"_readStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1660,"src":"6841:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (bytes32[] memory) view returns (bytes32[] memory)"}},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6841:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6811:56:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1366,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"6928:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6928:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1368,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"6942:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6942:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1370,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"6954:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1371,"name":"preValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"6961:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},{"id":1372,"name":"postValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1357,"src":"6972:10:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"},{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"expression":{"arguments":[{"id":1363,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"6887:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1362,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"6877:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$2281_$","typeString":"type(contract IFirewall)"}},"id":1364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6877:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$2281","typeString":"contract IFirewall"}},"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6897:30:7","memberName":"postExecutionPrivateInvariants","nodeType":"MemberAccess","referencedDeclaration":2280,"src":"6877:50:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$","typeString":"function (address,bytes memory,uint256,bytes32[] memory,bytes32[] memory) external"}},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6877:106:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1374,"nodeType":"ExpressionStatement","src":"6877:106:7"}]},"documentation":{"id":1304,"nodeType":"StructuredDocumentation","src":"5876:501:7","text":" @dev modifier that will run the preExecution and postExecution hooks of the firewall invariant policy,\n applying the subscribed invariant policy\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":1376,"name":"invariantProtected","nameLocation":"6391:18:7","nodeType":"ModifierDefinition","parameters":{"id":1305,"nodeType":"ParameterList","parameters":[],"src":"6409:2:7"},"src":"6382:608:7","virtual":false,"visibility":"internal"},{"body":{"id":1416,"nodeType":"Block","src":"7159:638:7","statements":[{"assignments":[1382],"declarations":[{"constant":false,"id":1382,"mutability":"mutable","name":"_slot","nameLocation":"7447:5:7","nodeType":"VariableDeclaration","scope":1416,"src":"7439:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1381,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7439:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1390,"initialValue":{"arguments":[{"arguments":[{"id":1386,"name":"APPROVED_TARGETS_MAPPING_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1145,"src":"7476:29:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1387,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1379,"src":"7507:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1384,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7465:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7469:6:7","memberName":"encode","nodeType":"MemberAccess","src":"7465:10:7","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7465:49:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1383,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7455:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7455:60:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7439:76:7"},{"assignments":[1392],"declarations":[{"constant":false,"id":1392,"mutability":"mutable","name":"isApprovedTarget","nameLocation":"7530:16:7","nodeType":"VariableDeclaration","scope":1416,"src":"7525:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1391,"name":"bool","nodeType":"ElementaryTypeName","src":"7525:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1401,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1394,"name":"_slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"7565:5:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1393,"name":"_getValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1690,"src":"7549:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7549:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7583:1:7","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":1397,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7575:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1396,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7575:7:7","typeDescriptions":{}}},"id":1399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7575:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7549:36:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"7525:60:7"},{"expression":{"arguments":[{"id":1403,"name":"isApprovedTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1392,"src":"7603:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420617070726f76656420746172676574","id":1404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7621:39:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686","typeString":"literal_string \"FirewallConsumer: Not approved target\""},"value":"FirewallConsumer: Not approved target"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686","typeString":"literal_string \"FirewallConsumer: Not approved target\""}],"id":1402,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7595:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7595:66:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1406,"nodeType":"ExpressionStatement","src":"7595:66:7"},{"expression":{"arguments":[{"arguments":[{"id":1410,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1379,"src":"7726:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1411,"name":"SUPPORTS_APPROVE_VIA_SIGNATURE_INTERFACE_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"7734:43:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1408,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"7679:13:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$1044_$","typeString":"type(library ERC165Checker)"}},"id":1409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7693:32:7","memberName":"supportsERC165InterfaceUnchecked","nodeType":"MemberAccess","referencedDeclaration":1043,"src":"7679:46:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7679:99:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1407,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7671:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7671:108:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1414,"nodeType":"ExpressionStatement","src":"7671:108:7"},{"id":1415,"nodeType":"PlaceholderStatement","src":"7789:1:7"}]},"documentation":{"id":1377,"nodeType":"StructuredDocumentation","src":"6997:113:7","text":" @dev modifier asserting that the target is approved\n @param target address of the target"},"id":1417,"name":"onlyApprovedTarget","nameLocation":"7124:18:7","nodeType":"ModifierDefinition","parameters":{"id":1380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1379,"mutability":"mutable","name":"target","nameLocation":"7151:6:7","nodeType":"VariableDeclaration","scope":1417,"src":"7143:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1378,"name":"address","nodeType":"ElementaryTypeName","src":"7143:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7142:16:7"},"src":"7115:682:7","virtual":false,"visibility":"internal"},{"body":{"id":1431,"nodeType":"Block","src":"7919:137:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1421,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7937:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7941:6:7","memberName":"sender","nodeType":"MemberAccess","src":"7937:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":1424,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"7969:27:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1423,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"7951:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7951:46:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7937:60:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061646d696e","id":1427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7999:38:7","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":1420,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7929:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7929:109:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1429,"nodeType":"ExpressionStatement","src":"7929:109:7"},{"id":1430,"nodeType":"PlaceholderStatement","src":"8048:1:7"}]},"documentation":{"id":1418,"nodeType":"StructuredDocumentation","src":"7803:82:7","text":" @dev modifier similar to onlyOwner, but for the firewall admin."},"id":1432,"name":"onlyFirewallAdmin","nameLocation":"7899:17:7","nodeType":"ModifierDefinition","parameters":{"id":1419,"nodeType":"ParameterList","parameters":[],"src":"7916:2:7"},"src":"7890:166:7","virtual":false,"visibility":"internal"},{"body":{"id":1450,"nodeType":"Block","src":"8261:140:7","statements":[{"expression":{"arguments":[{"id":1441,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"8289:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1442,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1435,"src":"8312:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1440,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"8271:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8271:51:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1444,"nodeType":"ExpressionStatement","src":"8271:51:7"},{"expression":{"arguments":[{"id":1446,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"8350:27:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1447,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1437,"src":"8379:14:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1445,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"8332:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8332:62:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1449,"nodeType":"ExpressionStatement","src":"8332:62:7"}]},"documentation":{"id":1433,"nodeType":"StructuredDocumentation","src":"8062:117:7","text":" @dev Initializes a contract protected by a firewall, with a firewall address and a firewall admin."},"id":1451,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1435,"mutability":"mutable","name":"_firewall","nameLocation":"8213:9:7","nodeType":"VariableDeclaration","scope":1451,"src":"8205:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1434,"name":"address","nodeType":"ElementaryTypeName","src":"8205:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1437,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"8240:14:7","nodeType":"VariableDeclaration","scope":1451,"src":"8232:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1436,"name":"address","nodeType":"ElementaryTypeName","src":"8232:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8195:65:7"},"returnParameters":{"id":1439,"nodeType":"ParameterList","parameters":[],"src":"8261:0:7"},"scope":1691,"src":"8184:217:7","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1494,"nodeType":"Block","src":"9036:234:7","statements":[{"assignments":[1465,null],"declarations":[{"constant":false,"id":1465,"mutability":"mutable","name":"success","nameLocation":"9052:7:7","nodeType":"VariableDeclaration","scope":1494,"src":"9047:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1464,"name":"bool","nodeType":"ElementaryTypeName","src":"9047:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1470,"initialValue":{"arguments":[{"id":1468,"name":"targetPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1456,"src":"9077:13:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1466,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1454,"src":"9065:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9072:4:7","memberName":"call","nodeType":"MemberAccess","src":"9065:11:7","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":1469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9065:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"9046:45:7"},{"expression":{"arguments":[{"id":1472,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1465,"src":"9109:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1471,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9101:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9101:16:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1474,"nodeType":"ExpressionStatement","src":"9101:16:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1476,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9135:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9139:6:7","memberName":"sender","nodeType":"MemberAccess","src":"9135:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1478,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"9149:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9149:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9135:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f206d657461207472616e73616374696f6e73","id":1481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9163:40:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef","typeString":"literal_string \"FirewallConsumer: No meta transactions\""},"value":"FirewallConsumer: No meta transactions"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef","typeString":"literal_string \"FirewallConsumer: No meta transactions\""}],"id":1475,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9127:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9127:77:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1483,"nodeType":"ExpressionStatement","src":"9127:77:7"},{"expression":{"arguments":[{"arguments":[{"id":1489,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9251:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_FirewallConsumerBase_$1691","typeString":"contract FirewallConsumerBase"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_FirewallConsumerBase_$1691","typeString":"contract FirewallConsumerBase"}],"id":1488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9243:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"9243:7:7","typeDescriptions":{}}},"id":1490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9243:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1491,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"9258:4:7","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":1484,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"9214:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$828_$","typeString":"type(library Address)"}},"id":1486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9222:20:7","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":715,"src":"9214:28:7","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":1492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9214:49:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1493,"nodeType":"ExpressionStatement","src":"9214:49:7"}]},"documentation":{"id":1452,"nodeType":"StructuredDocumentation","src":"8407:457:7","text":" @dev Allows calling an approved external target 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 @param target address of the target\n @param targetPayload payload to be sent to the target\n @param data data to be executed after the target call"},"functionSelector":"1a8828f4","id":1495,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1461,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1454,"src":"9028:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1462,"kind":"modifierInvocation","modifierName":{"id":1460,"name":"onlyApprovedTarget","nameLocations":["9009:18:7"],"nodeType":"IdentifierPath","referencedDeclaration":1417,"src":"9009:18:7"},"nodeType":"ModifierInvocation","src":"9009:26:7"}],"name":"safeFunctionCall","nameLocation":"8878:16:7","nodeType":"FunctionDefinition","parameters":{"id":1459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1454,"mutability":"mutable","name":"target","nameLocation":"8912:6:7","nodeType":"VariableDeclaration","scope":1495,"src":"8904:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1453,"name":"address","nodeType":"ElementaryTypeName","src":"8904:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1456,"mutability":"mutable","name":"targetPayload","nameLocation":"8943:13:7","nodeType":"VariableDeclaration","scope":1495,"src":"8928:28:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1455,"name":"bytes","nodeType":"ElementaryTypeName","src":"8928:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1458,"mutability":"mutable","name":"data","nameLocation":"8981:4:7","nodeType":"VariableDeclaration","scope":1495,"src":"8966:19:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1457,"name":"bytes","nodeType":"ElementaryTypeName","src":"8966:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8894:97:7"},"returnParameters":{"id":1463,"nodeType":"ParameterList","parameters":[],"src":"9036:0:7"},"scope":1691,"src":"8869:401:7","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":1516,"nodeType":"Block","src":"9678:156:7","statements":[{"assignments":[1506],"declarations":[{"constant":false,"id":1506,"mutability":"mutable","name":"_slot","nameLocation":"9696:5:7","nodeType":"VariableDeclaration","scope":1516,"src":"9688:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1505,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9688:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1514,"initialValue":{"arguments":[{"arguments":[{"id":1510,"name":"APPROVED_TARGETS_MAPPING_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1145,"src":"9725:29:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1511,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1498,"src":"9756:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1508,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9714:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9718:6:7","memberName":"encode","nodeType":"MemberAccess","src":"9714:10:7","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9714:49:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1507,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9704:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9704:60:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9688:76:7"},{"AST":{"nodeType":"YulBlock","src":"9783:45:7","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"9804:5:7"},{"name":"status","nodeType":"YulIdentifier","src":"9811:6:7"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"9797:6:7"},"nodeType":"YulFunctionCall","src":"9797:21:7"},"nodeType":"YulExpressionStatement","src":"9797:21:7"}]},"evmVersion":"paris","externalReferences":[{"declaration":1506,"isOffset":false,"isSlot":false,"src":"9804:5:7","valueSize":1},{"declaration":1500,"isOffset":false,"isSlot":false,"src":"9811:6:7","valueSize":1}],"id":1515,"nodeType":"InlineAssembly","src":"9774:54:7"}]},"documentation":{"id":1496,"nodeType":"StructuredDocumentation","src":"9276:314:7","text":" @dev Allows firewall admin to set approved targets.\n IMPORTANT: Only set approved target if you know what you're doing. Anyone can cause this contract\n to send any data to an approved target.\n @param target address of the target\n @param status status of the target"},"functionSelector":"b7f9a748","id":1517,"implemented":true,"kind":"function","modifiers":[{"id":1503,"kind":"modifierInvocation","modifierName":{"id":1502,"name":"onlyFirewallAdmin","nameLocations":["9660:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":1432,"src":"9660:17:7"},"nodeType":"ModifierInvocation","src":"9660:17:7"}],"name":"setApprovedTarget","nameLocation":"9604:17:7","nodeType":"FunctionDefinition","parameters":{"id":1501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1498,"mutability":"mutable","name":"target","nameLocation":"9630:6:7","nodeType":"VariableDeclaration","scope":1517,"src":"9622:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1497,"name":"address","nodeType":"ElementaryTypeName","src":"9622:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1500,"mutability":"mutable","name":"status","nameLocation":"9643:6:7","nodeType":"VariableDeclaration","scope":1517,"src":"9638:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1499,"name":"bool","nodeType":"ElementaryTypeName","src":"9638:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9621:29:7"},"returnParameters":{"id":1504,"nodeType":"ParameterList","parameters":[],"src":"9678:0:7"},"scope":1691,"src":"9595:239:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2288],"body":{"id":1528,"nodeType":"Block","src":"9971:70:7","statements":[{"expression":{"arguments":[{"id":1525,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"10006:27:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1524,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"9988:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9988:46:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1523,"id":1527,"nodeType":"Return","src":"9981:53:7"}]},"documentation":{"id":1518,"nodeType":"StructuredDocumentation","src":"9840:60:7","text":" @dev View function for the firewall admin"},"functionSelector":"f05c8582","id":1529,"implemented":true,"kind":"function","modifiers":[],"name":"firewallAdmin","nameLocation":"9914:13:7","nodeType":"FunctionDefinition","overrides":{"id":1520,"nodeType":"OverrideSpecifier","overrides":[],"src":"9939:8:7"},"parameters":{"id":1519,"nodeType":"ParameterList","parameters":[],"src":"9927:2:7"},"returnParameters":{"id":1523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1522,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1529,"src":"9962:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1521,"name":"address","nodeType":"ElementaryTypeName","src":"9962:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9961:9:7"},"scope":1691,"src":"9905:136:7","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":1546,"nodeType":"Block","src":"10268:109:7","statements":[{"expression":{"arguments":[{"id":1538,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"10296:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1539,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"10319:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1537,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"10278:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10278:51:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1541,"nodeType":"ExpressionStatement","src":"10278:51:7"},{"eventCall":{"arguments":[{"id":1543,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"10360:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1542,"name":"FirewallUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1153,"src":"10344:15:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10344:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1545,"nodeType":"EmitStatement","src":"10339:31:7"}]},"documentation":{"id":1530,"nodeType":"StructuredDocumentation","src":"10047:149:7","text":" @dev Admin only function allowing the consumers admin to set the firewall address.\n @param _firewall address of the firewall"},"functionSelector":"8c36d02d","id":1547,"implemented":true,"kind":"function","modifiers":[{"id":1535,"kind":"modifierInvocation","modifierName":{"id":1534,"name":"onlyFirewallAdmin","nameLocations":["10250:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":1432,"src":"10250:17:7"},"nodeType":"ModifierInvocation","src":"10250:17:7"}],"name":"setFirewall","nameLocation":"10210:11:7","nodeType":"FunctionDefinition","parameters":{"id":1533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1532,"mutability":"mutable","name":"_firewall","nameLocation":"10230:9:7","nodeType":"VariableDeclaration","scope":1547,"src":"10222:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1531,"name":"address","nodeType":"ElementaryTypeName","src":"10222:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10221:19:7"},"returnParameters":{"id":1536,"nodeType":"ParameterList","parameters":[],"src":"10268:0:7"},"scope":1691,"src":"10201:176:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1570,"nodeType":"Block","src":"10620:164:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1556,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1550,"src":"10638:14:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10664:1:7","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":1558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10656:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1557,"name":"address","nodeType":"ElementaryTypeName","src":"10656:7:7","typeDescriptions":{}}},"id":1560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10656:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10638:28:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","id":1562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10668:32:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949","typeString":"literal_string \"FirewallConsumer: zero address\""},"value":"FirewallConsumer: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949","typeString":"literal_string \"FirewallConsumer: zero address\""}],"id":1555,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10630:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10630:71:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1564,"nodeType":"ExpressionStatement","src":"10630:71:7"},{"expression":{"arguments":[{"id":1566,"name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"10729:31:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1567,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1550,"src":"10762:14:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1565,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"10711:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10711:66:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1569,"nodeType":"ExpressionStatement","src":"10711:66:7"}]},"documentation":{"id":1548,"nodeType":"StructuredDocumentation","src":"10383:155:7","text":" @dev Admin only function, sets new firewall admin. New admin must accept.\n @param _firewallAdmin address of the new firewall admin"},"functionSelector":"734b7198","id":1571,"implemented":true,"kind":"function","modifiers":[{"id":1553,"kind":"modifierInvocation","modifierName":{"id":1552,"name":"onlyFirewallAdmin","nameLocations":["10602:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":1432,"src":"10602:17:7"},"nodeType":"ModifierInvocation","src":"10602:17:7"}],"name":"setFirewallAdmin","nameLocation":"10552:16:7","nodeType":"FunctionDefinition","parameters":{"id":1551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1550,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"10577:14:7","nodeType":"VariableDeclaration","scope":1571,"src":"10569:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1549,"name":"address","nodeType":"ElementaryTypeName","src":"10569:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10568:24:7"},"returnParameters":{"id":1554,"nodeType":"ParameterList","parameters":[],"src":"10620:0:7"},"scope":1691,"src":"10543:241:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1596,"nodeType":"Block","src":"10893:240:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1576,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10911:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10915:6:7","memberName":"sender","nodeType":"MemberAccess","src":"10911:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":1579,"name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"10943:31:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1578,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"10925:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10925:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10911:64:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","id":1582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10977:33:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427","typeString":"literal_string \"FirewallConsumer: not new admin\""},"value":"FirewallConsumer: not new admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427","typeString":"literal_string \"FirewallConsumer: not new admin\""}],"id":1575,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10903:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10903:108:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1584,"nodeType":"ExpressionStatement","src":"10903:108:7"},{"expression":{"arguments":[{"id":1586,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"11039:27:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1587,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11068:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11072:6:7","memberName":"sender","nodeType":"MemberAccess","src":"11068:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1585,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"11021:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11021:58:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1590,"nodeType":"ExpressionStatement","src":"11021:58:7"},{"eventCall":{"arguments":[{"expression":{"id":1592,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11115:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11119:6:7","memberName":"sender","nodeType":"MemberAccess","src":"11115:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1591,"name":"FirewallAdminUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1149,"src":"11094:20:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11094:32:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1595,"nodeType":"EmitStatement","src":"11089:37:7"}]},"documentation":{"id":1572,"nodeType":"StructuredDocumentation","src":"10790:58:7","text":" @dev Accept the role as firewall admin."},"functionSelector":"7c65c38b","id":1597,"implemented":true,"kind":"function","modifiers":[],"name":"acceptFirewallAdmin","nameLocation":"10862:19:7","nodeType":"FunctionDefinition","parameters":{"id":1573,"nodeType":"ParameterList","parameters":[],"src":"10881:2:7"},"returnParameters":{"id":1574,"nodeType":"ParameterList","parameters":[],"src":"10893:0:7"},"scope":1691,"src":"10853:280:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1604,"nodeType":"Block","src":"11309:152:7","statements":[{"AST":{"nodeType":"YulBlock","src":"11411:44:7","statements":[{"nodeType":"YulAssignment","src":"11425:20:7","value":{"arguments":[],"functionName":{"name":"callvalue","nodeType":"YulIdentifier","src":"11434:9:7"},"nodeType":"YulFunctionCall","src":"11434:11:7"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"11425:5:7"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1601,"isOffset":false,"isSlot":false,"src":"11425:5:7","valueSize":1}],"id":1603,"nodeType":"InlineAssembly","src":"11402:53:7"}]},"documentation":{"id":1598,"nodeType":"StructuredDocumentation","src":"11139:106:7","text":" @dev Internal helper funtion to get the msg.value\n @return value of the msg.value"},"id":1605,"implemented":true,"kind":"function","modifiers":[],"name":"_msgValue","nameLocation":"11259:9:7","nodeType":"FunctionDefinition","parameters":{"id":1599,"nodeType":"ParameterList","parameters":[],"src":"11268:2:7"},"returnParameters":{"id":1602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1601,"mutability":"mutable","name":"value","nameLocation":"11302:5:7","nodeType":"VariableDeclaration","scope":1605,"src":"11294:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1600,"name":"uint256","nodeType":"ElementaryTypeName","src":"11294:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11293:15:7"},"scope":1691,"src":"11250:211:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1659,"nodeType":"Block","src":"11686:307:7","statements":[{"assignments":[1616],"declarations":[{"constant":false,"id":1616,"mutability":"mutable","name":"slotsLength","nameLocation":"11704:11:7","nodeType":"VariableDeclaration","scope":1659,"src":"11696:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1615,"name":"uint256","nodeType":"ElementaryTypeName","src":"11696:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1619,"initialValue":{"expression":{"id":1617,"name":"storageSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1609,"src":"11718:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":1618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11731:6:7","memberName":"length","nodeType":"MemberAccess","src":"11718:19:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11696:41:7"},{"assignments":[1624],"declarations":[{"constant":false,"id":1624,"mutability":"mutable","name":"values","nameLocation":"11764:6:7","nodeType":"VariableDeclaration","scope":1659,"src":"11747:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1622,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11747:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1623,"nodeType":"ArrayTypeName","src":"11747:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":1630,"initialValue":{"arguments":[{"id":1628,"name":"slotsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"11787:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11773:13:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":1625,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11777:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1626,"nodeType":"ArrayTypeName","src":"11777:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":1629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11773:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"11747:52:7"},{"body":{"id":1655,"nodeType":"Block","src":"11852:112:7","statements":[{"assignments":[1642],"declarations":[{"constant":false,"id":1642,"mutability":"mutable","name":"slotValue","nameLocation":"11874:9:7","nodeType":"VariableDeclaration","scope":1655,"src":"11866:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1641,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11866:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1648,"initialValue":{"arguments":[{"baseExpression":{"id":1644,"name":"storageSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1609,"src":"11902:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":1646,"indexExpression":{"id":1645,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"11915:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11902:15:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1643,"name":"_getValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1690,"src":"11886:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11886:32:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11866:52:7"},{"expression":{"id":1653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1649,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1624,"src":"11932:6:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":1651,"indexExpression":{"id":1650,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"11939:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11932:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1652,"name":"slotValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1642,"src":"11944:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11932:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1654,"nodeType":"ExpressionStatement","src":"11932:21:7"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1635,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"11830:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1636,"name":"slotsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1616,"src":"11834:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11830:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1656,"initializationExpression":{"assignments":[1632],"declarations":[{"constant":false,"id":1632,"mutability":"mutable","name":"i","nameLocation":"11823:1:7","nodeType":"VariableDeclaration","scope":1656,"src":"11815:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"11815:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1634,"initialValue":{"hexValue":"30","id":1633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11827:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11815:13:7"},"loopExpression":{"expression":{"id":1639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11847:3:7","subExpression":{"id":1638,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"11847:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1640,"nodeType":"ExpressionStatement","src":"11847:3:7"},"nodeType":"ForStatement","src":"11810:154:7"},{"expression":{"id":1657,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1624,"src":"11980:6:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":1614,"id":1658,"nodeType":"Return","src":"11973:13:7"}]},"documentation":{"id":1606,"nodeType":"StructuredDocumentation","src":"11467:120:7","text":" @dev Internal helper function to read storage slots\n @param storageSlots array of storage slots"},"id":1660,"implemented":true,"kind":"function","modifiers":[],"name":"_readStorage","nameLocation":"11601:12:7","nodeType":"FunctionDefinition","parameters":{"id":1610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1609,"mutability":"mutable","name":"storageSlots","nameLocation":"11631:12:7","nodeType":"VariableDeclaration","scope":1660,"src":"11614:29:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1607,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11614:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1608,"nodeType":"ArrayTypeName","src":"11614:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"11613:31:7"},"returnParameters":{"id":1614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1613,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1660,"src":"11668:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1611,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11668:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1612,"nodeType":"ArrayTypeName","src":"11668:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"11667:18:7"},"scope":1691,"src":"11592:401:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1669,"nodeType":"Block","src":"12231:72:7","statements":[{"AST":{"nodeType":"YulBlock","src":"12250:47:7","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"12271:5:7"},{"name":"_address","nodeType":"YulIdentifier","src":"12278:8:7"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"12264:6:7"},"nodeType":"YulFunctionCall","src":"12264:23:7"},"nodeType":"YulExpressionStatement","src":"12264:23:7"}]},"evmVersion":"paris","externalReferences":[{"declaration":1665,"isOffset":false,"isSlot":false,"src":"12278:8:7","valueSize":1},{"declaration":1663,"isOffset":false,"isSlot":false,"src":"12271:5:7","valueSize":1}],"id":1668,"nodeType":"InlineAssembly","src":"12241:56:7"}]},"documentation":{"id":1661,"nodeType":"StructuredDocumentation","src":"11999:158:7","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":1670,"implemented":true,"kind":"function","modifiers":[],"name":"_setAddressBySlot","nameLocation":"12171:17:7","nodeType":"FunctionDefinition","parameters":{"id":1666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1663,"mutability":"mutable","name":"_slot","nameLocation":"12197:5:7","nodeType":"VariableDeclaration","scope":1670,"src":"12189:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1662,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12189:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1665,"mutability":"mutable","name":"_address","nameLocation":"12212:8:7","nodeType":"VariableDeclaration","scope":1670,"src":"12204:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1664,"name":"address","nodeType":"ElementaryTypeName","src":"12204:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12188:33:7"},"returnParameters":{"id":1667,"nodeType":"ParameterList","parameters":[],"src":"12231:0:7"},"scope":1691,"src":"12162:141:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1679,"nodeType":"Block","src":"12562:73:7","statements":[{"AST":{"nodeType":"YulBlock","src":"12581:48:7","statements":[{"nodeType":"YulAssignment","src":"12595:24:7","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"12613:5:7"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"12607:5:7"},"nodeType":"YulFunctionCall","src":"12607:12:7"},"variableNames":[{"name":"_address","nodeType":"YulIdentifier","src":"12595:8:7"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1676,"isOffset":false,"isSlot":false,"src":"12595:8:7","valueSize":1},{"declaration":1673,"isOffset":false,"isSlot":false,"src":"12613:5:7","valueSize":1}],"id":1678,"nodeType":"InlineAssembly","src":"12572:57:7"}]},"documentation":{"id":1671,"nodeType":"StructuredDocumentation","src":"12309:165:7","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":1680,"implemented":true,"kind":"function","modifiers":[],"name":"_getAddressBySlot","nameLocation":"12488:17:7","nodeType":"FunctionDefinition","parameters":{"id":1674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1673,"mutability":"mutable","name":"_slot","nameLocation":"12514:5:7","nodeType":"VariableDeclaration","scope":1680,"src":"12506:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1672,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12506:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12505:15:7"},"returnParameters":{"id":1677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1676,"mutability":"mutable","name":"_address","nameLocation":"12552:8:7","nodeType":"VariableDeclaration","scope":1680,"src":"12544:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1675,"name":"address","nodeType":"ElementaryTypeName","src":"12544:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12543:18:7"},"scope":1691,"src":"12479:156:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1689,"nodeType":"Block","src":"12885:71:7","statements":[{"AST":{"nodeType":"YulBlock","src":"12904:46:7","statements":[{"nodeType":"YulAssignment","src":"12918:22:7","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"12934:5:7"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"12928:5:7"},"nodeType":"YulFunctionCall","src":"12928:12:7"},"variableNames":[{"name":"_value","nodeType":"YulIdentifier","src":"12918:6:7"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1683,"isOffset":false,"isSlot":false,"src":"12934:5:7","valueSize":1},{"declaration":1686,"isOffset":false,"isSlot":false,"src":"12918:6:7","valueSize":1}],"id":1688,"nodeType":"InlineAssembly","src":"12895:55:7"}]},"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"12641:160:7","text":" @dev Internal helper function to get a value from a storage slot\n @param _slot storage slot\n @return _value from the storage slot"},"id":1690,"implemented":true,"kind":"function","modifiers":[],"name":"_getValueBySlot","nameLocation":"12815:15:7","nodeType":"FunctionDefinition","parameters":{"id":1684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"_slot","nameLocation":"12839:5:7","nodeType":"VariableDeclaration","scope":1690,"src":"12831:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1682,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12831:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12830:15:7"},"returnParameters":{"id":1687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1686,"mutability":"mutable","name":"_value","nameLocation":"12877:6:7","nodeType":"VariableDeclaration","scope":1690,"src":"12869:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1685,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12869:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12868:16:7"},"scope":1691,"src":"12806:150:7","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1692,"src":"890:12068:7","usedErrors":[]}],"src":"115:12843:7"},"id":7},"contracts/consumers/FirewallConsumerStorage.sol":{"ast":{"absolutePath":"contracts/consumers/FirewallConsumerStorage.sol","exportedSymbols":{"Address":[828],"FirewallConsumerStorage":[1988],"IFirewall":[2281],"IFirewallConsumerStorage":[2312]},"id":1989,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1693,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:8"},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":1695,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1989,"sourceUnit":829,"src":"140:66:8","symbolAliases":[{"foreign":{"id":1694,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"148:7:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewall.sol","file":"../interfaces/IFirewall.sol","id":1697,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1989,"sourceUnit":2282,"src":"207:54:8","symbolAliases":[{"foreign":{"id":1696,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"215:9:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewallConsumerStorage.sol","file":"../interfaces/IFirewallConsumerStorage.sol","id":1699,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1989,"sourceUnit":2313,"src":"262:84:8","symbolAliases":[{"foreign":{"id":1698,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"270:24:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1701,"name":"IFirewallConsumerStorage","nameLocations":["787:24:8"],"nodeType":"IdentifierPath","referencedDeclaration":2312,"src":"787:24:8"},"id":1702,"nodeType":"InheritanceSpecifier","src":"787:24:8"}],"canonicalName":"FirewallConsumerStorage","contractDependencies":[],"contractKind":"contract","documentation":{"id":1700,"nodeType":"StructuredDocumentation","src":"348:402:8","text":" @title Firewall Consumer Storage 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 must define a firewall contract which will manage the policies that are applied to the contract.\n It also must define a firewall admin which will be able to add and remove policies."},"fullyImplemented":true,"id":1988,"linearizedBaseContracts":[1988,2312],"name":"FirewallConsumerStorage","nameLocation":"760:23:8","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1715,"mutability":"constant","name":"FIREWALL_STORAGE_SLOT","nameLocation":"899:21:8","nodeType":"VariableDeclaration","scope":1988,"src":"874:100:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1703,"name":"bytes32","nodeType":"ElementaryTypeName","src":"874:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c","id":1709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"949:18:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662","typeString":"literal_string \"eip1967.firewall\""},"value":"eip1967.firewall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662","typeString":"literal_string \"eip1967.firewall\""}],"id":1708,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"939:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"939:29:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"931:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1706,"name":"uint256","nodeType":"ElementaryTypeName","src":"931:7:8","typeDescriptions":{}}},"id":1711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"931:38:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"972:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"931:42:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"923:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1704,"name":"bytes32","nodeType":"ElementaryTypeName","src":"923:7:8","typeDescriptions":{}}},"id":1714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"923:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1728,"mutability":"constant","name":"FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"1067:27:8","nodeType":"VariableDeclaration","scope":1988,"src":"1042:112:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1716,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1042:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c2e61646d696e","id":1722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1123:24:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""},"value":"eip1967.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""}],"id":1721,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1113:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1113:35:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1105:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1719,"name":"uint256","nodeType":"ElementaryTypeName","src":"1105:7:8","typeDescriptions":{}}},"id":1724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1105:44:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1152:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1105:48:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1097:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1717,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1097:7:8","typeDescriptions":{}}},"id":1727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1097:57:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1741,"mutability":"constant","name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"1273:31:8","nodeType":"VariableDeclaration","scope":1988,"src":"1248:120:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1729,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1248:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6e65772e6669726577616c6c2e61646d696e","id":1735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1333:28:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""},"value":"eip1967.new.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""}],"id":1734,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1323:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1323:39:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1315:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1732,"name":"uint256","nodeType":"ElementaryTypeName","src":"1315:7:8","typeDescriptions":{}}},"id":1737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1315:48:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1366:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1315:52:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1307:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1730,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1307:7:8","typeDescriptions":{}}},"id":1740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1307:61:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1754,"mutability":"constant","name":"APPROVED_TARGET_SLOT","nameLocation":"1480:20:8","nodeType":"VariableDeclaration","scope":1988,"src":"1455:106:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1742,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1455:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e617070726f7665642e746172676574","id":1748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1529:25:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_9a47a57dd949ca52baa9f4dd2008a3df675ab7e24583f22e3b264117679d741e","typeString":"literal_string \"eip1967.approved.target\""},"value":"eip1967.approved.target"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9a47a57dd949ca52baa9f4dd2008a3df675ab7e24583f22e3b264117679d741e","typeString":"literal_string \"eip1967.approved.target\""}],"id":1747,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1519:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1519:36:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1511:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1745,"name":"uint256","nodeType":"ElementaryTypeName","src":"1511:7:8","typeDescriptions":{}}},"id":1750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1511:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1559:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1511:49:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1503:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1743,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1503:7:8","typeDescriptions":{}}},"id":1753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1503:58:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1767,"mutability":"constant","name":"USER_NATIVE_FEE_SLOT","nameLocation":"1593:20:8","nodeType":"VariableDeclaration","scope":1988,"src":"1568:106:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1755,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1568:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e757365722e6e61746976652e666565","id":1761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1642:25:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_fa772cc97e705cdeca11bb64152cb56987b045e50611cde5b293130495205bea","typeString":"literal_string \"eip1967.user.native.fee\""},"value":"eip1967.user.native.fee"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_fa772cc97e705cdeca11bb64152cb56987b045e50611cde5b293130495205bea","typeString":"literal_string \"eip1967.user.native.fee\""}],"id":1760,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1632:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1632:36:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1624:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1758,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:8","typeDescriptions":{}}},"id":1763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1624:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1672:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1624:49:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1616:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1756,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1616:7:8","typeDescriptions":{}}},"id":1766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1616:58:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"anonymous":false,"eventSelector":"2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b","id":1771,"name":"FirewallAdminUpdated","nameLocation":"1687:20:8","nodeType":"EventDefinition","parameters":{"id":1770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1769,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"1716:8:8","nodeType":"VariableDeclaration","scope":1771,"src":"1708:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1768,"name":"address","nodeType":"ElementaryTypeName","src":"1708:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1707:18:8"},"src":"1681:45:8"},{"anonymous":false,"eventSelector":"60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd03608670","id":1775,"name":"FirewallUpdated","nameLocation":"1737:15:8","nodeType":"EventDefinition","parameters":{"id":1774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1773,"indexed":false,"mutability":"mutable","name":"newFirewall","nameLocation":"1761:11:8","nodeType":"VariableDeclaration","scope":1775,"src":"1753:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1772,"name":"address","nodeType":"ElementaryTypeName","src":"1753:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1752:21:8"},"src":"1731:43:8"},{"body":{"id":1789,"nodeType":"Block","src":"1896:137:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1779,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1914:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1918:6:8","memberName":"sender","nodeType":"MemberAccess","src":"1914:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":1782,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1728,"src":"1946:27:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1781,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"1928:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:46:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1914:60:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061646d696e","id":1785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1976:38:8","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":1778,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1906:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1906:109:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1787,"nodeType":"ExpressionStatement","src":"1906:109:8"},{"id":1788,"nodeType":"PlaceholderStatement","src":"2025:1:8"}]},"documentation":{"id":1776,"nodeType":"StructuredDocumentation","src":"1780:82:8","text":" @dev modifier similar to onlyOwner, but for the firewall admin."},"id":1790,"name":"onlyFirewallAdmin","nameLocation":"1876:17:8","nodeType":"ModifierDefinition","parameters":{"id":1777,"nodeType":"ParameterList","parameters":[],"src":"1893:2:8"},"src":"1867:166:8","virtual":false,"visibility":"internal"},{"body":{"id":1808,"nodeType":"Block","src":"2238:140:8","statements":[{"expression":{"arguments":[{"id":1799,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"2266:21:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1800,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"2289:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1798,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1958,"src":"2248:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2248:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1802,"nodeType":"ExpressionStatement","src":"2248:51:8"},{"expression":{"arguments":[{"id":1804,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1728,"src":"2327:27:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1805,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1795,"src":"2356:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1803,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1958,"src":"2309:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2309:62:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1807,"nodeType":"ExpressionStatement","src":"2309:62:8"}]},"documentation":{"id":1791,"nodeType":"StructuredDocumentation","src":"2039:117:8","text":" @dev Initializes a contract protected by a firewall, with a firewall address and a firewall admin."},"id":1809,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1793,"mutability":"mutable","name":"_firewall","nameLocation":"2190:9:8","nodeType":"VariableDeclaration","scope":1809,"src":"2182:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"2182:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1795,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"2217:14:8","nodeType":"VariableDeclaration","scope":1809,"src":"2209:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1794,"name":"address","nodeType":"ElementaryTypeName","src":"2209:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2172:65:8"},"returnParameters":{"id":1797,"nodeType":"ParameterList","parameters":[],"src":"2238:0:8"},"scope":1988,"src":"2161:217:8","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2306],"body":{"id":1818,"nodeType":"Block","src":"2445:63:8","statements":[{"expression":{"arguments":[{"id":1815,"name":"APPROVED_TARGET_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1754,"src":"2480:20:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1814,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"2462:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2462:39:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1813,"id":1817,"nodeType":"Return","src":"2455:46:8"}]},"functionSelector":"e79542a8","id":1819,"implemented":true,"kind":"function","modifiers":[],"name":"getApprovedTarget","nameLocation":"2393:17:8","nodeType":"FunctionDefinition","parameters":{"id":1810,"nodeType":"ParameterList","parameters":[],"src":"2410:2:8"},"returnParameters":{"id":1813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1819,"src":"2436:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1811,"name":"address","nodeType":"ElementaryTypeName","src":"2436:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2435:9:8"},"scope":1988,"src":"2384:124:8","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2311],"body":{"id":1831,"nodeType":"Block","src":"2574:70:8","statements":[{"expression":{"arguments":[{"arguments":[{"id":1827,"name":"USER_NATIVE_FEE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"2615:20:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1826,"name":"_getValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"2599:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2599:37:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2591:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1824,"name":"uint256","nodeType":"ElementaryTypeName","src":"2591:7:8","typeDescriptions":{}}},"id":1829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2591:46:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1823,"id":1830,"nodeType":"Return","src":"2584:53:8"}]},"functionSelector":"1498be2f","id":1832,"implemented":true,"kind":"function","modifiers":[],"name":"getUserNativeFee","nameLocation":"2523:16:8","nodeType":"FunctionDefinition","parameters":{"id":1820,"nodeType":"ParameterList","parameters":[],"src":"2539:2:8"},"returnParameters":{"id":1823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1822,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1832,"src":"2565:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1821,"name":"uint256","nodeType":"ElementaryTypeName","src":"2565:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2564:9:8"},"scope":1988,"src":"2514:130:8","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2301],"body":{"id":1841,"nodeType":"Block","src":"2705:64:8","statements":[{"expression":{"arguments":[{"id":1838,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"2740:21:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1837,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"2722:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2722:40:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1836,"id":1840,"nodeType":"Return","src":"2715:47:8"}]},"functionSelector":"51cfdd39","id":1842,"implemented":true,"kind":"function","modifiers":[],"name":"getFirewall","nameLocation":"2659:11:8","nodeType":"FunctionDefinition","parameters":{"id":1833,"nodeType":"ParameterList","parameters":[],"src":"2670:2:8"},"returnParameters":{"id":1836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1835,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1842,"src":"2696:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1834,"name":"address","nodeType":"ElementaryTypeName","src":"2696:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2695:9:8"},"scope":1988,"src":"2650:119:8","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2296],"body":{"id":1851,"nodeType":"Block","src":"2835:70:8","statements":[{"expression":{"arguments":[{"id":1848,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1728,"src":"2870:27:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1847,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"2852:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2852:46:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1846,"id":1850,"nodeType":"Return","src":"2845:53:8"}]},"functionSelector":"af7f27f4","id":1852,"implemented":true,"kind":"function","modifiers":[],"name":"getFirewallAdmin","nameLocation":"2784:16:8","nodeType":"FunctionDefinition","parameters":{"id":1843,"nodeType":"ParameterList","parameters":[],"src":"2800:2:8"},"returnParameters":{"id":1846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1845,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1852,"src":"2826:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1844,"name":"address","nodeType":"ElementaryTypeName","src":"2826:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2825:9:8"},"scope":1988,"src":"2775:130:8","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":1865,"nodeType":"Block","src":"3240:64:8","statements":[{"expression":{"arguments":[{"id":1861,"name":"APPROVED_TARGET_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1754,"src":"3268:20:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1862,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"3290:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1860,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1958,"src":"3250:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3250:47:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1864,"nodeType":"ExpressionStatement","src":"3250:47:8"}]},"documentation":{"id":1853,"nodeType":"StructuredDocumentation","src":"2911:262:8","text":" @dev Allows firewall admin to set target.\n IMPORTANT: Only set approved target if you know what you're doing. Anyone can cause this contract\n to send any data to an approved target.\n @param target address of the target"},"functionSelector":"776d1a01","id":1866,"implemented":true,"kind":"function","modifiers":[{"id":1858,"kind":"modifierInvocation","modifierName":{"id":1857,"name":"onlyFirewallAdmin","nameLocations":["3222:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":1790,"src":"3222:17:8"},"nodeType":"ModifierInvocation","src":"3222:17:8"}],"name":"setTarget","nameLocation":"3187:9:8","nodeType":"FunctionDefinition","parameters":{"id":1856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1855,"mutability":"mutable","name":"target","nameLocation":"3205:6:8","nodeType":"VariableDeclaration","scope":1866,"src":"3197:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1854,"name":"address","nodeType":"ElementaryTypeName","src":"3197:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3196:16:8"},"returnParameters":{"id":1859,"nodeType":"ParameterList","parameters":[],"src":"3240:0:8"},"scope":1988,"src":"3178:126:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1879,"nodeType":"Block","src":"3520:59:8","statements":[{"expression":{"arguments":[{"id":1875,"name":"USER_NATIVE_FEE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"3546:20:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1876,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3568:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1874,"name":"_setValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1977,"src":"3530:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":1877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3530:42:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1878,"nodeType":"ExpressionStatement","src":"3530:42:8"}]},"documentation":{"id":1867,"nodeType":"StructuredDocumentation","src":"3310:139:8","text":" @dev Allows firewall admin to set user native fee for safeFunctionCall.\n @param fee native fee for the user"},"functionSelector":"369c87ca","id":1880,"implemented":true,"kind":"function","modifiers":[{"id":1872,"kind":"modifierInvocation","modifierName":{"id":1871,"name":"onlyFirewallAdmin","nameLocations":["3502:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":1790,"src":"3502:17:8"},"nodeType":"ModifierInvocation","src":"3502:17:8"}],"name":"setUserNativeFee","nameLocation":"3463:16:8","nodeType":"FunctionDefinition","parameters":{"id":1870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1869,"mutability":"mutable","name":"fee","nameLocation":"3488:3:8","nodeType":"VariableDeclaration","scope":1880,"src":"3480:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1868,"name":"uint256","nodeType":"ElementaryTypeName","src":"3480:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3479:13:8"},"returnParameters":{"id":1873,"nodeType":"ParameterList","parameters":[],"src":"3520:0:8"},"scope":1988,"src":"3454:125:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1897,"nodeType":"Block","src":"3806:109:8","statements":[{"expression":{"arguments":[{"id":1889,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"3834:21:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1890,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1883,"src":"3857:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1888,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1958,"src":"3816:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3816:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1892,"nodeType":"ExpressionStatement","src":"3816:51:8"},{"eventCall":{"arguments":[{"id":1894,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1883,"src":"3898:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1893,"name":"FirewallUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"3882:15:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3882:26:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1896,"nodeType":"EmitStatement","src":"3877:31:8"}]},"documentation":{"id":1881,"nodeType":"StructuredDocumentation","src":"3585:149:8","text":" @dev Admin only function allowing the consumers admin to set the firewall address.\n @param _firewall address of the firewall"},"functionSelector":"8c36d02d","id":1898,"implemented":true,"kind":"function","modifiers":[{"id":1886,"kind":"modifierInvocation","modifierName":{"id":1885,"name":"onlyFirewallAdmin","nameLocations":["3788:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":1790,"src":"3788:17:8"},"nodeType":"ModifierInvocation","src":"3788:17:8"}],"name":"setFirewall","nameLocation":"3748:11:8","nodeType":"FunctionDefinition","parameters":{"id":1884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1883,"mutability":"mutable","name":"_firewall","nameLocation":"3768:9:8","nodeType":"VariableDeclaration","scope":1898,"src":"3760:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1882,"name":"address","nodeType":"ElementaryTypeName","src":"3760:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3759:19:8"},"returnParameters":{"id":1887,"nodeType":"ParameterList","parameters":[],"src":"3806:0:8"},"scope":1988,"src":"3739:176:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1921,"nodeType":"Block","src":"4158:164:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1907,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"4176:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4202:1:8","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":1909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4194:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1908,"name":"address","nodeType":"ElementaryTypeName","src":"4194:7:8","typeDescriptions":{}}},"id":1911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4194:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4176:28:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4206:32:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949","typeString":"literal_string \"FirewallConsumer: zero address\""},"value":"FirewallConsumer: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949","typeString":"literal_string \"FirewallConsumer: zero address\""}],"id":1906,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4168:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4168:71:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1915,"nodeType":"ExpressionStatement","src":"4168:71:8"},{"expression":{"arguments":[{"id":1917,"name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"4267:31:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1918,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"4300:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1916,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1958,"src":"4249:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4249:66:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1920,"nodeType":"ExpressionStatement","src":"4249:66:8"}]},"documentation":{"id":1899,"nodeType":"StructuredDocumentation","src":"3921:155:8","text":" @dev Admin only function, sets new firewall admin. New admin must accept.\n @param _firewallAdmin address of the new firewall admin"},"functionSelector":"734b7198","id":1922,"implemented":true,"kind":"function","modifiers":[{"id":1904,"kind":"modifierInvocation","modifierName":{"id":1903,"name":"onlyFirewallAdmin","nameLocations":["4140:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":1790,"src":"4140:17:8"},"nodeType":"ModifierInvocation","src":"4140:17:8"}],"name":"setFirewallAdmin","nameLocation":"4090:16:8","nodeType":"FunctionDefinition","parameters":{"id":1902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1901,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"4115:14:8","nodeType":"VariableDeclaration","scope":1922,"src":"4107:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1900,"name":"address","nodeType":"ElementaryTypeName","src":"4107:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4106:24:8"},"returnParameters":{"id":1905,"nodeType":"ParameterList","parameters":[],"src":"4158:0:8"},"scope":1988,"src":"4081:241:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1947,"nodeType":"Block","src":"4431:240:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1927,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4449:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4453:6:8","memberName":"sender","nodeType":"MemberAccess","src":"4449:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":1930,"name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"4481:31:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1929,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"4463:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4463:50:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4449:64:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","id":1933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4515:33:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427","typeString":"literal_string \"FirewallConsumer: not new admin\""},"value":"FirewallConsumer: not new admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427","typeString":"literal_string \"FirewallConsumer: not new admin\""}],"id":1926,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4441:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4441:108:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1935,"nodeType":"ExpressionStatement","src":"4441:108:8"},{"expression":{"arguments":[{"id":1937,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1728,"src":"4577:27:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1938,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4606:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4610:6:8","memberName":"sender","nodeType":"MemberAccess","src":"4606:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1936,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1958,"src":"4559:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4559:58:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1941,"nodeType":"ExpressionStatement","src":"4559:58:8"},{"eventCall":{"arguments":[{"expression":{"id":1943,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4653:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4657:6:8","memberName":"sender","nodeType":"MemberAccess","src":"4653:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1942,"name":"FirewallAdminUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1771,"src":"4632:20:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4632:32:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1946,"nodeType":"EmitStatement","src":"4627:37:8"}]},"documentation":{"id":1923,"nodeType":"StructuredDocumentation","src":"4328:58:8","text":" @dev Accept the role as firewall admin."},"functionSelector":"7c65c38b","id":1948,"implemented":true,"kind":"function","modifiers":[],"name":"acceptFirewallAdmin","nameLocation":"4400:19:8","nodeType":"FunctionDefinition","parameters":{"id":1924,"nodeType":"ParameterList","parameters":[],"src":"4419:2:8"},"returnParameters":{"id":1925,"nodeType":"ParameterList","parameters":[],"src":"4431:0:8"},"scope":1988,"src":"4391:280:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1957,"nodeType":"Block","src":"4909:72:8","statements":[{"AST":{"nodeType":"YulBlock","src":"4928:47:8","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"4949:5:8"},{"name":"_address","nodeType":"YulIdentifier","src":"4956:8:8"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4942:6:8"},"nodeType":"YulFunctionCall","src":"4942:23:8"},"nodeType":"YulExpressionStatement","src":"4942:23:8"}]},"evmVersion":"paris","externalReferences":[{"declaration":1953,"isOffset":false,"isSlot":false,"src":"4956:8:8","valueSize":1},{"declaration":1951,"isOffset":false,"isSlot":false,"src":"4949:5:8","valueSize":1}],"id":1956,"nodeType":"InlineAssembly","src":"4919:56:8"}]},"documentation":{"id":1949,"nodeType":"StructuredDocumentation","src":"4677:158:8","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":1958,"implemented":true,"kind":"function","modifiers":[],"name":"_setAddressBySlot","nameLocation":"4849:17:8","nodeType":"FunctionDefinition","parameters":{"id":1954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1951,"mutability":"mutable","name":"_slot","nameLocation":"4875:5:8","nodeType":"VariableDeclaration","scope":1958,"src":"4867:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1950,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4867:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1953,"mutability":"mutable","name":"_address","nameLocation":"4890:8:8","nodeType":"VariableDeclaration","scope":1958,"src":"4882:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1952,"name":"address","nodeType":"ElementaryTypeName","src":"4882:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4866:33:8"},"returnParameters":{"id":1955,"nodeType":"ParameterList","parameters":[],"src":"4909:0:8"},"scope":1988,"src":"4840:141:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1967,"nodeType":"Block","src":"5240:73:8","statements":[{"AST":{"nodeType":"YulBlock","src":"5259:48:8","statements":[{"nodeType":"YulAssignment","src":"5273:24:8","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"5291:5:8"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"5285:5:8"},"nodeType":"YulFunctionCall","src":"5285:12:8"},"variableNames":[{"name":"_address","nodeType":"YulIdentifier","src":"5273:8:8"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1964,"isOffset":false,"isSlot":false,"src":"5273:8:8","valueSize":1},{"declaration":1961,"isOffset":false,"isSlot":false,"src":"5291:5:8","valueSize":1}],"id":1966,"nodeType":"InlineAssembly","src":"5250:57:8"}]},"documentation":{"id":1959,"nodeType":"StructuredDocumentation","src":"4987:165:8","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":1968,"implemented":true,"kind":"function","modifiers":[],"name":"_getAddressBySlot","nameLocation":"5166:17:8","nodeType":"FunctionDefinition","parameters":{"id":1962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1961,"mutability":"mutable","name":"_slot","nameLocation":"5192:5:8","nodeType":"VariableDeclaration","scope":1968,"src":"5184:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1960,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5184:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5183:15:8"},"returnParameters":{"id":1965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1964,"mutability":"mutable","name":"_address","nameLocation":"5230:8:8","nodeType":"VariableDeclaration","scope":1968,"src":"5222:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1963,"name":"address","nodeType":"ElementaryTypeName","src":"5222:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5221:18:8"},"scope":1988,"src":"5157:156:8","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1976,"nodeType":"Block","src":"5384:70:8","statements":[{"AST":{"nodeType":"YulBlock","src":"5403:45:8","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"5424:5:8"},{"name":"_value","nodeType":"YulIdentifier","src":"5431:6:8"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"5417:6:8"},"nodeType":"YulFunctionCall","src":"5417:21:8"},"nodeType":"YulExpressionStatement","src":"5417:21:8"}]},"evmVersion":"paris","externalReferences":[{"declaration":1970,"isOffset":false,"isSlot":false,"src":"5424:5:8","valueSize":1},{"declaration":1972,"isOffset":false,"isSlot":false,"src":"5431:6:8","valueSize":1}],"id":1975,"nodeType":"InlineAssembly","src":"5394:54:8"}]},"id":1977,"implemented":true,"kind":"function","modifiers":[],"name":"_setValueBySlot","nameLocation":"5328:15:8","nodeType":"FunctionDefinition","parameters":{"id":1973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1970,"mutability":"mutable","name":"_slot","nameLocation":"5352:5:8","nodeType":"VariableDeclaration","scope":1977,"src":"5344:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1969,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5344:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1972,"mutability":"mutable","name":"_value","nameLocation":"5367:6:8","nodeType":"VariableDeclaration","scope":1977,"src":"5359:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1971,"name":"uint256","nodeType":"ElementaryTypeName","src":"5359:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5343:31:8"},"returnParameters":{"id":1974,"nodeType":"ParameterList","parameters":[],"src":"5384:0:8"},"scope":1988,"src":"5319:135:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1986,"nodeType":"Block","src":"5704:71:8","statements":[{"AST":{"nodeType":"YulBlock","src":"5723:46:8","statements":[{"nodeType":"YulAssignment","src":"5737:22:8","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"5753:5:8"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"5747:5:8"},"nodeType":"YulFunctionCall","src":"5747:12:8"},"variableNames":[{"name":"_value","nodeType":"YulIdentifier","src":"5737:6:8"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1980,"isOffset":false,"isSlot":false,"src":"5753:5:8","valueSize":1},{"declaration":1983,"isOffset":false,"isSlot":false,"src":"5737:6:8","valueSize":1}],"id":1985,"nodeType":"InlineAssembly","src":"5714:55:8"}]},"documentation":{"id":1978,"nodeType":"StructuredDocumentation","src":"5460:160:8","text":" @dev Internal helper function to get a value from a storage slot\n @param _slot storage slot\n @return _value from the storage slot"},"id":1987,"implemented":true,"kind":"function","modifiers":[],"name":"_getValueBySlot","nameLocation":"5634:15:8","nodeType":"FunctionDefinition","parameters":{"id":1981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1980,"mutability":"mutable","name":"_slot","nameLocation":"5658:5:8","nodeType":"VariableDeclaration","scope":1987,"src":"5650:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5650:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5649:15:8"},"returnParameters":{"id":1984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1983,"mutability":"mutable","name":"_value","nameLocation":"5696:6:8","nodeType":"VariableDeclaration","scope":1987,"src":"5688:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1982,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5688:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5687:16:8"},"scope":1988,"src":"5625:150:8","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1989,"src":"751:5026:8","usedErrors":[]}],"src":"115:5662:8"},"id":8},"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol":{"ast":{"absolutePath":"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol","exportedSymbols":{"Address":[828],"IFirewall":[2281],"IFirewallConsumer":[2289],"IFirewallConsumerStorage":[2312],"Initializable":[168],"SimpleUpgradeableFirewallConsumer":[2233]},"id":2234,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1990,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:9"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":1992,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2234,"sourceUnit":169,"src":"140:96:9","symbolAliases":[{"foreign":{"id":1991,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"148:13:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":1994,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2234,"sourceUnit":829,"src":"237:66:9","symbolAliases":[{"foreign":{"id":1993,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"245:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewall.sol","file":"../interfaces/IFirewall.sol","id":1996,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2234,"sourceUnit":2282,"src":"304:54:9","symbolAliases":[{"foreign":{"id":1995,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"312:9:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewallConsumer.sol","file":"../interfaces/IFirewallConsumer.sol","id":1998,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2234,"sourceUnit":2290,"src":"359:70:9","symbolAliases":[{"foreign":{"id":1997,"name":"IFirewallConsumer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"367:17:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewallConsumerStorage.sol","file":"../interfaces/IFirewallConsumerStorage.sol","id":2000,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2234,"sourceUnit":2313,"src":"430:84:9","symbolAliases":[{"foreign":{"id":1999,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"438:24:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2002,"name":"IFirewallConsumer","nameLocations":["882:17:9"],"nodeType":"IdentifierPath","referencedDeclaration":2289,"src":"882:17:9"},"id":2003,"nodeType":"InheritanceSpecifier","src":"882:17:9"},{"baseName":{"id":2004,"name":"Initializable","nameLocations":["901:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":168,"src":"901:13:9"},"id":2005,"nodeType":"InheritanceSpecifier","src":"901:13:9"}],"canonicalName":"SimpleUpgradeableFirewallConsumer","contractDependencies":[],"contractKind":"contract","documentation":{"id":2001,"nodeType":"StructuredDocumentation","src":"516:319:9","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":2233,"linearizedBaseContracts":[2233,168,2289],"name":"SimpleUpgradeableFirewallConsumer","nameLocation":"845:33:9","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2018,"mutability":"constant","name":"FIREWALL_CONSUMER_STORAGE_SLOT","nameLocation":"1010:30:9","nodeType":"VariableDeclaration","scope":2233,"src":"985:126:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2006,"name":"bytes32","nodeType":"ElementaryTypeName","src":"985:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c2e636f6e73756d65722e73746f72616765","id":2012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1069:35:9","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":2011,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1059:9:9","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1059:46:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2010,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1051:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2009,"name":"uint256","nodeType":"ElementaryTypeName","src":"1051:7:9","typeDescriptions":{}}},"id":2014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1051:55:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1109:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1051:59:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1043:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2007,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1043:7:9","typeDescriptions":{}}},"id":2017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1043:68:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":2071,"nodeType":"Block","src":"1637:577:9","statements":[{"assignments":[2022],"declarations":[{"constant":false,"id":2022,"mutability":"mutable","name":"firewallConsumerStorage","nameLocation":"1655:23:9","nodeType":"VariableDeclaration","scope":2071,"src":"1647:31:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2021,"name":"address","nodeType":"ElementaryTypeName","src":"1647:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2025,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2023,"name":"_getFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2212,"src":"1681:27:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1681:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1647:63:9"},{"assignments":[2027],"declarations":[{"constant":false,"id":2027,"mutability":"mutable","name":"firewall","nameLocation":"1728:8:9","nodeType":"VariableDeclaration","scope":2071,"src":"1720:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2026,"name":"address","nodeType":"ElementaryTypeName","src":"1720:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2033,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2029,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"1764:23:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2028,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"1739:24:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewallConsumerStorage_$2312_$","typeString":"type(contract IFirewallConsumerStorage)"}},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1739:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$2312","typeString":"contract IFirewallConsumerStorage"}},"id":2031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1789:11:9","memberName":"getFirewall","nodeType":"MemberAccess","referencedDeclaration":2301,"src":"1739:61:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1739:63:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1720:82:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2034,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"1816:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1836:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1828:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2035,"name":"address","nodeType":"ElementaryTypeName","src":"1828:7:9","typeDescriptions":{}}},"id":2038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1828:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1816:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2043,"nodeType":"IfStatement","src":"1812:74:9","trueBody":{"id":2042,"nodeType":"Block","src":"1840:46:9","statements":[{"id":2040,"nodeType":"PlaceholderStatement","src":"1854:1:9"},{"id":2041,"nodeType":"Return","src":"1869:7:9"}]}},{"assignments":[2045],"declarations":[{"constant":false,"id":2045,"mutability":"mutable","name":"value","nameLocation":"1986:5:9","nodeType":"VariableDeclaration","scope":2071,"src":"1978:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2044,"name":"uint256","nodeType":"ElementaryTypeName","src":"1978:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2046,"nodeType":"VariableDeclarationStatement","src":"1978:13:9"},{"AST":{"nodeType":"YulBlock","src":"2010:44:9","statements":[{"nodeType":"YulAssignment","src":"2024:20:9","value":{"arguments":[],"functionName":{"name":"callvalue","nodeType":"YulIdentifier","src":"2033:9:9"},"nodeType":"YulFunctionCall","src":"2033:11:9"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2024:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2045,"isOffset":false,"isSlot":false,"src":"2024:5:9","valueSize":1}],"id":2047,"nodeType":"InlineAssembly","src":"2001:53:9"},{"expression":{"arguments":[{"expression":{"id":2052,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2096:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2100:6:9","memberName":"sender","nodeType":"MemberAccess","src":"2096:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2054,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2108:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2112:4:9","memberName":"data","nodeType":"MemberAccess","src":"2108:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2056,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2045,"src":"2118:5:9","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":2049,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"2073:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2048,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"2063:9:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$2281_$","typeString":"type(contract IFirewall)"}},"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2063:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$2281","typeString":"contract IFirewall"}},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2083:12:9","memberName":"preExecution","nodeType":"MemberAccess","referencedDeclaration":2244,"src":"2063:32:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2063:61:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2058,"nodeType":"ExpressionStatement","src":"2063:61:9"},{"id":2059,"nodeType":"PlaceholderStatement","src":"2134:1:9"},{"expression":{"arguments":[{"expression":{"id":2064,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2179:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2183:6:9","memberName":"sender","nodeType":"MemberAccess","src":"2179:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2066,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2191:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2195:4:9","memberName":"data","nodeType":"MemberAccess","src":"2191:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2068,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2045,"src":"2201:5:9","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":2061,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2027,"src":"2155:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2060,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2281,"src":"2145:9:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$2281_$","typeString":"type(contract IFirewall)"}},"id":2062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2145:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$2281","typeString":"contract IFirewall"}},"id":2063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2165:13:9","memberName":"postExecution","nodeType":"MemberAccess","referencedDeclaration":2253,"src":"2145:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":2069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2145:62:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2070,"nodeType":"ExpressionStatement","src":"2145:62:9"}]},"documentation":{"id":2019,"nodeType":"StructuredDocumentation","src":"1118:485:9","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":2072,"name":"firewallProtected","nameLocation":"1617:17:9","nodeType":"ModifierDefinition","parameters":{"id":2020,"nodeType":"ParameterList","parameters":[],"src":"1634:2:9"},"src":"1608:606:9","virtual":false,"visibility":"internal"},{"body":{"id":2085,"nodeType":"Block","src":"2336:110:9","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2076,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2354:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2358:6:9","memberName":"sender","nodeType":"MemberAccess","src":"2354:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2078,"name":"_getFirewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2201,"src":"2368:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2368:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2354:33:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061646d696e","id":2081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2389:38:9","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":2075,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2346:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2346:82:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2083,"nodeType":"ExpressionStatement","src":"2346:82:9"},{"id":2084,"nodeType":"PlaceholderStatement","src":"2438:1:9"}]},"documentation":{"id":2073,"nodeType":"StructuredDocumentation","src":"2220:82:9","text":" @dev modifier similar to onlyOwner, but for the firewall admin."},"id":2086,"name":"onlyFirewallAdmin","nameLocation":"2316:17:9","nodeType":"ModifierDefinition","parameters":{"id":2074,"nodeType":"ParameterList","parameters":[],"src":"2333:2:9"},"src":"2307:139:9","virtual":false,"visibility":"internal"},{"body":{"id":2146,"nodeType":"Block","src":"3165:537:9","statements":[{"assignments":[2095],"declarations":[{"constant":false,"id":2095,"mutability":"mutable","name":"firewallConsumerStorage","nameLocation":"3183:23:9","nodeType":"VariableDeclaration","scope":2146,"src":"3175:31:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2094,"name":"address","nodeType":"ElementaryTypeName","src":"3175:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2098,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2096,"name":"_getFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2212,"src":"3209:27:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3209:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3175:63:9"},{"assignments":[2100],"declarations":[{"constant":false,"id":2100,"mutability":"mutable","name":"target","nameLocation":"3256:6:9","nodeType":"VariableDeclaration","scope":2146,"src":"3248:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2099,"name":"address","nodeType":"ElementaryTypeName","src":"3248:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2106,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2102,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2095,"src":"3290:23:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2101,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"3265:24:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewallConsumerStorage_$2312_$","typeString":"type(contract IFirewallConsumerStorage)"}},"id":2103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3265:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$2312","typeString":"contract IFirewallConsumerStorage"}},"id":2104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3315:17:9","memberName":"getApprovedTarget","nodeType":"MemberAccess","referencedDeclaration":2306,"src":"3265:67:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3265:69:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3248:86:9"},{"assignments":[2108],"declarations":[{"constant":false,"id":2108,"mutability":"mutable","name":"userNativeFee","nameLocation":"3352:13:9","nodeType":"VariableDeclaration","scope":2146,"src":"3344:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2107,"name":"uint256","nodeType":"ElementaryTypeName","src":"3344:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2114,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2110,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2095,"src":"3393:23:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2109,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"3368:24:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewallConsumerStorage_$2312_$","typeString":"type(contract IFirewallConsumerStorage)"}},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3368:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$2312","typeString":"contract IFirewallConsumerStorage"}},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3418:16:9","memberName":"getUserNativeFee","nodeType":"MemberAccess","referencedDeclaration":2311,"src":"3368:66:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3368:68:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3344:92:9"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2116,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3454:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3458:5:9","memberName":"value","nodeType":"MemberAccess","src":"3454:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2118,"name":"userNativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"3467:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3454:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768206e61746976652076616c756520666f7220666565","id":2120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3482:51:9","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":2115,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3446:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3446:88:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2122,"nodeType":"ExpressionStatement","src":"3446:88:9"},{"assignments":[2124,null],"declarations":[{"constant":false,"id":2124,"mutability":"mutable","name":"success","nameLocation":"3550:7:9","nodeType":"VariableDeclaration","scope":2146,"src":"3545:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2123,"name":"bool","nodeType":"ElementaryTypeName","src":"3545:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2131,"initialValue":{"arguments":[{"id":2129,"name":"targetPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2089,"src":"3596:13:9","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":2125,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"3562:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3569:4:9","memberName":"call","nodeType":"MemberAccess","src":"3562:11:9","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":2128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2127,"name":"userNativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"3581:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3562:33:9","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":2130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3562:48:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3544:66:9"},{"expression":{"arguments":[{"id":2133,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2124,"src":"3628:7:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2132,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3620:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3620:16:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2135,"nodeType":"ExpressionStatement","src":"3620:16:9"},{"expression":{"arguments":[{"arguments":[{"id":2141,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3683:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_SimpleUpgradeableFirewallConsumer_$2233","typeString":"contract SimpleUpgradeableFirewallConsumer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SimpleUpgradeableFirewallConsumer_$2233","typeString":"contract SimpleUpgradeableFirewallConsumer"}],"id":2140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3675:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2139,"name":"address","nodeType":"ElementaryTypeName","src":"3675:7:9","typeDescriptions":{}}},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3675:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2143,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2091,"src":"3690:4:9","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":2136,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"3646:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$828_$","typeString":"type(library Address)"}},"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3654:20:9","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":715,"src":"3646:28:9","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":2144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3646:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2145,"nodeType":"ExpressionStatement","src":"3646:49:9"}]},"documentation":{"id":2087,"nodeType":"StructuredDocumentation","src":"2452:592:9","text":" @dev Allows calling an approved external target 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 targetPayload payload to be sent to the target\n @param data data to be executed after the target call"},"functionSelector":"8568b4d2","id":2147,"implemented":true,"kind":"function","modifiers":[],"name":"safeFunctionCall","nameLocation":"3058:16:9","nodeType":"FunctionDefinition","parameters":{"id":2092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2089,"mutability":"mutable","name":"targetPayload","nameLocation":"3099:13:9","nodeType":"VariableDeclaration","scope":2147,"src":"3084:28:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2088,"name":"bytes","nodeType":"ElementaryTypeName","src":"3084:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2091,"mutability":"mutable","name":"data","nameLocation":"3137:4:9","nodeType":"VariableDeclaration","scope":2147,"src":"3122:19:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2090,"name":"bytes","nodeType":"ElementaryTypeName","src":"3122:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3074:73:9"},"returnParameters":{"id":2093,"nodeType":"ParameterList","parameters":[],"src":"3165:0:9"},"scope":2233,"src":"3049:653:9","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2288],"body":{"id":2156,"nodeType":"Block","src":"3830:43:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2153,"name":"_getFirewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2201,"src":"3847:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3847:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2152,"id":2155,"nodeType":"Return","src":"3840:26:9"}]},"documentation":{"id":2148,"nodeType":"StructuredDocumentation","src":"3708:60:9","text":" @dev View function for the firewall admin"},"functionSelector":"f05c8582","id":2157,"implemented":true,"kind":"function","modifiers":[],"name":"firewallAdmin","nameLocation":"3782:13:9","nodeType":"FunctionDefinition","parameters":{"id":2149,"nodeType":"ParameterList","parameters":[],"src":"3795:2:9"},"returnParameters":{"id":2152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2157,"src":"3821:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2150,"name":"address","nodeType":"ElementaryTypeName","src":"3821:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3820:9:9"},"scope":2233,"src":"3773:100:9","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2169,"nodeType":"Block","src":"3976:92:9","statements":[{"expression":{"arguments":[{"id":2165,"name":"FIREWALL_CONSUMER_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"4004:30:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2166,"name":"_firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2159,"src":"4036:24:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2164,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2222,"src":"3986:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3986:75:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2168,"nodeType":"ExpressionStatement","src":"3986:75:9"}]},"functionSelector":"af076af4","id":2170,"implemented":true,"kind":"function","modifiers":[{"id":2162,"kind":"modifierInvocation","modifierName":{"id":2161,"name":"onlyFirewallAdmin","nameLocations":["3958:17:9"],"nodeType":"IdentifierPath","referencedDeclaration":2086,"src":"3958:17:9"},"nodeType":"ModifierInvocation","src":"3958:17:9"}],"name":"setFirewallConsumerStorage","nameLocation":"3888:26:9","nodeType":"FunctionDefinition","parameters":{"id":2160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2159,"mutability":"mutable","name":"_firewallConsumerStorage","nameLocation":"3923:24:9","nodeType":"VariableDeclaration","scope":2170,"src":"3915:32:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2158,"name":"address","nodeType":"ElementaryTypeName","src":"3915:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3914:34:9"},"returnParameters":{"id":2163,"nodeType":"ParameterList","parameters":[],"src":"3976:0:9"},"scope":2233,"src":"3879:189:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2182,"nodeType":"Block","src":"4184:92:9","statements":[{"expression":{"arguments":[{"id":2178,"name":"FIREWALL_CONSUMER_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"4212:30:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2179,"name":"_firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"4244:24:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2177,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2222,"src":"4194:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4194:75:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2181,"nodeType":"ExpressionStatement","src":"4194:75:9"}]},"id":2183,"implemented":true,"kind":"function","modifiers":[{"id":2175,"kind":"modifierInvocation","modifierName":{"id":2174,"name":"onlyInitializing","nameLocations":["4167:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":113,"src":"4167:16:9"},"nodeType":"ModifierInvocation","src":"4167:16:9"}],"name":"__SimpleUpgradeableFirewallConsumer_init","nameLocation":"4083:40:9","nodeType":"FunctionDefinition","parameters":{"id":2173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2172,"mutability":"mutable","name":"_firewallConsumerStorage","nameLocation":"4132:24:9","nodeType":"VariableDeclaration","scope":2183,"src":"4124:32:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2171,"name":"address","nodeType":"ElementaryTypeName","src":"4124:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4123:34:9"},"returnParameters":{"id":2176,"nodeType":"ParameterList","parameters":[],"src":"4184:0:9"},"scope":2233,"src":"4074:202:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2200,"nodeType":"Block","src":"4417:165:9","statements":[{"assignments":[2190],"declarations":[{"constant":false,"id":2190,"mutability":"mutable","name":"firewallConsumerStorage","nameLocation":"4435:23:9","nodeType":"VariableDeclaration","scope":2200,"src":"4427:31:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2189,"name":"address","nodeType":"ElementaryTypeName","src":"4427:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2193,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2191,"name":"_getFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2212,"src":"4461:27:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4461:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4427:63:9"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2195,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2190,"src":"4532:23:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2194,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"4507:24:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewallConsumerStorage_$2312_$","typeString":"type(contract IFirewallConsumerStorage)"}},"id":2196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4507:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$2312","typeString":"contract IFirewallConsumerStorage"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4557:16:9","memberName":"getFirewallAdmin","nodeType":"MemberAccess","referencedDeclaration":2296,"src":"4507:66:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4507:68:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2188,"id":2199,"nodeType":"Return","src":"4500:75:9"}]},"documentation":{"id":2184,"nodeType":"StructuredDocumentation","src":"4282:69:9","text":" @dev Internal view function for the firewall admin"},"id":2201,"implemented":true,"kind":"function","modifiers":[],"name":"_getFirewallAdmin","nameLocation":"4365:17:9","nodeType":"FunctionDefinition","parameters":{"id":2185,"nodeType":"ParameterList","parameters":[],"src":"4382:2:9"},"returnParameters":{"id":2188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2187,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2201,"src":"4408:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2186,"name":"address","nodeType":"ElementaryTypeName","src":"4408:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4407:9:9"},"scope":2233,"src":"4356:226:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2211,"nodeType":"Block","src":"4735:73:9","statements":[{"expression":{"arguments":[{"id":2208,"name":"FIREWALL_CONSUMER_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"4770:30:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2207,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"4752:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4752:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2206,"id":2210,"nodeType":"Return","src":"4745:56:9"}]},"documentation":{"id":2202,"nodeType":"StructuredDocumentation","src":"4588:71:9","text":" @dev Internal view function for the consumer storage"},"id":2212,"implemented":true,"kind":"function","modifiers":[],"name":"_getFirewallConsumerStorage","nameLocation":"4673:27:9","nodeType":"FunctionDefinition","parameters":{"id":2203,"nodeType":"ParameterList","parameters":[],"src":"4700:2:9"},"returnParameters":{"id":2206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2205,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2212,"src":"4726:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2204,"name":"address","nodeType":"ElementaryTypeName","src":"4726:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4725:9:9"},"scope":2233,"src":"4664:144:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2221,"nodeType":"Block","src":"5047:72:9","statements":[{"AST":{"nodeType":"YulBlock","src":"5066:47:9","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"5087:5:9"},{"name":"_address","nodeType":"YulIdentifier","src":"5094:8:9"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"5080:6:9"},"nodeType":"YulFunctionCall","src":"5080:23:9"},"nodeType":"YulExpressionStatement","src":"5080:23:9"}]},"evmVersion":"paris","externalReferences":[{"declaration":2217,"isOffset":false,"isSlot":false,"src":"5094:8:9","valueSize":1},{"declaration":2215,"isOffset":false,"isSlot":false,"src":"5087:5:9","valueSize":1}],"id":2220,"nodeType":"InlineAssembly","src":"5057:56:9"}]},"documentation":{"id":2213,"nodeType":"StructuredDocumentation","src":"4815:158:9","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":2222,"implemented":true,"kind":"function","modifiers":[],"name":"_setAddressBySlot","nameLocation":"4987:17:9","nodeType":"FunctionDefinition","parameters":{"id":2218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2215,"mutability":"mutable","name":"_slot","nameLocation":"5013:5:9","nodeType":"VariableDeclaration","scope":2222,"src":"5005:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2214,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5005:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2217,"mutability":"mutable","name":"_address","nameLocation":"5028:8:9","nodeType":"VariableDeclaration","scope":2222,"src":"5020:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2216,"name":"address","nodeType":"ElementaryTypeName","src":"5020:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5004:33:9"},"returnParameters":{"id":2219,"nodeType":"ParameterList","parameters":[],"src":"5047:0:9"},"scope":2233,"src":"4978:141:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2231,"nodeType":"Block","src":"5378:73:9","statements":[{"AST":{"nodeType":"YulBlock","src":"5397:48:9","statements":[{"nodeType":"YulAssignment","src":"5411:24:9","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"5429:5:9"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"5423:5:9"},"nodeType":"YulFunctionCall","src":"5423:12:9"},"variableNames":[{"name":"_address","nodeType":"YulIdentifier","src":"5411:8:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2228,"isOffset":false,"isSlot":false,"src":"5411:8:9","valueSize":1},{"declaration":2225,"isOffset":false,"isSlot":false,"src":"5429:5:9","valueSize":1}],"id":2230,"nodeType":"InlineAssembly","src":"5388:57:9"}]},"documentation":{"id":2223,"nodeType":"StructuredDocumentation","src":"5125:165:9","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":2232,"implemented":true,"kind":"function","modifiers":[],"name":"_getAddressBySlot","nameLocation":"5304:17:9","nodeType":"FunctionDefinition","parameters":{"id":2226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2225,"mutability":"mutable","name":"_slot","nameLocation":"5330:5:9","nodeType":"VariableDeclaration","scope":2232,"src":"5322:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2224,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5322:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5321:15:9"},"returnParameters":{"id":2229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2228,"mutability":"mutable","name":"_address","nameLocation":"5368:8:9","nodeType":"VariableDeclaration","scope":2232,"src":"5360:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2227,"name":"address","nodeType":"ElementaryTypeName","src":"5360:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5359:18:9"},"scope":2233,"src":"5295:156:9","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2234,"src":"836:4618:9","usedErrors":[]}],"src":"115:5339:9"},"id":9},"contracts/interfaces/IFirewall.sol":{"ast":{"absolutePath":"contracts/interfaces/IFirewall.sol","exportedSymbols":{"IFirewall":[2281]},"id":2282,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2235,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:10"},{"abstract":false,"baseContracts":[],"canonicalName":"IFirewall","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2281,"linearizedBaseContracts":[2281],"name":"IFirewall","nameLocation":"148:9:10","nodeType":"ContractDefinition","nodes":[{"functionSelector":"6fe1967c","id":2244,"implemented":false,"kind":"function","modifiers":[],"name":"preExecution","nameLocation":"173:12:10","nodeType":"FunctionDefinition","parameters":{"id":2242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2237,"mutability":"mutable","name":"sender","nameLocation":"194:6:10","nodeType":"VariableDeclaration","scope":2244,"src":"186:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2236,"name":"address","nodeType":"ElementaryTypeName","src":"186:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2239,"mutability":"mutable","name":"data","nameLocation":"215:4:10","nodeType":"VariableDeclaration","scope":2244,"src":"202:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2238,"name":"bytes","nodeType":"ElementaryTypeName","src":"202:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2241,"mutability":"mutable","name":"value","nameLocation":"229:5:10","nodeType":"VariableDeclaration","scope":2244,"src":"221:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2240,"name":"uint256","nodeType":"ElementaryTypeName","src":"221:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"185:50:10"},"returnParameters":{"id":2243,"nodeType":"ParameterList","parameters":[],"src":"244:0:10"},"scope":2281,"src":"164:81:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"93163a91","id":2253,"implemented":false,"kind":"function","modifiers":[],"name":"postExecution","nameLocation":"259:13:10","nodeType":"FunctionDefinition","parameters":{"id":2251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2246,"mutability":"mutable","name":"sender","nameLocation":"281:6:10","nodeType":"VariableDeclaration","scope":2253,"src":"273:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2245,"name":"address","nodeType":"ElementaryTypeName","src":"273:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2248,"mutability":"mutable","name":"data","nameLocation":"302:4:10","nodeType":"VariableDeclaration","scope":2253,"src":"289:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2247,"name":"bytes","nodeType":"ElementaryTypeName","src":"289:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2250,"mutability":"mutable","name":"value","nameLocation":"316:5:10","nodeType":"VariableDeclaration","scope":2253,"src":"308:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2249,"name":"uint256","nodeType":"ElementaryTypeName","src":"308:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"272:50:10"},"returnParameters":{"id":2252,"nodeType":"ParameterList","parameters":[],"src":"331:0:10"},"scope":2281,"src":"250:82:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"33a0c536","id":2265,"implemented":false,"kind":"function","modifiers":[],"name":"preExecutionPrivateInvariants","nameLocation":"346:29:10","nodeType":"FunctionDefinition","parameters":{"id":2260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2255,"mutability":"mutable","name":"sender","nameLocation":"384:6:10","nodeType":"VariableDeclaration","scope":2265,"src":"376:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2254,"name":"address","nodeType":"ElementaryTypeName","src":"376:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2257,"mutability":"mutable","name":"data","nameLocation":"405:4:10","nodeType":"VariableDeclaration","scope":2265,"src":"392:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2256,"name":"bytes","nodeType":"ElementaryTypeName","src":"392:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2259,"mutability":"mutable","name":"value","nameLocation":"419:5:10","nodeType":"VariableDeclaration","scope":2265,"src":"411:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2258,"name":"uint256","nodeType":"ElementaryTypeName","src":"411:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"375:50:10"},"returnParameters":{"id":2264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2265,"src":"444:18:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":2261,"name":"bytes32","nodeType":"ElementaryTypeName","src":"444:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2262,"nodeType":"ArrayTypeName","src":"444:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"443:20:10"},"scope":2281,"src":"337:127:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"cacb2838","id":2280,"implemented":false,"kind":"function","modifiers":[],"name":"postExecutionPrivateInvariants","nameLocation":"478:30:10","nodeType":"FunctionDefinition","parameters":{"id":2278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2267,"mutability":"mutable","name":"sender","nameLocation":"526:6:10","nodeType":"VariableDeclaration","scope":2280,"src":"518:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2266,"name":"address","nodeType":"ElementaryTypeName","src":"518:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2269,"mutability":"mutable","name":"data","nameLocation":"555:4:10","nodeType":"VariableDeclaration","scope":2280,"src":"542:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2268,"name":"bytes","nodeType":"ElementaryTypeName","src":"542:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2271,"mutability":"mutable","name":"value","nameLocation":"577:5:10","nodeType":"VariableDeclaration","scope":2280,"src":"569:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2270,"name":"uint256","nodeType":"ElementaryTypeName","src":"569:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2274,"mutability":"mutable","name":"preValues","nameLocation":"611:9:10","nodeType":"VariableDeclaration","scope":2280,"src":"592:28:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":2272,"name":"bytes32","nodeType":"ElementaryTypeName","src":"592:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2273,"nodeType":"ArrayTypeName","src":"592:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":2277,"mutability":"mutable","name":"postValues","nameLocation":"649:10:10","nodeType":"VariableDeclaration","scope":2280,"src":"630:29:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":2275,"name":"bytes32","nodeType":"ElementaryTypeName","src":"630:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2276,"nodeType":"ArrayTypeName","src":"630:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"508:157:10"},"returnParameters":{"id":2279,"nodeType":"ParameterList","parameters":[],"src":"674:0:10"},"scope":2281,"src":"469:206:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2282,"src":"138:539:10","usedErrors":[]}],"src":"115:562:10"},"id":10},"contracts/interfaces/IFirewallConsumer.sol":{"ast":{"absolutePath":"contracts/interfaces/IFirewallConsumer.sol","exportedSymbols":{"IFirewallConsumer":[2289]},"id":2290,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2283,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IFirewallConsumer","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2289,"linearizedBaseContracts":[2289],"name":"IFirewallConsumer","nameLocation":"148:17:11","nodeType":"ContractDefinition","nodes":[{"functionSelector":"f05c8582","id":2288,"implemented":false,"kind":"function","modifiers":[],"name":"firewallAdmin","nameLocation":"181:13:11","nodeType":"FunctionDefinition","parameters":{"id":2284,"nodeType":"ParameterList","parameters":[],"src":"194:2:11"},"returnParameters":{"id":2287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2286,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2288,"src":"215:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2285,"name":"address","nodeType":"ElementaryTypeName","src":"215:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"214:9:11"},"scope":2289,"src":"172:52:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2290,"src":"138:88:11","usedErrors":[]}],"src":"115:111:11"},"id":11},"contracts/interfaces/IFirewallConsumerStorage.sol":{"ast":{"absolutePath":"contracts/interfaces/IFirewallConsumerStorage.sol","exportedSymbols":{"IFirewallConsumerStorage":[2312]},"id":2313,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2291,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IFirewallConsumerStorage","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2312,"linearizedBaseContracts":[2312],"name":"IFirewallConsumerStorage","nameLocation":"150:24:12","nodeType":"ContractDefinition","nodes":[{"functionSelector":"af7f27f4","id":2296,"implemented":false,"kind":"function","modifiers":[],"name":"getFirewallAdmin","nameLocation":"190:16:12","nodeType":"FunctionDefinition","parameters":{"id":2292,"nodeType":"ParameterList","parameters":[],"src":"206:2:12"},"returnParameters":{"id":2295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2296,"src":"232:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2293,"name":"address","nodeType":"ElementaryTypeName","src":"232:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"231:9:12"},"scope":2312,"src":"181:60:12","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"51cfdd39","id":2301,"implemented":false,"kind":"function","modifiers":[],"name":"getFirewall","nameLocation":"255:11:12","nodeType":"FunctionDefinition","parameters":{"id":2297,"nodeType":"ParameterList","parameters":[],"src":"266:2:12"},"returnParameters":{"id":2300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2299,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2301,"src":"292:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2298,"name":"address","nodeType":"ElementaryTypeName","src":"292:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"291:9:12"},"scope":2312,"src":"246:55:12","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e79542a8","id":2306,"implemented":false,"kind":"function","modifiers":[],"name":"getApprovedTarget","nameLocation":"315:17:12","nodeType":"FunctionDefinition","parameters":{"id":2302,"nodeType":"ParameterList","parameters":[],"src":"332:2:12"},"returnParameters":{"id":2305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2306,"src":"358:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2303,"name":"address","nodeType":"ElementaryTypeName","src":"358:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"357:9:12"},"scope":2312,"src":"306:61:12","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1498be2f","id":2311,"implemented":false,"kind":"function","modifiers":[],"name":"getUserNativeFee","nameLocation":"381:16:12","nodeType":"FunctionDefinition","parameters":{"id":2307,"nodeType":"ParameterList","parameters":[],"src":"397:2:12"},"returnParameters":{"id":2310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2311,"src":"423:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2308,"name":"uint256","nodeType":"ElementaryTypeName","src":"423:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"422:9:12"},"scope":2312,"src":"372:60:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2313,"src":"140:294:12","usedErrors":[]}],"src":"115:319:12"},"id":12},"contracts/interfaces/IOwnable.sol":{"ast":{"absolutePath":"contracts/interfaces/IOwnable.sol","exportedSymbols":{"IOwnable":[2320]},"id":2321,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2314,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"33:21:13"},{"abstract":false,"baseContracts":[],"canonicalName":"IOwnable","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2320,"linearizedBaseContracts":[2320],"name":"IOwnable","nameLocation":"66:8:13","nodeType":"ContractDefinition","nodes":[{"functionSelector":"8da5cb5b","id":2319,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"90:5:13","nodeType":"FunctionDefinition","parameters":{"id":2315,"nodeType":"ParameterList","parameters":[],"src":"95:2:13"},"returnParameters":{"id":2318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2317,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2319,"src":"121:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2316,"name":"address","nodeType":"ElementaryTypeName","src":"121:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"120:9:13"},"scope":2320,"src":"81:49:13","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2321,"src":"56:76:13","usedErrors":[]}],"src":"33:99:13"},"id":13},"contracts/proxies/BeaconProxyFirewallConsumer.sol":{"ast":{"absolutePath":"contracts/proxies/BeaconProxyFirewallConsumer.sol","exportedSymbols":{"BeaconProxyFirewallConsumer":[2345],"ProxyFirewallConsumerBase":[2451]},"id":2346,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2322,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:14"},{"absolutePath":"contracts/proxies/ProxyFirewallConsumerBase.sol","file":"./ProxyFirewallConsumerBase.sol","id":2324,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2346,"sourceUnit":2452,"src":"138:74:14","symbolAliases":[{"foreign":{"id":2323,"name":"ProxyFirewallConsumerBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"146:25:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2326,"name":"ProxyFirewallConsumerBase","nameLocations":["580:25:14"],"nodeType":"IdentifierPath","referencedDeclaration":2451,"src":"580:25:14"},"id":2327,"nodeType":"InheritanceSpecifier","src":"580:25:14"}],"canonicalName":"BeaconProxyFirewallConsumer","contractDependencies":[],"contractKind":"contract","documentation":{"id":2325,"nodeType":"StructuredDocumentation","src":"214:325:14","text":" @title BeaconProxyFirewallConsumer\n @notice this extension allows the Beacon Proxy Owner to initialize the firewall admin even if the contract was originally deployed\n with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed"},"fullyImplemented":true,"id":2345,"linearizedBaseContracts":[2345,2451,1691,850,2289],"name":"BeaconProxyFirewallConsumer","nameLocation":"549:27:14","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2330,"mutability":"constant","name":"BEACON_SLOT","nameLocation":"714:11:14","nodeType":"VariableDeclaration","scope":2345,"src":"689:105:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"689:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":2329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"728:66:14","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"private"},{"body":{"id":2343,"nodeType":"Block","src":"1333:57:14","statements":[{"expression":{"arguments":[{"id":2340,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"1368:14:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2339,"name":"_initializeFirewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2450,"src":"1343:24:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1343:40:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2342,"nodeType":"ExpressionStatement","src":"1343:40:14"}]},"documentation":{"id":2331,"nodeType":"StructuredDocumentation","src":"801:427:14","text":" @dev Beacon Proxy Owner only function, allows the Beacon Proxy Owner to initialize the firewall admin in the following cases:\n - If the contract was originally deployed with a zero-address in the constructor (for various reasons)\n - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n @param _firewallAdmin address of the firewall admin"},"functionSelector":"7eba9471","id":2344,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2336,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2330,"src":"1311:11:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2337,"kind":"modifierInvocation","modifierName":{"id":2335,"name":"isAllowedInitializer","nameLocations":["1290:20:14"],"nodeType":"IdentifierPath","referencedDeclaration":2416,"src":"1290:20:14"},"nodeType":"ModifierInvocation","src":"1290:33:14"}],"name":"initializeFirewallAdmin","nameLocation":"1242:23:14","nodeType":"FunctionDefinition","parameters":{"id":2334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2333,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"1274:14:14","nodeType":"VariableDeclaration","scope":2344,"src":"1266:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2332,"name":"address","nodeType":"ElementaryTypeName","src":"1266:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1265:24:14"},"returnParameters":{"id":2338,"nodeType":"ParameterList","parameters":[],"src":"1333:0:14"},"scope":2345,"src":"1233:157:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2346,"src":"540:852:14","usedErrors":[]}],"src":"115:1277:14"},"id":14},"contracts/proxies/ProxyFirewallConsumerBase.sol":{"ast":{"absolutePath":"contracts/proxies/ProxyFirewallConsumerBase.sol","exportedSymbols":{"FirewallConsumerBase":[1691],"IOwnable":[2320],"ProxyFirewallConsumerBase":[2451]},"id":2452,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2347,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:15"},{"absolutePath":"contracts/FirewallConsumerBase.sol","file":"../FirewallConsumerBase.sol","id":2349,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2452,"sourceUnit":1692,"src":"138:65:15","symbolAliases":[{"foreign":{"id":2348,"name":"FirewallConsumerBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1691,"src":"146:20:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IOwnable.sol","file":"../interfaces/IOwnable.sol","id":2351,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2452,"sourceUnit":2321,"src":"204:52:15","symbolAliases":[{"foreign":{"id":2350,"name":"IOwnable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2320,"src":"212:8:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"arguments":[{"arguments":[{"hexValue":"30","id":2356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"651:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"643:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2354,"name":"address","nodeType":"ElementaryTypeName","src":"643:7:15","typeDescriptions":{}}},"id":2357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"643:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"663:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"655:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2358,"name":"address","nodeType":"ElementaryTypeName","src":"655:7:15","typeDescriptions":{}}},"id":2361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"655:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"baseName":{"id":2353,"name":"FirewallConsumerBase","nameLocations":["622:20:15"],"nodeType":"IdentifierPath","referencedDeclaration":1691,"src":"622:20:15"},"id":2362,"nodeType":"InheritanceSpecifier","src":"622:44:15"}],"canonicalName":"ProxyFirewallConsumerBase","contractDependencies":[],"contractKind":"contract","documentation":{"id":2352,"nodeType":"StructuredDocumentation","src":"258:325:15","text":" @title BeaconProxyFirewallConsumer\n @notice this extension allows the Beacon Proxy Owner to initialize the firewall admin even if the contract was originally deployed\n with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed"},"fullyImplemented":true,"id":2451,"linearizedBaseContracts":[2451,1691,850,2289],"name":"ProxyFirewallConsumerBase","nameLocation":"593:25:15","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2375,"mutability":"constant","name":"FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"698:27:15","nodeType":"VariableDeclaration","scope":2451,"src":"673:112:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2363,"name":"bytes32","nodeType":"ElementaryTypeName","src":"673:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c2e61646d696e","id":2369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"754:24:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""},"value":"eip1967.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""}],"id":2368,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"744:9:15","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"744:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"736:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2366,"name":"uint256","nodeType":"ElementaryTypeName","src":"736:7:15","typeDescriptions":{}}},"id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"736:44:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"783:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"736:48:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"728:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2364,"name":"bytes32","nodeType":"ElementaryTypeName","src":"728:7:15","typeDescriptions":{}}},"id":2374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"728:57:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":2388,"mutability":"constant","name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"904:31:15","nodeType":"VariableDeclaration","scope":2451,"src":"879:120:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2376,"name":"bytes32","nodeType":"ElementaryTypeName","src":"879:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6e65772e6669726577616c6c2e61646d696e","id":2382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"964:28:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""},"value":"eip1967.new.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""}],"id":2381,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"954:9:15","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"954:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"946:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2379,"name":"uint256","nodeType":"ElementaryTypeName","src":"946:7:15","typeDescriptions":{}}},"id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"946:48:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"997:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"946:52:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"938:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2377,"name":"bytes32","nodeType":"ElementaryTypeName","src":"938:7:15","typeDescriptions":{}}},"id":2387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"938:61:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":2415,"nodeType":"Block","src":"1064:268:15","statements":[{"assignments":[2393],"declarations":[{"constant":false,"id":2393,"mutability":"mutable","name":"initializerAddress","nameLocation":"1082:18:15","nodeType":"VariableDeclaration","scope":2415,"src":"1074:26:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2392,"name":"address","nodeType":"ElementaryTypeName","src":"1074:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2397,"initialValue":{"arguments":[{"id":2395,"name":"_admin_memory_slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2390,"src":"1121:18:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2394,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"1103:17:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1103:37:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1074:66:15"},{"assignments":[2399],"declarations":[{"constant":false,"id":2399,"mutability":"mutable","name":"initializerOwner","nameLocation":"1158:16:15","nodeType":"VariableDeclaration","scope":2415,"src":"1150:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2398,"name":"address","nodeType":"ElementaryTypeName","src":"1150:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2405,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2401,"name":"initializerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2393,"src":"1186:18:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2400,"name":"IOwnable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2320,"src":"1177:8:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOwnable_$2320_$","typeString":"type(contract IOwnable)"}},"id":2402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1177:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOwnable_$2320","typeString":"contract IOwnable"}},"id":2403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1206:5:15","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":2319,"src":"1177:34:15","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1177:36:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1150:63:15"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2407,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1231:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1235:6:15","memberName":"sender","nodeType":"MemberAccess","src":"1231:10:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2409,"name":"initializerOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2399,"src":"1245:16:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1231:30:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a2073656e646572206973206e6f7420616c6c6f776564","id":2411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1263:50:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8","typeString":"literal_string \"ProxyFirewallConsumerBase: sender is not allowed\""},"value":"ProxyFirewallConsumerBase: sender is not allowed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8","typeString":"literal_string \"ProxyFirewallConsumerBase: sender is not allowed\""}],"id":2406,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1223:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1223:91:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2413,"nodeType":"ExpressionStatement","src":"1223:91:15"},{"id":2414,"nodeType":"PlaceholderStatement","src":"1324:1:15"}]},"id":2416,"name":"isAllowedInitializer","nameLocation":"1015:20:15","nodeType":"ModifierDefinition","parameters":{"id":2391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2390,"mutability":"mutable","name":"_admin_memory_slot","nameLocation":"1044:18:15","nodeType":"VariableDeclaration","scope":2416,"src":"1036:26:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2389,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1036:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1035:28:15"},"src":"1006:326:15","virtual":false,"visibility":"internal"},{"body":{"id":2449,"nodeType":"Block","src":"1837:301:15","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2423,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2419,"src":"1855:14:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1881:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2425,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1873:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2424,"name":"address","nodeType":"ElementaryTypeName","src":"1873:7:15","typeDescriptions":{}}},"id":2427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1873:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1855:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f2061646472657373","id":2429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1885:41:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa","typeString":"literal_string \"ProxyFirewallConsumerBase: zero address\""},"value":"ProxyFirewallConsumerBase: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa","typeString":"literal_string \"ProxyFirewallConsumerBase: zero address\""}],"id":2422,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1847:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1847:80:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2431,"nodeType":"ExpressionStatement","src":"1847:80:15"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2434,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2375,"src":"1963:27:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2433,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"1945:17:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1945:46:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2003:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1995:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2436,"name":"address","nodeType":"ElementaryTypeName","src":"1995:7:15","typeDescriptions":{}}},"id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1995:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1945:60:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e20616c726561647920736574","id":2441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2007:46:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47","typeString":"literal_string \"ProxyFirewallConsumerBase: admin already set\""},"value":"ProxyFirewallConsumerBase: admin already set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47","typeString":"literal_string \"ProxyFirewallConsumerBase: admin already set\""}],"id":2432,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1937:7:15","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1937:117:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2443,"nodeType":"ExpressionStatement","src":"1937:117:15"},{"expression":{"arguments":[{"id":2445,"name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"2083:31:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2446,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2419,"src":"2116:14:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2444,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"2065:17:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2065:66:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2448,"nodeType":"ExpressionStatement","src":"2065:66:15"}]},"documentation":{"id":2417,"nodeType":"StructuredDocumentation","src":"1338:427:15","text":" @dev Beacon Proxy Owner only function, allows the Beacon Proxy Owner to initialize the firewall admin in the following cases:\n - If the contract was originally deployed with a zero-address in the constructor (for various reasons)\n - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n @param _firewallAdmin address of the firewall admin"},"id":2450,"implemented":true,"kind":"function","modifiers":[],"name":"_initializeFirewallAdmin","nameLocation":"1779:24:15","nodeType":"FunctionDefinition","parameters":{"id":2420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2419,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"1812:14:15","nodeType":"VariableDeclaration","scope":2450,"src":"1804:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2418,"name":"address","nodeType":"ElementaryTypeName","src":"1804:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1803:24:15"},"returnParameters":{"id":2421,"nodeType":"ParameterList","parameters":[],"src":"1837:0:15"},"scope":2451,"src":"1770:368:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":2452,"src":"584:1556:15","usedErrors":[]}],"src":"115:2025:15"},"id":15},"contracts/proxies/TransparentProxyFirewallConsumer.sol":{"ast":{"absolutePath":"contracts/proxies/TransparentProxyFirewallConsumer.sol","exportedSymbols":{"ProxyFirewallConsumerBase":[2451],"TransparentProxyFirewallConsumer":[2476]},"id":2477,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2453,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:16"},{"absolutePath":"contracts/proxies/ProxyFirewallConsumerBase.sol","file":"./ProxyFirewallConsumerBase.sol","id":2455,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2477,"sourceUnit":2452,"src":"138:74:16","symbolAliases":[{"foreign":{"id":2454,"name":"ProxyFirewallConsumerBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"146:25:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2457,"name":"ProxyFirewallConsumerBase","nameLocations":["640:25:16"],"nodeType":"IdentifierPath","referencedDeclaration":2451,"src":"640:25:16"},"id":2458,"nodeType":"InheritanceSpecifier","src":"640:25:16"}],"canonicalName":"TransparentProxyFirewallConsumer","contractDependencies":[],"contractKind":"contract","documentation":{"id":2456,"nodeType":"StructuredDocumentation","src":"214:380:16","text":" @title TransparentProxyFirewallConsumer\n @notice For proxies that implement ERC1967 with an admin slot, this extension allows the Proxy Admin to initialize the firewall admin\n even when the contract was originally deployed with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed"},"fullyImplemented":true,"id":2476,"linearizedBaseContracts":[2476,2451,1691,850,2289],"name":"TransparentProxyFirewallConsumer","nameLocation":"604:32:16","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2461,"mutability":"constant","name":"PROXY_ADMIN_SLOT","nameLocation":"773:16:16","nodeType":"VariableDeclaration","scope":2476,"src":"748:110:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2459,"name":"bytes32","nodeType":"ElementaryTypeName","src":"748:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":2460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"792:66:16","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"private"},{"body":{"id":2474,"nodeType":"Block","src":"1388:57:16","statements":[{"expression":{"arguments":[{"id":2471,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2464,"src":"1423:14:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2470,"name":"_initializeFirewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2450,"src":"1398:24:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1398:40:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2473,"nodeType":"ExpressionStatement","src":"1398:40:16"}]},"documentation":{"id":2462,"nodeType":"StructuredDocumentation","src":"865:413:16","text":" @dev Proxy Admin only function, allows the Proxy Admin to initialize the firewall admin in the following cases:\n - If the contract was originally deployed with a zero-address in the constructor (for various reasons)\n - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n @param _firewallAdmin address of the firewall admin"},"functionSelector":"7eba9471","id":2475,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2467,"name":"PROXY_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"1361:16:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2468,"kind":"modifierInvocation","modifierName":{"id":2466,"name":"isAllowedInitializer","nameLocations":["1340:20:16"],"nodeType":"IdentifierPath","referencedDeclaration":2416,"src":"1340:20:16"},"nodeType":"ModifierInvocation","src":"1340:38:16"}],"name":"initializeFirewallAdmin","nameLocation":"1292:23:16","nodeType":"FunctionDefinition","parameters":{"id":2465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2464,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"1324:14:16","nodeType":"VariableDeclaration","scope":2475,"src":"1316:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2463,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1315:24:16"},"returnParameters":{"id":2469,"nodeType":"ParameterList","parameters":[],"src":"1388:0:16"},"scope":2476,"src":"1283:162:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2477,"src":"595:852:16","usedErrors":[]}],"src":"115:1332:16"},"id":16}},"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}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"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\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol":{"ERC165Checker":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122049d3ea421a167260c5d5bec7031c76d2d82878fcfd878e3482cbb1af75e0903d64736f6c63430008130033","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 0x49 0xD3 0xEA TIMESTAMP BYTE AND PUSH19 0x60C5D5BEC7031C76D2D82878FCFD878E3482CB 0xB1 0xAF PUSH22 0xE0903D64736F6C634300081300330000000000000000 ","sourceMap":"449:4621:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;449:4621:4;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122049d3ea421a167260c5d5bec7031c76d2d82878fcfd878e3482cbb1af75e0903d64736f6c63430008130033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x49 0xD3 0xEA TIMESTAMP BYTE AND PUSH19 0x60C5D5BEC7031C76D2D82878FCFD878E3482CB 0xB1 0xAF PUSH22 0xE0903D64736F6C634300081300330000000000000000 ","sourceMap":"449:4621:4:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library used to query support of an interface declared via {IERC165}. Note that these functions return the actual result of the query: they do not `revert` if an interface is not supported. It is up to the caller to decide what to do in these cases.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":\"ERC165Checker\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/FirewallConsumer.sol":{"FirewallConsumer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"targetPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setApprovedTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1451":{"entryPoint":null,"id":1451,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1670":{"entryPoint":null,"id":1670,"parameterSlots":2,"returnSlots":0},"checked_sub_t_uint256":{"entryPoint":129,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:241:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:176:17","statements":[{"nodeType":"YulAssignment","src":"73:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"85:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"88:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"81:3:17"},"nodeType":"YulFunctionCall","src":"81:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"73:4:17"}]},{"body":{"nodeType":"YulBlock","src":"122:111:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"143:1:17","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:3:17","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"155:10:17","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"146:3:17"},"nodeType":"YulFunctionCall","src":"146:20:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"136:6:17"},"nodeType":"YulFunctionCall","src":"136:31:17"},"nodeType":"YulExpressionStatement","src":"136:31:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"187:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"190:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"180:6:17"},"nodeType":"YulFunctionCall","src":"180:15:17"},"nodeType":"YulExpressionStatement","src":"180:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"215:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"218:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"208:6:17"},"nodeType":"YulFunctionCall","src":"208:15:17"},"nodeType":"YulExpressionStatement","src":"208:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"105:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"111:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"102:2:17"},"nodeType":"YulFunctionCall","src":"102:11:17"},"nodeType":"YulIf","src":"99:134:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"45:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"48:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"54:4:17","type":""}],"src":"14:225:17"}]},"contents":"{\n    { }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":17,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060003361004761004260017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610081565b839055565b61007a61007560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610081565b829055565b50506100a8565b818103818111156100a257634e487b7160e01b600052601160045260246000fd5b92915050565b610dea806100b76000396000f3fe6080604052600436106100655760003560e01c80638c36d02d116100435780638c36d02d146100b4578063b7f9a748146100d4578063f05c8582146100f457600080fd5b80631a8828f41461006a578063734b71981461007f5780637c65c38b1461009f575b600080fd5b61007d610078366004610bda565b610132565b005b34801561008b57600080fd5b5061007d61009a366004610c5b565b61033e565b3480156100ab57600080fd5b5061007d6104dc565b3480156100c057600080fd5b5061007d6100cf366004610c5b565b610606565b3480156100e057600080fd5b5061007d6100ef366004610c76565b610767565b34801561010057600080fd5b506101096108c5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061016060017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610cb2565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101b0835490565b1415905080610246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564207460448201527f617267657400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610270837f0c908cff000000000000000000000000000000000000000000000000000000006108fa565b61027957600080fd5b60008873ffffffffffffffffffffffffffffffffffffffff1688886040516102a2929190610cec565b6000604051808303816000865af19150503d80600081146102df576040519150601f19603f3d011682016040523d82523d6000602084013e6102e4565b606091505b50509050806102f257600080fd5b6103323087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109cb92505050565b50505050505050505050565b61037061036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610429576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b73ffffffffffffffffffffffffffffffffffffffff81166104a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f20616464726573730000604482015260640161023d565b6104d96104d460017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610cb2565b829055565b50565b61050a61036c60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e00604482015260640161023d565b6105d16105cc60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b61063461036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b61071b6104d460017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610cb2565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b61079561036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b600061087b60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610cb2565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b60006108f561036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156109b2575060208210155b80156109be5750600081115b9450505050505b92915050565b60606109f08383604051806060016040528060278152602001610d8e602791396109f7565b9392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610a219190610d20565b600060405180830381855af49150503d8060008114610a5c576040519150601f19603f3d011682016040523d82523d6000602084013e610a61565b606091505b5091509150610a7286838387610a7c565b9695505050505050565b60608315610b12578251600003610b0b5773ffffffffffffffffffffffffffffffffffffffff85163b610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161023d565b5081610b1c565b610b1c8383610b24565b949350505050565b815115610b345781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023d9190610d3c565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b8c57600080fd5b919050565b60008083601f840112610ba357600080fd5b50813567ffffffffffffffff811115610bbb57600080fd5b602083019150836020828501011115610bd357600080fd5b9250929050565b600080600080600060608688031215610bf257600080fd5b610bfb86610b68565b9450602086013567ffffffffffffffff80821115610c1857600080fd5b610c2489838a01610b91565b90965094506040880135915080821115610c3d57600080fd5b50610c4a88828901610b91565b969995985093965092949392505050565b600060208284031215610c6d57600080fd5b6109f082610b68565b60008060408385031215610c8957600080fd5b610c9283610b68565b915060208301358015158114610ca757600080fd5b809150509250929050565b818103818111156109c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610d17578181015183820152602001610cff565b50506000910152565b60008251610d32818460208701610cfc565b9190910192915050565b6020815260008251806020840152610d5b816040850160208701610cfc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207932fbd91c80c248268421317c9fbe7fe9f68a71fd5256e2277b222d5072700364736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 CALLER PUSH2 0x47 PUSH2 0x42 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x81 JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x7A PUSH2 0x75 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x81 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP POP PUSH2 0xA8 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xA2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDEA DUP1 PUSH2 0xB7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xB7F9A748 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0x9F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH2 0x78 CALLDATASIZE PUSH1 0x4 PUSH2 0xBDA JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x33E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0x4DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x606 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0xC76 JUMP JUMPDEST PUSH2 0x767 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x8C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x160 PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1B0 DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x246 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6172676574000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x270 DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x8FA JUMP JUMPDEST PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP3 SWAP2 SWAP1 PUSH2 0xCEC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2DF 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 0x2E4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x332 ADDRESS DUP8 DUP8 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 0x9CB SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x370 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x429 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 PUSH2 0x23D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x4D9 PUSH2 0x4D4 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xCB2 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x50A PUSH2 0x36C PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x59E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x5D1 PUSH2 0x5CC PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x634 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6ED 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 PUSH2 0x23D JUMP JUMPDEST PUSH2 0x71B PUSH2 0x4D4 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x795 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x84E 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 PUSH2 0x23D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87B PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F5 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0x9B2 JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x9BE JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9F0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD8E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x9F7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xA21 SWAP2 SWAP1 PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA5C 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 0xA61 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xA72 DUP7 DUP4 DUP4 DUP8 PUSH2 0xA7C JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xB12 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xB0B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xB0B 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 0x23D JUMP JUMPDEST POP DUP2 PUSH2 0xB1C JUMP JUMPDEST PUSH2 0xB1C DUP4 DUP4 PUSH2 0xB24 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xB34 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0xD3C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xBD3 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 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBFB DUP7 PUSH2 0xB68 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC24 DUP10 DUP4 DUP11 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC4A DUP9 DUP3 DUP10 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F0 DUP3 PUSH2 0xB68 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC92 DUP4 PUSH2 0xB68 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9C5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0xD17 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCFF JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xD32 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xCFC 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 0xD5B DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCFC 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 0x706673582212207932FB 0xD9 SHR DUP1 0xC2 BASEFEE 0x26 DUP5 0x21 BALANCE PUSH29 0x9FBE7FE9F68A71FD5256E2277B222D5072700364736F6C634300081300 CALLER ","sourceMap":"503:77:6:-:0;;;;;;;;;;;;-1:-1:-1;561:1:6;565:10;8271:51:7;1069:42;1110:1;1077:29;1069:42;:::i;:::-;8312:9;12264:23;;12162:141;8271:51;8332:62;1243:48;1290:1;1251:35;1243:48;:::i;:::-;8379:14;12264:23;;12162:141;8332:62;8184:217;;503:77:6;;14:225:17;81:9;;;102:11;;;99:134;;;155:10;150:3;146:20;143:1;136:31;190:4;187:1;180:15;218:4;215:1;208:15;99:134;14:225;;;;:::o;:::-;503:77:6;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_1680":{"entryPoint":null,"id":1680,"parameterSlots":1,"returnSlots":1},"@_getValueBySlot_1690":{"entryPoint":null,"id":1690,"parameterSlots":1,"returnSlots":1},"@_msgSender_840":{"entryPoint":null,"id":840,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":2852,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1670":{"entryPoint":null,"id":1670,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_1597":{"entryPoint":1244,"id":1597,"parameterSlots":0,"returnSlots":0},"@firewallAdmin_1529":{"entryPoint":2245,"id":1529,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":2507,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":2551,"id":744,"parameterSlots":3,"returnSlots":1},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_1495":{"entryPoint":306,"id":1495,"parameterSlots":5,"returnSlots":0},"@setApprovedTarget_1517":{"entryPoint":1895,"id":1517,"parameterSlots":2,"returnSlots":0},"@setFirewallAdmin_1571":{"entryPoint":830,"id":1571,"parameterSlots":1,"returnSlots":0},"@setFirewall_1547":{"entryPoint":1542,"id":1547,"parameterSlots":1,"returnSlots":0},"@supportsERC165InterfaceUnchecked_1043":{"entryPoint":2298,"id":1043,"parameterSlots":2,"returnSlots":1},"@verifyCallResultFromTarget_783":{"entryPoint":2684,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":2920,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":2961,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3163,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3190,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":3034,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3308,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3360,"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_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__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":3388,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__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},"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":3250,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3324,"id":null,"parameterSlots":3,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6554:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:147:17","statements":[{"nodeType":"YulAssignment","src":"73:29:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"95:6:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"82:12:17"},"nodeType":"YulFunctionCall","src":"82:20:17"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"73:5:17"}]},{"body":{"nodeType":"YulBlock","src":"188:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"197:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"200:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"190:6:17"},"nodeType":"YulFunctionCall","src":"190:12:17"},"nodeType":"YulExpressionStatement","src":"190:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"124:5:17"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"135:5:17"},{"kind":"number","nodeType":"YulLiteral","src":"142:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"131:3:17"},"nodeType":"YulFunctionCall","src":"131:54:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"121:2:17"},"nodeType":"YulFunctionCall","src":"121:65:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:17"},"nodeType":"YulFunctionCall","src":"114:73:17"},"nodeType":"YulIf","src":"111:93:17"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:17","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:17","type":""}],"src":"14:196:17"},{"body":{"nodeType":"YulBlock","src":"287:275:17","statements":[{"body":{"nodeType":"YulBlock","src":"336:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"345:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"348:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"338:6:17"},"nodeType":"YulFunctionCall","src":"338:12:17"},"nodeType":"YulExpressionStatement","src":"338:12:17"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"315:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"323:4:17","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"311:3:17"},"nodeType":"YulFunctionCall","src":"311:17:17"},{"name":"end","nodeType":"YulIdentifier","src":"330:3:17"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:17"},"nodeType":"YulFunctionCall","src":"307:27:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"300:6:17"},"nodeType":"YulFunctionCall","src":"300:35:17"},"nodeType":"YulIf","src":"297:55:17"},{"nodeType":"YulAssignment","src":"361:30:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"384:6:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"371:12:17"},"nodeType":"YulFunctionCall","src":"371:20:17"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"361:6:17"}]},{"body":{"nodeType":"YulBlock","src":"434:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"443:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"446:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"436:6:17"},"nodeType":"YulFunctionCall","src":"436:12:17"},"nodeType":"YulExpressionStatement","src":"436:12:17"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"406:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"414:18:17","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"403:2:17"},"nodeType":"YulFunctionCall","src":"403:30:17"},"nodeType":"YulIf","src":"400:50:17"},{"nodeType":"YulAssignment","src":"459:29:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"475:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"483:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"471:3:17"},"nodeType":"YulFunctionCall","src":"471:17:17"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"459:8:17"}]},{"body":{"nodeType":"YulBlock","src":"540:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"549:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"552:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"542:6:17"},"nodeType":"YulFunctionCall","src":"542:12:17"},"nodeType":"YulExpressionStatement","src":"542:12:17"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"511:6:17"},{"name":"length","nodeType":"YulIdentifier","src":"519:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"507:3:17"},"nodeType":"YulFunctionCall","src":"507:19:17"},{"kind":"number","nodeType":"YulLiteral","src":"528:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"503:3:17"},"nodeType":"YulFunctionCall","src":"503:30:17"},{"name":"end","nodeType":"YulIdentifier","src":"535:3:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"500:2:17"},"nodeType":"YulFunctionCall","src":"500:39:17"},"nodeType":"YulIf","src":"497:59:17"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"250:6:17","type":""},{"name":"end","nodeType":"YulTypedName","src":"258:3:17","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"266:8:17","type":""},{"name":"length","nodeType":"YulTypedName","src":"276:6:17","type":""}],"src":"215:347:17"},{"body":{"nodeType":"YulBlock","src":"709:649:17","statements":[{"body":{"nodeType":"YulBlock","src":"755:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"764:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"767:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"757:6:17"},"nodeType":"YulFunctionCall","src":"757:12:17"},"nodeType":"YulExpressionStatement","src":"757:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"730:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"739:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"726:3:17"},"nodeType":"YulFunctionCall","src":"726:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"751:2:17","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"722:3:17"},"nodeType":"YulFunctionCall","src":"722:32:17"},"nodeType":"YulIf","src":"719:52:17"},{"nodeType":"YulAssignment","src":"780:39:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"809:9:17"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"790:18:17"},"nodeType":"YulFunctionCall","src":"790:29:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"780:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"828:46:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"859:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"870:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"855:3:17"},"nodeType":"YulFunctionCall","src":"855:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"842:12:17"},"nodeType":"YulFunctionCall","src":"842:32:17"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"832:6:17","type":""}]},{"nodeType":"YulVariableDeclaration","src":"883:28:17","value":{"kind":"number","nodeType":"YulLiteral","src":"893:18:17","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"887:2:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"938:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"947:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"950:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"940:6:17"},"nodeType":"YulFunctionCall","src":"940:12:17"},"nodeType":"YulExpressionStatement","src":"940:12:17"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"926:6:17"},{"name":"_1","nodeType":"YulIdentifier","src":"934:2:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"923:2:17"},"nodeType":"YulFunctionCall","src":"923:14:17"},"nodeType":"YulIf","src":"920:34:17"},{"nodeType":"YulVariableDeclaration","src":"963:84:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1019:9:17"},{"name":"offset","nodeType":"YulIdentifier","src":"1030:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1015:3:17"},"nodeType":"YulFunctionCall","src":"1015:22:17"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1039:7:17"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"989:25:17"},"nodeType":"YulFunctionCall","src":"989:58:17"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"967:8:17","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"977:8:17","type":""}]},{"nodeType":"YulAssignment","src":"1056:18:17","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1066:8:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1056:6:17"}]},{"nodeType":"YulAssignment","src":"1083:18:17","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1093:8:17"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1083:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"1110:48:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1143:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1154:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1139:3:17"},"nodeType":"YulFunctionCall","src":"1139:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1126:12:17"},"nodeType":"YulFunctionCall","src":"1126:32:17"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1114:8:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"1187:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1196:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1199:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1189:6:17"},"nodeType":"YulFunctionCall","src":"1189:12:17"},"nodeType":"YulExpressionStatement","src":"1189:12:17"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1173:8:17"},{"name":"_1","nodeType":"YulIdentifier","src":"1183:2:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1170:2:17"},"nodeType":"YulFunctionCall","src":"1170:16:17"},"nodeType":"YulIf","src":"1167:36:17"},{"nodeType":"YulVariableDeclaration","src":"1212:86:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1268:9:17"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1279:8:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1264:3:17"},"nodeType":"YulFunctionCall","src":"1264:24:17"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1290:7:17"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1238:25:17"},"nodeType":"YulFunctionCall","src":"1238:60:17"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1216:8:17","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1226:8:17","type":""}]},{"nodeType":"YulAssignment","src":"1307:18:17","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1317:8:17"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1307:6:17"}]},{"nodeType":"YulAssignment","src":"1334:18:17","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1344:8:17"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1334:6:17"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"643:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"654:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"666:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"674:6:17","type":""},{"name":"value2","nodeType":"YulTypedName","src":"682:6:17","type":""},{"name":"value3","nodeType":"YulTypedName","src":"690:6:17","type":""},{"name":"value4","nodeType":"YulTypedName","src":"698:6:17","type":""}],"src":"567:791:17"},{"body":{"nodeType":"YulBlock","src":"1433:116:17","statements":[{"body":{"nodeType":"YulBlock","src":"1479:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1488:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1491:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1481:6:17"},"nodeType":"YulFunctionCall","src":"1481:12:17"},"nodeType":"YulExpressionStatement","src":"1481:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1454:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"1463:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1450:3:17"},"nodeType":"YulFunctionCall","src":"1450:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"1475:2:17","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1446:3:17"},"nodeType":"YulFunctionCall","src":"1446:32:17"},"nodeType":"YulIf","src":"1443:52:17"},{"nodeType":"YulAssignment","src":"1504:39:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1533:9:17"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1514:18:17"},"nodeType":"YulFunctionCall","src":"1514:29:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1504:6:17"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1399:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1410:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1422:6:17","type":""}],"src":"1363:186:17"},{"body":{"nodeType":"YulBlock","src":"1638:263:17","statements":[{"body":{"nodeType":"YulBlock","src":"1684:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1693:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1696:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1686:6:17"},"nodeType":"YulFunctionCall","src":"1686:12:17"},"nodeType":"YulExpressionStatement","src":"1686:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1659:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"1668:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1655:3:17"},"nodeType":"YulFunctionCall","src":"1655:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"1680:2:17","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1651:3:17"},"nodeType":"YulFunctionCall","src":"1651:32:17"},"nodeType":"YulIf","src":"1648:52:17"},{"nodeType":"YulAssignment","src":"1709:39:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1738:9:17"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1719:18:17"},"nodeType":"YulFunctionCall","src":"1719:29:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1709:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"1757:45:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1787:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1798:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1783:3:17"},"nodeType":"YulFunctionCall","src":"1783:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1770:12:17"},"nodeType":"YulFunctionCall","src":"1770:32:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1761:5:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"1855:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1864:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1867:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1857:6:17"},"nodeType":"YulFunctionCall","src":"1857:12:17"},"nodeType":"YulExpressionStatement","src":"1857:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1824:5:17"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1845:5:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1838:6:17"},"nodeType":"YulFunctionCall","src":"1838:13:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1831:6:17"},"nodeType":"YulFunctionCall","src":"1831:21:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1821:2:17"},"nodeType":"YulFunctionCall","src":"1821:32:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1814:6:17"},"nodeType":"YulFunctionCall","src":"1814:40:17"},"nodeType":"YulIf","src":"1811:60:17"},{"nodeType":"YulAssignment","src":"1880:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"1890:5:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1880:6:17"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1596:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1607:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1619:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1627:6:17","type":""}],"src":"1554:347:17"},{"body":{"nodeType":"YulBlock","src":"2007:125:17","statements":[{"nodeType":"YulAssignment","src":"2017:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2029:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2040:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2025:3:17"},"nodeType":"YulFunctionCall","src":"2025:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2017:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2059:9:17"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2074:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"2082:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2070:3:17"},"nodeType":"YulFunctionCall","src":"2070:55:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2052:6:17"},"nodeType":"YulFunctionCall","src":"2052:74:17"},"nodeType":"YulExpressionStatement","src":"2052:74:17"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1976:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1987:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1998:4:17","type":""}],"src":"1906:226:17"},{"body":{"nodeType":"YulBlock","src":"2186:233:17","statements":[{"nodeType":"YulAssignment","src":"2196:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2208:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"2211:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2204:3:17"},"nodeType":"YulFunctionCall","src":"2204:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2196:4:17"}]},{"body":{"nodeType":"YulBlock","src":"2245:168:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2266:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2269:77:17","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2259:6:17"},"nodeType":"YulFunctionCall","src":"2259:88:17"},"nodeType":"YulExpressionStatement","src":"2259:88:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2370:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2360:6:17"},"nodeType":"YulFunctionCall","src":"2360:15:17"},"nodeType":"YulExpressionStatement","src":"2360:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2395:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2398:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2388:6:17"},"nodeType":"YulFunctionCall","src":"2388:15:17"},"nodeType":"YulExpressionStatement","src":"2388:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2228:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"2234:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2225:2:17"},"nodeType":"YulFunctionCall","src":"2225:11:17"},"nodeType":"YulIf","src":"2222:191:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2168:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"2171:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2177:4:17","type":""}],"src":"2137:282:17"},{"body":{"nodeType":"YulBlock","src":"2553:168:17","statements":[{"nodeType":"YulAssignment","src":"2563:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2575:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2586:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2571:3:17"},"nodeType":"YulFunctionCall","src":"2571:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2563:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2605:9:17"},{"name":"value0","nodeType":"YulIdentifier","src":"2616:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2598:6:17"},"nodeType":"YulFunctionCall","src":"2598:25:17"},"nodeType":"YulExpressionStatement","src":"2598:25:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2643:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2654:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2639:3:17"},"nodeType":"YulFunctionCall","src":"2639:18:17"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2663:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"2671:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2659:3:17"},"nodeType":"YulFunctionCall","src":"2659:55:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2632:6:17"},"nodeType":"YulFunctionCall","src":"2632:83:17"},"nodeType":"YulExpressionStatement","src":"2632:83:17"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2514:9:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2525:6:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2533:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2544:4:17","type":""}],"src":"2424:297:17"},{"body":{"nodeType":"YulBlock","src":"2900:227:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2917:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2928:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2910:6:17"},"nodeType":"YulFunctionCall","src":"2910:21:17"},"nodeType":"YulExpressionStatement","src":"2910:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2951:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2962:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2947:3:17"},"nodeType":"YulFunctionCall","src":"2947:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"2967:2:17","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2940:6:17"},"nodeType":"YulFunctionCall","src":"2940:30:17"},"nodeType":"YulExpressionStatement","src":"2940:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2990:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3001:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2986:3:17"},"nodeType":"YulFunctionCall","src":"2986:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642074","kind":"string","nodeType":"YulLiteral","src":"3006:34:17","type":"","value":"FirewallConsumer: Not approved t"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2979:6:17"},"nodeType":"YulFunctionCall","src":"2979:62:17"},"nodeType":"YulExpressionStatement","src":"2979:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3061:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3072:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3057:3:17"},"nodeType":"YulFunctionCall","src":"3057:18:17"},{"hexValue":"6172676574","kind":"string","nodeType":"YulLiteral","src":"3077:7:17","type":"","value":"arget"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3050:6:17"},"nodeType":"YulFunctionCall","src":"3050:35:17"},"nodeType":"YulExpressionStatement","src":"3050:35:17"},{"nodeType":"YulAssignment","src":"3094:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3106:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3117:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3102:3:17"},"nodeType":"YulFunctionCall","src":"3102:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3094:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2877:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2891:4:17","type":""}],"src":"2726:401:17"},{"body":{"nodeType":"YulBlock","src":"3279:124:17","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:17"},{"name":"value0","nodeType":"YulIdentifier","src":"3307:6:17"},{"name":"value1","nodeType":"YulIdentifier","src":"3315:6:17"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3289:12:17"},"nodeType":"YulFunctionCall","src":"3289:33:17"},"nodeType":"YulExpressionStatement","src":"3289:33:17"},{"nodeType":"YulVariableDeclaration","src":"3331:26:17","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3345:3:17"},{"name":"value1","nodeType":"YulIdentifier","src":"3350:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3341:3:17"},"nodeType":"YulFunctionCall","src":"3341:16:17"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3335:2:17","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3373:2:17"},{"kind":"number","nodeType":"YulLiteral","src":"3377:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3366:6:17"},"nodeType":"YulFunctionCall","src":"3366:13:17"},"nodeType":"YulExpressionStatement","src":"3366:13:17"},{"nodeType":"YulAssignment","src":"3388:9:17","value":{"name":"_1","nodeType":"YulIdentifier","src":"3395:2:17"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3388:3:17"}]}]},"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":"3247:3:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3252:6:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3260:6:17","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3271:3:17","type":""}],"src":"3132:271:17"},{"body":{"nodeType":"YulBlock","src":"3582:228:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3599:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3610:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3592:6:17"},"nodeType":"YulFunctionCall","src":"3592:21:17"},"nodeType":"YulExpressionStatement","src":"3592:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3633:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3644:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3629:3:17"},"nodeType":"YulFunctionCall","src":"3629:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"3649:2:17","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:17"},"nodeType":"YulFunctionCall","src":"3622:30:17"},"nodeType":"YulExpressionStatement","src":"3622:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3672:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3683:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3668:3:17"},"nodeType":"YulFunctionCall","src":"3668:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f206d657461207472616e7361","kind":"string","nodeType":"YulLiteral","src":"3688:34:17","type":"","value":"FirewallConsumer: No meta transa"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3661:6:17"},"nodeType":"YulFunctionCall","src":"3661:62:17"},"nodeType":"YulExpressionStatement","src":"3661:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3743:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3754:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3739:3:17"},"nodeType":"YulFunctionCall","src":"3739:18:17"},{"hexValue":"6374696f6e73","kind":"string","nodeType":"YulLiteral","src":"3759:8:17","type":"","value":"ctions"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3732:6:17"},"nodeType":"YulFunctionCall","src":"3732:36:17"},"nodeType":"YulExpressionStatement","src":"3732:36:17"},{"nodeType":"YulAssignment","src":"3777:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3789:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3800:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3785:3:17"},"nodeType":"YulFunctionCall","src":"3785:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3777:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3559:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3573:4:17","type":""}],"src":"3408:402:17"},{"body":{"nodeType":"YulBlock","src":"3989:226:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4006:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4017:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3999:6:17"},"nodeType":"YulFunctionCall","src":"3999:21:17"},"nodeType":"YulExpressionStatement","src":"3999:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:17"},"nodeType":"YulFunctionCall","src":"4036:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4056:2:17","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4029:6:17"},"nodeType":"YulFunctionCall","src":"4029:30:17"},"nodeType":"YulExpressionStatement","src":"4029:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4079:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4090:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4075:3:17"},"nodeType":"YulFunctionCall","src":"4075:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"4095:34:17","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4068:6:17"},"nodeType":"YulFunctionCall","src":"4068:62:17"},"nodeType":"YulExpressionStatement","src":"4068:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4150:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4161:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4146:3:17"},"nodeType":"YulFunctionCall","src":"4146:18:17"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"4166:6:17","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4139:6:17"},"nodeType":"YulFunctionCall","src":"4139:34:17"},"nodeType":"YulExpressionStatement","src":"4139:34:17"},{"nodeType":"YulAssignment","src":"4182:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4194:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4205:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4190:3:17"},"nodeType":"YulFunctionCall","src":"4190:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4182:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3966:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3980:4:17","type":""}],"src":"3815:400:17"},{"body":{"nodeType":"YulBlock","src":"4394:180:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4411:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4422:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4404:6:17"},"nodeType":"YulFunctionCall","src":"4404:21:17"},"nodeType":"YulExpressionStatement","src":"4404:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4445:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4456:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4441:3:17"},"nodeType":"YulFunctionCall","src":"4441:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4461:2:17","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4434:6:17"},"nodeType":"YulFunctionCall","src":"4434:30:17"},"nodeType":"YulExpressionStatement","src":"4434:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4484:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4495:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4480:3:17"},"nodeType":"YulFunctionCall","src":"4480:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"4500:32:17","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4473:6:17"},"nodeType":"YulFunctionCall","src":"4473:60:17"},"nodeType":"YulExpressionStatement","src":"4473:60:17"},{"nodeType":"YulAssignment","src":"4542:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4554:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4565:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4550:3:17"},"nodeType":"YulFunctionCall","src":"4550:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4542:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4371:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4385:4:17","type":""}],"src":"4220:354:17"},{"body":{"nodeType":"YulBlock","src":"4753:181:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4770:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4781:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4763:6:17"},"nodeType":"YulFunctionCall","src":"4763:21:17"},"nodeType":"YulExpressionStatement","src":"4763:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4804:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4815:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4800:3:17"},"nodeType":"YulFunctionCall","src":"4800:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4820:2:17","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4793:6:17"},"nodeType":"YulFunctionCall","src":"4793:30:17"},"nodeType":"YulExpressionStatement","src":"4793:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4843:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4854:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4839:3:17"},"nodeType":"YulFunctionCall","src":"4839:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"4859:33:17","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4832:6:17"},"nodeType":"YulFunctionCall","src":"4832:61:17"},"nodeType":"YulExpressionStatement","src":"4832:61:17"},{"nodeType":"YulAssignment","src":"4902:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4914:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4925:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4910:3:17"},"nodeType":"YulFunctionCall","src":"4910:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4902:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4730:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4744:4:17","type":""}],"src":"4579:355:17"},{"body":{"nodeType":"YulBlock","src":"5038:149:17","statements":[{"nodeType":"YulAssignment","src":"5048:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5060:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5071:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5056:3:17"},"nodeType":"YulFunctionCall","src":"5056:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5048:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5090:9:17"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5105:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"5113:66:17","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5101:3:17"},"nodeType":"YulFunctionCall","src":"5101:79:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5083:6:17"},"nodeType":"YulFunctionCall","src":"5083:98:17"},"nodeType":"YulExpressionStatement","src":"5083:98:17"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5007:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5018:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5029:4:17","type":""}],"src":"4939:248:17"},{"body":{"nodeType":"YulBlock","src":"5258:184:17","statements":[{"nodeType":"YulVariableDeclaration","src":"5268:10:17","value":{"kind":"number","nodeType":"YulLiteral","src":"5277:1:17","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5272:1:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"5337:63:17","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5362:3:17"},{"name":"i","nodeType":"YulIdentifier","src":"5367:1:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5358:3:17"},"nodeType":"YulFunctionCall","src":"5358:11:17"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5381:3:17"},{"name":"i","nodeType":"YulIdentifier","src":"5386:1:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5377:3:17"},"nodeType":"YulFunctionCall","src":"5377:11:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5371:5:17"},"nodeType":"YulFunctionCall","src":"5371:18:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5351:6:17"},"nodeType":"YulFunctionCall","src":"5351:39:17"},"nodeType":"YulExpressionStatement","src":"5351:39:17"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5298:1:17"},{"name":"length","nodeType":"YulIdentifier","src":"5301:6:17"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5295:2:17"},"nodeType":"YulFunctionCall","src":"5295:13:17"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5309:19:17","statements":[{"nodeType":"YulAssignment","src":"5311:15:17","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5320:1:17"},{"kind":"number","nodeType":"YulLiteral","src":"5323:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5316:3:17"},"nodeType":"YulFunctionCall","src":"5316:10:17"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5311:1:17"}]}]},"pre":{"nodeType":"YulBlock","src":"5291:3:17","statements":[]},"src":"5287:113:17"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5420:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"5425:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5416:3:17"},"nodeType":"YulFunctionCall","src":"5416:16:17"},{"kind":"number","nodeType":"YulLiteral","src":"5434:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5409:6:17"},"nodeType":"YulFunctionCall","src":"5409:27:17"},"nodeType":"YulExpressionStatement","src":"5409:27:17"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"5236:3:17","type":""},{"name":"dst","nodeType":"YulTypedName","src":"5241:3:17","type":""},{"name":"length","nodeType":"YulTypedName","src":"5246:6:17","type":""}],"src":"5192:250:17"},{"body":{"nodeType":"YulBlock","src":"5584:150:17","statements":[{"nodeType":"YulVariableDeclaration","src":"5594:27:17","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5614:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5608:5:17"},"nodeType":"YulFunctionCall","src":"5608:13:17"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5598:6:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5669:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"5677:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5665:3:17"},"nodeType":"YulFunctionCall","src":"5665:17:17"},{"name":"pos","nodeType":"YulIdentifier","src":"5684:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"5689:6:17"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"5630:34:17"},"nodeType":"YulFunctionCall","src":"5630:66:17"},"nodeType":"YulExpressionStatement","src":"5630:66:17"},{"nodeType":"YulAssignment","src":"5705:23:17","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5716:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"5721:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5712:3:17"},"nodeType":"YulFunctionCall","src":"5712:16:17"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5705:3:17"}]}]},"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":"5560:3:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5565:6:17","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5576:3:17","type":""}],"src":"5447:287:17"},{"body":{"nodeType":"YulBlock","src":"5913:179:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5930:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5941:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5923:6:17"},"nodeType":"YulFunctionCall","src":"5923:21:17"},"nodeType":"YulExpressionStatement","src":"5923:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5964:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5975:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5960:3:17"},"nodeType":"YulFunctionCall","src":"5960:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"5980:2:17","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5953:6:17"},"nodeType":"YulFunctionCall","src":"5953:30:17"},"nodeType":"YulExpressionStatement","src":"5953:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6003:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6014:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5999:3:17"},"nodeType":"YulFunctionCall","src":"5999:18:17"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6019:31:17","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5992:6:17"},"nodeType":"YulFunctionCall","src":"5992:59:17"},"nodeType":"YulExpressionStatement","src":"5992:59:17"},{"nodeType":"YulAssignment","src":"6060:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6072:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6083:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6068:3:17"},"nodeType":"YulFunctionCall","src":"6068:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6060:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5890:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5904:4:17","type":""}],"src":"5739:353:17"},{"body":{"nodeType":"YulBlock","src":"6218:334:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6235:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6246:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6228:6:17"},"nodeType":"YulFunctionCall","src":"6228:21:17"},"nodeType":"YulExpressionStatement","src":"6228:21:17"},{"nodeType":"YulVariableDeclaration","src":"6258:27:17","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6278:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6272:5:17"},"nodeType":"YulFunctionCall","src":"6272:13:17"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6262:6:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6305:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6316:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6301:3:17"},"nodeType":"YulFunctionCall","src":"6301:18:17"},{"name":"length","nodeType":"YulIdentifier","src":"6321:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6294:6:17"},"nodeType":"YulFunctionCall","src":"6294:34:17"},"nodeType":"YulExpressionStatement","src":"6294:34:17"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6376:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"6384:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6372:3:17"},"nodeType":"YulFunctionCall","src":"6372:15:17"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6393:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6404:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6389:3:17"},"nodeType":"YulFunctionCall","src":"6389:18:17"},{"name":"length","nodeType":"YulIdentifier","src":"6409:6:17"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"6337:34:17"},"nodeType":"YulFunctionCall","src":"6337:79:17"},"nodeType":"YulExpressionStatement","src":"6337:79:17"},{"nodeType":"YulAssignment","src":"6425:121:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6441:9:17"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6460:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"6468:2:17","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6456:3:17"},"nodeType":"YulFunctionCall","src":"6456:15:17"},{"kind":"number","nodeType":"YulLiteral","src":"6473:66:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6452:3:17"},"nodeType":"YulFunctionCall","src":"6452:88:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6437:3:17"},"nodeType":"YulFunctionCall","src":"6437:104:17"},{"kind":"number","nodeType":"YulLiteral","src":"6543:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6433:3:17"},"nodeType":"YulFunctionCall","src":"6433:113:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6425:4:17"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6187:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6198:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6209:4:17","type":""}],"src":"6097:455:17"}]},"contents":"{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\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_addresst_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 := abi_decode_address(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_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function 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 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_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not approved t\")\n        mstore(add(headStart, 96), \"arget\")\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 abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"FirewallConsumer: No meta transa\")\n        mstore(add(headStart, 96), \"ctions\")\n        tail := add(headStart, 128)\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 abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\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":17,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100655760003560e01c80638c36d02d116100435780638c36d02d146100b4578063b7f9a748146100d4578063f05c8582146100f457600080fd5b80631a8828f41461006a578063734b71981461007f5780637c65c38b1461009f575b600080fd5b61007d610078366004610bda565b610132565b005b34801561008b57600080fd5b5061007d61009a366004610c5b565b61033e565b3480156100ab57600080fd5b5061007d6104dc565b3480156100c057600080fd5b5061007d6100cf366004610c5b565b610606565b3480156100e057600080fd5b5061007d6100ef366004610c76565b610767565b34801561010057600080fd5b506101096108c5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061016060017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610cb2565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101b0835490565b1415905080610246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564207460448201527f617267657400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610270837f0c908cff000000000000000000000000000000000000000000000000000000006108fa565b61027957600080fd5b60008873ffffffffffffffffffffffffffffffffffffffff1688886040516102a2929190610cec565b6000604051808303816000865af19150503d80600081146102df576040519150601f19603f3d011682016040523d82523d6000602084013e6102e4565b606091505b50509050806102f257600080fd5b6103323087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109cb92505050565b50505050505050505050565b61037061036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610429576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b73ffffffffffffffffffffffffffffffffffffffff81166104a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f20616464726573730000604482015260640161023d565b6104d96104d460017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610cb2565b829055565b50565b61050a61036c60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e00604482015260640161023d565b6105d16105cc60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b61063461036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b61071b6104d460017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610cb2565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b61079561036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b600061087b60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610cb2565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b60006108f561036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156109b2575060208210155b80156109be5750600081115b9450505050505b92915050565b60606109f08383604051806060016040528060278152602001610d8e602791396109f7565b9392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610a219190610d20565b600060405180830381855af49150503d8060008114610a5c576040519150601f19603f3d011682016040523d82523d6000602084013e610a61565b606091505b5091509150610a7286838387610a7c565b9695505050505050565b60608315610b12578251600003610b0b5773ffffffffffffffffffffffffffffffffffffffff85163b610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161023d565b5081610b1c565b610b1c8383610b24565b949350505050565b815115610b345781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023d9190610d3c565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b8c57600080fd5b919050565b60008083601f840112610ba357600080fd5b50813567ffffffffffffffff811115610bbb57600080fd5b602083019150836020828501011115610bd357600080fd5b9250929050565b600080600080600060608688031215610bf257600080fd5b610bfb86610b68565b9450602086013567ffffffffffffffff80821115610c1857600080fd5b610c2489838a01610b91565b90965094506040880135915080821115610c3d57600080fd5b50610c4a88828901610b91565b969995985093965092949392505050565b600060208284031215610c6d57600080fd5b6109f082610b68565b60008060408385031215610c8957600080fd5b610c9283610b68565b915060208301358015158114610ca757600080fd5b809150509250929050565b818103818111156109c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610d17578181015183820152602001610cff565b50506000910152565b60008251610d32818460208701610cfc565b9190910192915050565b6020815260008251806020840152610d5b816040850160208701610cfc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207932fbd91c80c248268421317c9fbe7fe9f68a71fd5256e2277b222d5072700364736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xB7F9A748 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0x9F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH2 0x78 CALLDATASIZE PUSH1 0x4 PUSH2 0xBDA JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x33E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0x4DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x606 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0xC76 JUMP JUMPDEST PUSH2 0x767 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x8C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x160 PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1B0 DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x246 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6172676574000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x270 DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x8FA JUMP JUMPDEST PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP3 SWAP2 SWAP1 PUSH2 0xCEC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2DF 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 0x2E4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x332 ADDRESS DUP8 DUP8 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 0x9CB SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x370 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x429 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 PUSH2 0x23D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x4D9 PUSH2 0x4D4 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xCB2 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x50A PUSH2 0x36C PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x59E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x5D1 PUSH2 0x5CC PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x634 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6ED 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 PUSH2 0x23D JUMP JUMPDEST PUSH2 0x71B PUSH2 0x4D4 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x795 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x84E 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 PUSH2 0x23D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87B PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F5 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0x9B2 JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x9BE JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9F0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD8E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x9F7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xA21 SWAP2 SWAP1 PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA5C 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 0xA61 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xA72 DUP7 DUP4 DUP4 DUP8 PUSH2 0xA7C JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xB12 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xB0B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xB0B 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 0x23D JUMP JUMPDEST POP DUP2 PUSH2 0xB1C JUMP JUMPDEST PUSH2 0xB1C DUP4 DUP4 PUSH2 0xB24 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xB34 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0xD3C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xBD3 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 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBFB DUP7 PUSH2 0xB68 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC24 DUP10 DUP4 DUP11 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC4A DUP9 DUP3 DUP10 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F0 DUP3 PUSH2 0xB68 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC92 DUP4 PUSH2 0xB68 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9C5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0xD17 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCFF JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xD32 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xCFC 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 0xD5B DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCFC 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 0x706673582212207932FB 0xD9 SHR DUP1 0xC2 BASEFEE 0x26 DUP5 0x21 BALANCE PUSH29 0x9FBE7FE9F68A71FD5256E2277B222D5072700364736F6C634300081300 CALLER ","sourceMap":"503:77:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8869:401:7;;;;;;:::i;:::-;;:::i;:::-;;10543:241;;;;;;;;;;-1:-1:-1;10543:241:7;;;;;:::i;:::-;;:::i;10853:280::-;;;;;;;;;;;;;:::i;10201:176::-;;;;;;;;;;-1:-1:-1;10201:176:7;;;;;:::i;:::-;;:::i;9595:239::-;;;;;;;;;;-1:-1:-1;9595:239:7;;;;;:::i;:::-;;:::i;9905:136::-;;;;;;;;;;;;;:::i;:::-;;;2082:42:17;2070:55;;;2052:74;;2040:2;2025:18;9905:136:7;;;;;;;8869:401;9028:6;7439:13;1791:50;1840:1;1799:37;1791:50;:::i;:::-;7465:49;;;;;;2598:25:17;;;;2671:42;2659:55;;2639:18;;;2632:83;2571:18;;7465:49:7;;;;;;;;;;;;7455:60;;;;;;7439:76;;7525:21;7583:1;7575:10;;7549:22;7565:5;12928:12;;12806:150;7549:22;:36;;7525:60;;7603:16;7595:66;;;;;;;2928:2:17;7595:66:7;;;2910:21:17;2967:2;2947:18;;;2940:30;3006:34;2986:18;;;2979:62;3077:7;3057:18;;;3050:35;3102:19;;7595:66:7;;;;;;;;;7679:99;7726:6;1582:18;7679:46;:99::i;:::-;7671:108;;;;;;9047:12:::1;9065:6;:11;;9077:13;;9065:26;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9046:45;;;9109:7;9101:16;;;::::0;::::1;;9214:49;9251:4;9258;;9214:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;9214:28:7::1;::::0;-1:-1:-1;;;9214:49:7:i:1;:::-;;9036:234;7159:638:::0;;8869:401;;;;;;:::o;10543:241::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;:::-;12928:12;;12806:150;7951:46;7937:60;;:10;:60;;;7929:109;;;;;;;4017:2:17;7929:109:7;;;3999:21:17;4056:2;4036:18;;;4029:30;4095:34;4075:18;;;4068:62;4166:6;4146:18;;;4139:34;4190:19;;7929:109:7;3815:400:17;7929:109:7;10638:28:::1;::::0;::::1;10630:71;;;::::0;::::1;::::0;;4422:2:17;10630:71:7::1;::::0;::::1;4404:21:17::0;4461:2;4441:18;;;4434:30;4500:32;4480:18;;;4473:60;4550:18;;10630:71:7::1;4220:354:17::0;10630:71:7::1;10711:66;1453:52;1504:1;1461:39;1453:52;:::i;:::-;10762:14:::0;12264:23;;12162:141;10711:66:::1;10543:241:::0;:::o;10853:280::-;10925:50;1453:52;1504:1;1461:39;1453:52;:::i;10925:50::-;10911:64;;:10;:64;;;10903:108;;;;;;;4781:2:17;10903:108:7;;;4763:21:17;4820:2;4800:18;;;4793:30;4859:33;4839:18;;;4832:61;4910:18;;10903:108:7;4579:355:17;10903:108:7;11021:58;1243:48;1290:1;1251:35;1243:48;:::i;:::-;11068:10;12264:23;;12162:141;11021:58;11094:32;;11115:10;2052:74:17;;11094:32:7;;2040:2:17;2025:18;11094:32:7;;;;;;;10853:280::o;10201:176::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;7951:46::-;7937:60;;:10;:60;;;7929:109;;;;;;;4017:2:17;7929:109:7;;;3999:21:17;4056:2;4036:18;;;4029:30;4095:34;4075:18;;;4068:62;4166:6;4146:18;;;4139:34;4190:19;;7929:109:7;3815:400:17;7929:109:7;10278:51:::1;1069:42;1110:1;1077:29;1069:42;:::i;10278:51::-;10344:26;::::0;2082:42:17;2070:55;;2052:74;;10344:26:7::1;::::0;2040:2:17;2025:18;10344:26:7::1;;;;;;;10201:176:::0;:::o;9595:239::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;7951:46::-;7937:60;;:10;:60;;;7929:109;;;;;;;4017:2:17;7929:109:7;;;3999:21:17;4056:2;4036:18;;;4029:30;4095:34;4075:18;;;4068:62;4166:6;4146:18;;;4139:34;4190:19;;7929:109:7;3815:400:17;7929:109:7;9688:13:::1;1791:50;1840:1;1799:37;1791:50;:::i;:::-;9714:49;::::0;;::::1;::::0;::::1;2598:25:17::0;;;;2671:42;2659:55;;2639:18;;;2632:83;2571:18;;9714:49:7::1;;;;;;;;;;;;9704:60;;;;;;9688:76;;9811:6;9804:5;9797:21;9783:45;9595:239:::0;;:::o;9905:136::-;9962:7;9988:46;1243:48;1290:1;1251:35;1243:48;:::i;9988:46::-;9981:53;;9905:136;:::o;4421:647:4:-;4592:71;;;5113:66:17;5101:79;;4592:71:4;;;;5083:98:17;;;;4592:71:4;;;;;;;;;;5056:18:17;;;;4592:71:4;;;;;;;;;;;4615:34;4592:71;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;;:::o;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:2: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;;;;;;;5941:2:17;8113:60:2;;;5923:21:17;5980:2;5960:18;;;5953:30;6019:31;5999:18;;;5992:59;6068:18;;8113:60:2;5739:353:17;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:196:17:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:347::-;266:8;276:6;330:3;323:4;315:6;311:17;307:27;297:55;;348:1;345;338:12;297:55;-1:-1:-1;371:20:17;;414:18;403:30;;400:50;;;446:1;443;436:12;400:50;483:4;475:6;471:17;459:29;;535:3;528:4;519:6;511;507:19;503:30;500:39;497:59;;;552:1;549;542:12;497:59;215:347;;;;;:::o;567:791::-;666:6;674;682;690;698;751:2;739:9;730:7;726:23;722:32;719:52;;;767:1;764;757:12;719:52;790:29;809:9;790:29;:::i;:::-;780:39;;870:2;859:9;855:18;842:32;893:18;934:2;926:6;923:14;920:34;;;950:1;947;940:12;920:34;989:58;1039:7;1030:6;1019:9;1015:22;989:58;:::i;:::-;1066:8;;-1:-1:-1;963:84:17;-1:-1:-1;1154:2:17;1139:18;;1126:32;;-1:-1:-1;1170:16:17;;;1167:36;;;1199:1;1196;1189:12;1167:36;;1238:60;1290:7;1279:8;1268:9;1264:24;1238:60;:::i;:::-;567:791;;;;-1:-1:-1;567:791:17;;-1:-1:-1;1317:8:17;;1212:86;567:791;-1:-1:-1;;;567:791:17:o;1363:186::-;1422:6;1475:2;1463:9;1454:7;1450:23;1446:32;1443:52;;;1491:1;1488;1481:12;1443:52;1514:29;1533:9;1514:29;:::i;1554:347::-;1619:6;1627;1680:2;1668:9;1659:7;1655:23;1651:32;1648:52;;;1696:1;1693;1686:12;1648:52;1719:29;1738:9;1719:29;:::i;:::-;1709:39;;1798:2;1787:9;1783:18;1770:32;1845:5;1838:13;1831:21;1824:5;1821:32;1811:60;;1867:1;1864;1857:12;1811:60;1890:5;1880:15;;;1554:347;;;;;:::o;2137:282::-;2204:9;;;2225:11;;;2222:191;;;2269:77;2266:1;2259:88;2370:4;2367:1;2360:15;2398:4;2395:1;2388:15;3132:271;3315:6;3307;3302:3;3289:33;3271:3;3341:16;;3366:13;;;3341:16;3132:271;-1:-1:-1;3132:271:17:o;5192:250::-;5277:1;5287:113;5301:6;5298:1;5295:13;5287:113;;;5377:11;;;5371:18;5358:11;;;5351:39;5323:2;5316:10;5287:113;;;-1:-1:-1;;5434:1:17;5416:16;;5409:27;5192:250::o;5447:287::-;5576:3;5614:6;5608:13;5630:66;5689:6;5684:3;5677:4;5669:6;5665:17;5630:66;:::i;:::-;5712:16;;;;;5447:287;-1:-1:-1;;5447:287:17:o;6097:455::-;6246:2;6235:9;6228:21;6209:4;6278:6;6272:13;6321:6;6316:2;6305:9;6301:18;6294:34;6337:79;6409:6;6404:2;6393:9;6389:18;6384:2;6376:6;6372:15;6337:79;:::i;:::-;6468:2;6456:15;6473:66;6452:88;6437:104;;;;6543:2;6433:113;;6097:455;-1:-1:-1;;6097:455:17:o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","firewallAdmin()":"f05c8582","safeFunctionCall(address,bytes,bytes)":"1a8828f4","setApprovedTarget(address,bool)":"b7f9a748","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"targetPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setApprovedTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"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 must initializes with the firewall contract disabled, and the deployer as the firewall admin.\",\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"safeFunctionCall(address,bytes,bytes)\":{\"details\":\"Allows calling an approved external target 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.\",\"params\":{\"data\":\"data to be executed after the target call\",\"target\":\"address of the target\",\"targetPayload\":\"payload to be sent to the target\"}},\"setApprovedTarget(address,bool)\":{\"details\":\"Allows firewall admin to set approved targets. IMPORTANT: Only set approved target if you know what you're doing. Anyone can cause this contract to send any data to an approved target.\",\"params\":{\"status\":\"status of the target\",\"target\":\"address of the target\"}},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}}},\"title\":\"Firewall Consumer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FirewallConsumer.sol\":\"FirewallConsumer\"},\"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\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/FirewallConsumer.sol\":{\"keccak256\":\"0x66d18a70f2d2de191d74f73cd770859188856dee6634d924cf09f9608a4da620\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3cf4b9054c91ba03f6688b30b2705651e5d399854ceb2ee213a7d077c6599355\",\"dweb:/ipfs/QmPxiJgm1qaJfUEXGo8vpTxhdfx8sSUUUxNcdSotWjg5kb\"]},\"contracts/FirewallConsumerBase.sol\":{\"keccak256\":\"0x4da0867b995c7a8e0f21ac356af4eee72432ed37633b8ba51ed847d70d29a2d5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6d9749043bb16a28fa0058ff2b303408174e01e18dfb29bc229fc7778c6610eb\",\"dweb:/ipfs/QmfDcQEhe4aAVS6aUULY8aKGUXAdLiHdPNQQsiFjf6LP2x\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0xb9ee7c4bd6e08fd9a5b7945d405604c563b7aa91f06ed46f8eedeae8c5156898\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://858fb99b602da6e34e51e1a40ee945921006c84c08454f22495b224c3abd0ec3\",\"dweb:/ipfs/QmWDFoDrTX2FFjcyY3aooeZxo5TX7sxmoQ3UhcZo7ccGsx\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/FirewallConsumerBase.sol":{"FirewallConsumerBase":{"abi":[{"inputs":[{"internalType":"address","name":"_firewall","type":"address"},{"internalType":"address","name":"_firewallAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"targetPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setApprovedTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1451":{"entryPoint":null,"id":1451,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1670":{"entryPoint":null,"id":1670,"parameterSlots":2,"returnSlots":0},"abi_decode_address_fromMemory":{"entryPoint":156,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":184,"id":null,"parameterSlots":2,"returnSlots":2},"checked_sub_t_uint256":{"entryPoint":235,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:721:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:17","statements":[{"nodeType":"YulAssignment","src":"84:22:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:17"},"nodeType":"YulFunctionCall","src":"93:13:17"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:17"}]},{"body":{"nodeType":"YulBlock","src":"169:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:17"},"nodeType":"YulFunctionCall","src":"171:12:17"},"nodeType":"YulExpressionStatement","src":"171:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:17"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:17"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:17","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:17","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:17"},"nodeType":"YulFunctionCall","src":"150:11:17"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:17","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:17"},"nodeType":"YulFunctionCall","src":"146:19:17"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:17"},"nodeType":"YulFunctionCall","src":"135:31:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:17"},"nodeType":"YulFunctionCall","src":"125:42:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:17"},"nodeType":"YulFunctionCall","src":"118:50:17"},"nodeType":"YulIf","src":"115:70:17"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:17","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:17","type":""}],"src":"14:177:17"},{"body":{"nodeType":"YulBlock","src":"294:195:17","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:17"},"nodeType":"YulFunctionCall","src":"342:12:17"},"nodeType":"YulExpressionStatement","src":"342:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:17"},"nodeType":"YulFunctionCall","src":"311:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:17","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:17"},"nodeType":"YulFunctionCall","src":"307:32:17"},"nodeType":"YulIf","src":"304:52:17"},{"nodeType":"YulAssignment","src":"365:50:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:17"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:17"},"nodeType":"YulFunctionCall","src":"375:40:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:17"}]},{"nodeType":"YulAssignment","src":"424:59:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:17"},"nodeType":"YulFunctionCall","src":"464:18:17"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:17"},"nodeType":"YulFunctionCall","src":"434:49:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:17"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:17","type":""}],"src":"196:293:17"},{"body":{"nodeType":"YulBlock","src":"543:176:17","statements":[{"nodeType":"YulAssignment","src":"553:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"565:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"568:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"561:3:17"},"nodeType":"YulFunctionCall","src":"561:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"553:4:17"}]},{"body":{"nodeType":"YulBlock","src":"602:111:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"623:1:17","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"630:3:17","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"635:10:17","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"626:3:17"},"nodeType":"YulFunctionCall","src":"626:20:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"616:6:17"},"nodeType":"YulFunctionCall","src":"616:31:17"},"nodeType":"YulExpressionStatement","src":"616:31:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"667:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"670:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"660:6:17"},"nodeType":"YulFunctionCall","src":"660:15:17"},"nodeType":"YulExpressionStatement","src":"660:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"695:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"698:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"688:6:17"},"nodeType":"YulFunctionCall","src":"688:15:17"},"nodeType":"YulExpressionStatement","src":"688:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"585:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"591:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"582:2:17"},"nodeType":"YulFunctionCall","src":"582:11:17"},"nodeType":"YulIf","src":"579:134:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"525:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"528:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"534:4:17","type":""}],"src":"494:225:17"}]},"contents":"{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":17,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051610f0b380380610f0b83398101604081905261002f916100b8565b61006261005d60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626100eb565b839055565b61009561009060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366100eb565b829055565b5050610112565b80516001600160a01b03811681146100b357600080fd5b919050565b600080604083850312156100cb57600080fd5b6100d48361009c565b91506100e26020840161009c565b90509250929050565b8181038181111561010c57634e487b7160e01b600052601160045260246000fd5b92915050565b610dea806101216000396000f3fe6080604052600436106100655760003560e01c80638c36d02d116100435780638c36d02d146100b4578063b7f9a748146100d4578063f05c8582146100f457600080fd5b80631a8828f41461006a578063734b71981461007f5780637c65c38b1461009f575b600080fd5b61007d610078366004610bda565b610132565b005b34801561008b57600080fd5b5061007d61009a366004610c5b565b61033e565b3480156100ab57600080fd5b5061007d6104dc565b3480156100c057600080fd5b5061007d6100cf366004610c5b565b610606565b3480156100e057600080fd5b5061007d6100ef366004610c76565b610767565b34801561010057600080fd5b506101096108c5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061016060017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610cb2565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101b0835490565b1415905080610246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564207460448201527f617267657400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610270837f0c908cff000000000000000000000000000000000000000000000000000000006108fa565b61027957600080fd5b60008873ffffffffffffffffffffffffffffffffffffffff1688886040516102a2929190610cec565b6000604051808303816000865af19150503d80600081146102df576040519150601f19603f3d011682016040523d82523d6000602084013e6102e4565b606091505b50509050806102f257600080fd5b6103323087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109cb92505050565b50505050505050505050565b61037061036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610429576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b73ffffffffffffffffffffffffffffffffffffffff81166104a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f20616464726573730000604482015260640161023d565b6104d96104d460017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610cb2565b829055565b50565b61050a61036c60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e00604482015260640161023d565b6105d16105cc60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b61063461036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b61071b6104d460017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610cb2565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b61079561036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b600061087b60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610cb2565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b60006108f561036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156109b2575060208210155b80156109be5750600081115b9450505050505b92915050565b60606109f08383604051806060016040528060278152602001610d8e602791396109f7565b9392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610a219190610d20565b600060405180830381855af49150503d8060008114610a5c576040519150601f19603f3d011682016040523d82523d6000602084013e610a61565b606091505b5091509150610a7286838387610a7c565b9695505050505050565b60608315610b12578251600003610b0b5773ffffffffffffffffffffffffffffffffffffffff85163b610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161023d565b5081610b1c565b610b1c8383610b24565b949350505050565b815115610b345781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023d9190610d3c565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b8c57600080fd5b919050565b60008083601f840112610ba357600080fd5b50813567ffffffffffffffff811115610bbb57600080fd5b602083019150836020828501011115610bd357600080fd5b9250929050565b600080600080600060608688031215610bf257600080fd5b610bfb86610b68565b9450602086013567ffffffffffffffff80821115610c1857600080fd5b610c2489838a01610b91565b90965094506040880135915080821115610c3d57600080fd5b50610c4a88828901610b91565b969995985093965092949392505050565b600060208284031215610c6d57600080fd5b6109f082610b68565b60008060408385031215610c8957600080fd5b610c9283610b68565b915060208301358015158114610ca757600080fd5b809150509250929050565b818103818111156109c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610d17578181015183820152602001610cff565b50506000910152565b60008251610d32818460208701610cfc565b9190910192915050565b6020815260008251806020840152610d5b816040850160208701610cfc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d978160461676caa1e25126727f4b00a34db9a4aa4543d35b341d1a250896efb64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xF0B CODESIZE SUB DUP1 PUSH2 0xF0B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xB8 JUMP JUMPDEST PUSH2 0x62 PUSH2 0x5D PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xEB JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x95 PUSH2 0x90 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xEB JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP POP PUSH2 0x112 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD4 DUP4 PUSH2 0x9C JUMP JUMPDEST SWAP2 POP PUSH2 0xE2 PUSH1 0x20 DUP5 ADD PUSH2 0x9C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x10C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDEA DUP1 PUSH2 0x121 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xB7F9A748 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0x9F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH2 0x78 CALLDATASIZE PUSH1 0x4 PUSH2 0xBDA JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x33E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0x4DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x606 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0xC76 JUMP JUMPDEST PUSH2 0x767 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x8C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x160 PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1B0 DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x246 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6172676574000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x270 DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x8FA JUMP JUMPDEST PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP3 SWAP2 SWAP1 PUSH2 0xCEC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2DF 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 0x2E4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x332 ADDRESS DUP8 DUP8 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 0x9CB SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x370 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x429 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 PUSH2 0x23D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x4D9 PUSH2 0x4D4 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xCB2 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x50A PUSH2 0x36C PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x59E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x5D1 PUSH2 0x5CC PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x634 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6ED 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 PUSH2 0x23D JUMP JUMPDEST PUSH2 0x71B PUSH2 0x4D4 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x795 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x84E 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 PUSH2 0x23D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87B PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F5 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0x9B2 JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x9BE JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9F0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD8E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x9F7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xA21 SWAP2 SWAP1 PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA5C 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 0xA61 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xA72 DUP7 DUP4 DUP4 DUP8 PUSH2 0xA7C JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xB12 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xB0B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xB0B 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 0x23D JUMP JUMPDEST POP DUP2 PUSH2 0xB1C JUMP JUMPDEST PUSH2 0xB1C DUP4 DUP4 PUSH2 0xB24 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xB34 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0xD3C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xBD3 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 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBFB DUP7 PUSH2 0xB68 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC24 DUP10 DUP4 DUP11 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC4A DUP9 DUP3 DUP10 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F0 DUP3 PUSH2 0xB68 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC92 DUP4 PUSH2 0xB68 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9C5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0xD17 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCFF JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xD32 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xCFC 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 0xD5B DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCFC 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 0x70667358221220D97816 DIV PUSH2 0x676C 0xAA 0x1E 0x25 SLT PUSH8 0x27F4B00A34DB9A4A LOG4 SLOAD RETURNDATASIZE CALLDATALOAD 0xB3 COINBASE 0xD1 LOG2 POP DUP10 PUSH15 0xFB64736F6C63430008130033000000 ","sourceMap":"890:12068:7:-:0;;;8184:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8271:51;1069:42;1110:1;1077:29;1069:42;:::i;:::-;8312:9;12264:23;;12162:141;8271:51;8332:62;1243:48;1290:1;1251:35;1243:48;:::i;:::-;8379:14;12264:23;;12162:141;8332:62;8184:217;;890:12068;;14:177:17;93:13;;-1:-1:-1;;;;;135:31:17;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:225::-;561:9;;;582:11;;;579:134;;;635:10;630:3;626:20;623:1;616:31;670:4;667:1;660:15;698:4;695:1;688:15;579:134;494:225;;;;:::o;:::-;890:12068:7;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_1680":{"entryPoint":null,"id":1680,"parameterSlots":1,"returnSlots":1},"@_getValueBySlot_1690":{"entryPoint":null,"id":1690,"parameterSlots":1,"returnSlots":1},"@_msgSender_840":{"entryPoint":null,"id":840,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":2852,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1670":{"entryPoint":null,"id":1670,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_1597":{"entryPoint":1244,"id":1597,"parameterSlots":0,"returnSlots":0},"@firewallAdmin_1529":{"entryPoint":2245,"id":1529,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":2507,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":2551,"id":744,"parameterSlots":3,"returnSlots":1},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_1495":{"entryPoint":306,"id":1495,"parameterSlots":5,"returnSlots":0},"@setApprovedTarget_1517":{"entryPoint":1895,"id":1517,"parameterSlots":2,"returnSlots":0},"@setFirewallAdmin_1571":{"entryPoint":830,"id":1571,"parameterSlots":1,"returnSlots":0},"@setFirewall_1547":{"entryPoint":1542,"id":1547,"parameterSlots":1,"returnSlots":0},"@supportsERC165InterfaceUnchecked_1043":{"entryPoint":2298,"id":1043,"parameterSlots":2,"returnSlots":1},"@verifyCallResultFromTarget_783":{"entryPoint":2684,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":2920,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":2961,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3163,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3190,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":3034,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3308,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3360,"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_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__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":3388,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__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},"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":3250,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3324,"id":null,"parameterSlots":3,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6554:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:147:17","statements":[{"nodeType":"YulAssignment","src":"73:29:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"95:6:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"82:12:17"},"nodeType":"YulFunctionCall","src":"82:20:17"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"73:5:17"}]},{"body":{"nodeType":"YulBlock","src":"188:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"197:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"200:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"190:6:17"},"nodeType":"YulFunctionCall","src":"190:12:17"},"nodeType":"YulExpressionStatement","src":"190:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"124:5:17"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"135:5:17"},{"kind":"number","nodeType":"YulLiteral","src":"142:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"131:3:17"},"nodeType":"YulFunctionCall","src":"131:54:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"121:2:17"},"nodeType":"YulFunctionCall","src":"121:65:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:17"},"nodeType":"YulFunctionCall","src":"114:73:17"},"nodeType":"YulIf","src":"111:93:17"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:17","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:17","type":""}],"src":"14:196:17"},{"body":{"nodeType":"YulBlock","src":"287:275:17","statements":[{"body":{"nodeType":"YulBlock","src":"336:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"345:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"348:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"338:6:17"},"nodeType":"YulFunctionCall","src":"338:12:17"},"nodeType":"YulExpressionStatement","src":"338:12:17"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"315:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"323:4:17","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"311:3:17"},"nodeType":"YulFunctionCall","src":"311:17:17"},{"name":"end","nodeType":"YulIdentifier","src":"330:3:17"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:17"},"nodeType":"YulFunctionCall","src":"307:27:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"300:6:17"},"nodeType":"YulFunctionCall","src":"300:35:17"},"nodeType":"YulIf","src":"297:55:17"},{"nodeType":"YulAssignment","src":"361:30:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"384:6:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"371:12:17"},"nodeType":"YulFunctionCall","src":"371:20:17"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"361:6:17"}]},{"body":{"nodeType":"YulBlock","src":"434:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"443:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"446:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"436:6:17"},"nodeType":"YulFunctionCall","src":"436:12:17"},"nodeType":"YulExpressionStatement","src":"436:12:17"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"406:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"414:18:17","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"403:2:17"},"nodeType":"YulFunctionCall","src":"403:30:17"},"nodeType":"YulIf","src":"400:50:17"},{"nodeType":"YulAssignment","src":"459:29:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"475:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"483:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"471:3:17"},"nodeType":"YulFunctionCall","src":"471:17:17"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"459:8:17"}]},{"body":{"nodeType":"YulBlock","src":"540:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"549:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"552:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"542:6:17"},"nodeType":"YulFunctionCall","src":"542:12:17"},"nodeType":"YulExpressionStatement","src":"542:12:17"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"511:6:17"},{"name":"length","nodeType":"YulIdentifier","src":"519:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"507:3:17"},"nodeType":"YulFunctionCall","src":"507:19:17"},{"kind":"number","nodeType":"YulLiteral","src":"528:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"503:3:17"},"nodeType":"YulFunctionCall","src":"503:30:17"},{"name":"end","nodeType":"YulIdentifier","src":"535:3:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"500:2:17"},"nodeType":"YulFunctionCall","src":"500:39:17"},"nodeType":"YulIf","src":"497:59:17"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"250:6:17","type":""},{"name":"end","nodeType":"YulTypedName","src":"258:3:17","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"266:8:17","type":""},{"name":"length","nodeType":"YulTypedName","src":"276:6:17","type":""}],"src":"215:347:17"},{"body":{"nodeType":"YulBlock","src":"709:649:17","statements":[{"body":{"nodeType":"YulBlock","src":"755:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"764:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"767:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"757:6:17"},"nodeType":"YulFunctionCall","src":"757:12:17"},"nodeType":"YulExpressionStatement","src":"757:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"730:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"739:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"726:3:17"},"nodeType":"YulFunctionCall","src":"726:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"751:2:17","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"722:3:17"},"nodeType":"YulFunctionCall","src":"722:32:17"},"nodeType":"YulIf","src":"719:52:17"},{"nodeType":"YulAssignment","src":"780:39:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"809:9:17"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"790:18:17"},"nodeType":"YulFunctionCall","src":"790:29:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"780:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"828:46:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"859:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"870:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"855:3:17"},"nodeType":"YulFunctionCall","src":"855:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"842:12:17"},"nodeType":"YulFunctionCall","src":"842:32:17"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"832:6:17","type":""}]},{"nodeType":"YulVariableDeclaration","src":"883:28:17","value":{"kind":"number","nodeType":"YulLiteral","src":"893:18:17","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"887:2:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"938:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"947:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"950:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"940:6:17"},"nodeType":"YulFunctionCall","src":"940:12:17"},"nodeType":"YulExpressionStatement","src":"940:12:17"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"926:6:17"},{"name":"_1","nodeType":"YulIdentifier","src":"934:2:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"923:2:17"},"nodeType":"YulFunctionCall","src":"923:14:17"},"nodeType":"YulIf","src":"920:34:17"},{"nodeType":"YulVariableDeclaration","src":"963:84:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1019:9:17"},{"name":"offset","nodeType":"YulIdentifier","src":"1030:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1015:3:17"},"nodeType":"YulFunctionCall","src":"1015:22:17"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1039:7:17"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"989:25:17"},"nodeType":"YulFunctionCall","src":"989:58:17"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"967:8:17","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"977:8:17","type":""}]},{"nodeType":"YulAssignment","src":"1056:18:17","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1066:8:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1056:6:17"}]},{"nodeType":"YulAssignment","src":"1083:18:17","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1093:8:17"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1083:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"1110:48:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1143:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1154:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1139:3:17"},"nodeType":"YulFunctionCall","src":"1139:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1126:12:17"},"nodeType":"YulFunctionCall","src":"1126:32:17"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1114:8:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"1187:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1196:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1199:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1189:6:17"},"nodeType":"YulFunctionCall","src":"1189:12:17"},"nodeType":"YulExpressionStatement","src":"1189:12:17"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1173:8:17"},{"name":"_1","nodeType":"YulIdentifier","src":"1183:2:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1170:2:17"},"nodeType":"YulFunctionCall","src":"1170:16:17"},"nodeType":"YulIf","src":"1167:36:17"},{"nodeType":"YulVariableDeclaration","src":"1212:86:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1268:9:17"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1279:8:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1264:3:17"},"nodeType":"YulFunctionCall","src":"1264:24:17"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1290:7:17"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1238:25:17"},"nodeType":"YulFunctionCall","src":"1238:60:17"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1216:8:17","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1226:8:17","type":""}]},{"nodeType":"YulAssignment","src":"1307:18:17","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1317:8:17"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1307:6:17"}]},{"nodeType":"YulAssignment","src":"1334:18:17","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1344:8:17"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1334:6:17"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"643:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"654:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"666:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"674:6:17","type":""},{"name":"value2","nodeType":"YulTypedName","src":"682:6:17","type":""},{"name":"value3","nodeType":"YulTypedName","src":"690:6:17","type":""},{"name":"value4","nodeType":"YulTypedName","src":"698:6:17","type":""}],"src":"567:791:17"},{"body":{"nodeType":"YulBlock","src":"1433:116:17","statements":[{"body":{"nodeType":"YulBlock","src":"1479:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1488:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1491:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1481:6:17"},"nodeType":"YulFunctionCall","src":"1481:12:17"},"nodeType":"YulExpressionStatement","src":"1481:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1454:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"1463:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1450:3:17"},"nodeType":"YulFunctionCall","src":"1450:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"1475:2:17","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1446:3:17"},"nodeType":"YulFunctionCall","src":"1446:32:17"},"nodeType":"YulIf","src":"1443:52:17"},{"nodeType":"YulAssignment","src":"1504:39:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1533:9:17"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1514:18:17"},"nodeType":"YulFunctionCall","src":"1514:29:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1504:6:17"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1399:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1410:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1422:6:17","type":""}],"src":"1363:186:17"},{"body":{"nodeType":"YulBlock","src":"1638:263:17","statements":[{"body":{"nodeType":"YulBlock","src":"1684:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1693:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1696:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1686:6:17"},"nodeType":"YulFunctionCall","src":"1686:12:17"},"nodeType":"YulExpressionStatement","src":"1686:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1659:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"1668:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1655:3:17"},"nodeType":"YulFunctionCall","src":"1655:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"1680:2:17","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1651:3:17"},"nodeType":"YulFunctionCall","src":"1651:32:17"},"nodeType":"YulIf","src":"1648:52:17"},{"nodeType":"YulAssignment","src":"1709:39:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1738:9:17"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1719:18:17"},"nodeType":"YulFunctionCall","src":"1719:29:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1709:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"1757:45:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1787:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1798:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1783:3:17"},"nodeType":"YulFunctionCall","src":"1783:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1770:12:17"},"nodeType":"YulFunctionCall","src":"1770:32:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1761:5:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"1855:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1864:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1867:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1857:6:17"},"nodeType":"YulFunctionCall","src":"1857:12:17"},"nodeType":"YulExpressionStatement","src":"1857:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1824:5:17"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1845:5:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1838:6:17"},"nodeType":"YulFunctionCall","src":"1838:13:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1831:6:17"},"nodeType":"YulFunctionCall","src":"1831:21:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1821:2:17"},"nodeType":"YulFunctionCall","src":"1821:32:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1814:6:17"},"nodeType":"YulFunctionCall","src":"1814:40:17"},"nodeType":"YulIf","src":"1811:60:17"},{"nodeType":"YulAssignment","src":"1880:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"1890:5:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1880:6:17"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1596:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1607:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1619:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1627:6:17","type":""}],"src":"1554:347:17"},{"body":{"nodeType":"YulBlock","src":"2007:125:17","statements":[{"nodeType":"YulAssignment","src":"2017:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2029:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2040:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2025:3:17"},"nodeType":"YulFunctionCall","src":"2025:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2017:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2059:9:17"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2074:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"2082:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2070:3:17"},"nodeType":"YulFunctionCall","src":"2070:55:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2052:6:17"},"nodeType":"YulFunctionCall","src":"2052:74:17"},"nodeType":"YulExpressionStatement","src":"2052:74:17"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1976:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1987:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1998:4:17","type":""}],"src":"1906:226:17"},{"body":{"nodeType":"YulBlock","src":"2186:233:17","statements":[{"nodeType":"YulAssignment","src":"2196:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2208:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"2211:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2204:3:17"},"nodeType":"YulFunctionCall","src":"2204:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2196:4:17"}]},{"body":{"nodeType":"YulBlock","src":"2245:168:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2266:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2269:77:17","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2259:6:17"},"nodeType":"YulFunctionCall","src":"2259:88:17"},"nodeType":"YulExpressionStatement","src":"2259:88:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2370:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2360:6:17"},"nodeType":"YulFunctionCall","src":"2360:15:17"},"nodeType":"YulExpressionStatement","src":"2360:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2395:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2398:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2388:6:17"},"nodeType":"YulFunctionCall","src":"2388:15:17"},"nodeType":"YulExpressionStatement","src":"2388:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2228:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"2234:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2225:2:17"},"nodeType":"YulFunctionCall","src":"2225:11:17"},"nodeType":"YulIf","src":"2222:191:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2168:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"2171:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2177:4:17","type":""}],"src":"2137:282:17"},{"body":{"nodeType":"YulBlock","src":"2553:168:17","statements":[{"nodeType":"YulAssignment","src":"2563:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2575:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2586:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2571:3:17"},"nodeType":"YulFunctionCall","src":"2571:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2563:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2605:9:17"},{"name":"value0","nodeType":"YulIdentifier","src":"2616:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2598:6:17"},"nodeType":"YulFunctionCall","src":"2598:25:17"},"nodeType":"YulExpressionStatement","src":"2598:25:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2643:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2654:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2639:3:17"},"nodeType":"YulFunctionCall","src":"2639:18:17"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2663:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"2671:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2659:3:17"},"nodeType":"YulFunctionCall","src":"2659:55:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2632:6:17"},"nodeType":"YulFunctionCall","src":"2632:83:17"},"nodeType":"YulExpressionStatement","src":"2632:83:17"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2514:9:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2525:6:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2533:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2544:4:17","type":""}],"src":"2424:297:17"},{"body":{"nodeType":"YulBlock","src":"2900:227:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2917:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2928:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2910:6:17"},"nodeType":"YulFunctionCall","src":"2910:21:17"},"nodeType":"YulExpressionStatement","src":"2910:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2951:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2962:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2947:3:17"},"nodeType":"YulFunctionCall","src":"2947:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"2967:2:17","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2940:6:17"},"nodeType":"YulFunctionCall","src":"2940:30:17"},"nodeType":"YulExpressionStatement","src":"2940:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2990:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3001:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2986:3:17"},"nodeType":"YulFunctionCall","src":"2986:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642074","kind":"string","nodeType":"YulLiteral","src":"3006:34:17","type":"","value":"FirewallConsumer: Not approved t"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2979:6:17"},"nodeType":"YulFunctionCall","src":"2979:62:17"},"nodeType":"YulExpressionStatement","src":"2979:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3061:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3072:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3057:3:17"},"nodeType":"YulFunctionCall","src":"3057:18:17"},{"hexValue":"6172676574","kind":"string","nodeType":"YulLiteral","src":"3077:7:17","type":"","value":"arget"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3050:6:17"},"nodeType":"YulFunctionCall","src":"3050:35:17"},"nodeType":"YulExpressionStatement","src":"3050:35:17"},{"nodeType":"YulAssignment","src":"3094:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3106:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3117:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3102:3:17"},"nodeType":"YulFunctionCall","src":"3102:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3094:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2877:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2891:4:17","type":""}],"src":"2726:401:17"},{"body":{"nodeType":"YulBlock","src":"3279:124:17","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:17"},{"name":"value0","nodeType":"YulIdentifier","src":"3307:6:17"},{"name":"value1","nodeType":"YulIdentifier","src":"3315:6:17"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3289:12:17"},"nodeType":"YulFunctionCall","src":"3289:33:17"},"nodeType":"YulExpressionStatement","src":"3289:33:17"},{"nodeType":"YulVariableDeclaration","src":"3331:26:17","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3345:3:17"},{"name":"value1","nodeType":"YulIdentifier","src":"3350:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3341:3:17"},"nodeType":"YulFunctionCall","src":"3341:16:17"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3335:2:17","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3373:2:17"},{"kind":"number","nodeType":"YulLiteral","src":"3377:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3366:6:17"},"nodeType":"YulFunctionCall","src":"3366:13:17"},"nodeType":"YulExpressionStatement","src":"3366:13:17"},{"nodeType":"YulAssignment","src":"3388:9:17","value":{"name":"_1","nodeType":"YulIdentifier","src":"3395:2:17"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3388:3:17"}]}]},"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":"3247:3:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3252:6:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3260:6:17","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3271:3:17","type":""}],"src":"3132:271:17"},{"body":{"nodeType":"YulBlock","src":"3582:228:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3599:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3610:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3592:6:17"},"nodeType":"YulFunctionCall","src":"3592:21:17"},"nodeType":"YulExpressionStatement","src":"3592:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3633:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3644:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3629:3:17"},"nodeType":"YulFunctionCall","src":"3629:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"3649:2:17","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:17"},"nodeType":"YulFunctionCall","src":"3622:30:17"},"nodeType":"YulExpressionStatement","src":"3622:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3672:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3683:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3668:3:17"},"nodeType":"YulFunctionCall","src":"3668:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f206d657461207472616e7361","kind":"string","nodeType":"YulLiteral","src":"3688:34:17","type":"","value":"FirewallConsumer: No meta transa"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3661:6:17"},"nodeType":"YulFunctionCall","src":"3661:62:17"},"nodeType":"YulExpressionStatement","src":"3661:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3743:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3754:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3739:3:17"},"nodeType":"YulFunctionCall","src":"3739:18:17"},{"hexValue":"6374696f6e73","kind":"string","nodeType":"YulLiteral","src":"3759:8:17","type":"","value":"ctions"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3732:6:17"},"nodeType":"YulFunctionCall","src":"3732:36:17"},"nodeType":"YulExpressionStatement","src":"3732:36:17"},{"nodeType":"YulAssignment","src":"3777:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3789:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3800:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3785:3:17"},"nodeType":"YulFunctionCall","src":"3785:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3777:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3559:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3573:4:17","type":""}],"src":"3408:402:17"},{"body":{"nodeType":"YulBlock","src":"3989:226:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4006:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4017:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3999:6:17"},"nodeType":"YulFunctionCall","src":"3999:21:17"},"nodeType":"YulExpressionStatement","src":"3999:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:17"},"nodeType":"YulFunctionCall","src":"4036:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4056:2:17","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4029:6:17"},"nodeType":"YulFunctionCall","src":"4029:30:17"},"nodeType":"YulExpressionStatement","src":"4029:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4079:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4090:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4075:3:17"},"nodeType":"YulFunctionCall","src":"4075:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"4095:34:17","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4068:6:17"},"nodeType":"YulFunctionCall","src":"4068:62:17"},"nodeType":"YulExpressionStatement","src":"4068:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4150:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4161:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4146:3:17"},"nodeType":"YulFunctionCall","src":"4146:18:17"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"4166:6:17","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4139:6:17"},"nodeType":"YulFunctionCall","src":"4139:34:17"},"nodeType":"YulExpressionStatement","src":"4139:34:17"},{"nodeType":"YulAssignment","src":"4182:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4194:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4205:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4190:3:17"},"nodeType":"YulFunctionCall","src":"4190:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4182:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3966:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3980:4:17","type":""}],"src":"3815:400:17"},{"body":{"nodeType":"YulBlock","src":"4394:180:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4411:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4422:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4404:6:17"},"nodeType":"YulFunctionCall","src":"4404:21:17"},"nodeType":"YulExpressionStatement","src":"4404:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4445:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4456:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4441:3:17"},"nodeType":"YulFunctionCall","src":"4441:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4461:2:17","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4434:6:17"},"nodeType":"YulFunctionCall","src":"4434:30:17"},"nodeType":"YulExpressionStatement","src":"4434:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4484:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4495:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4480:3:17"},"nodeType":"YulFunctionCall","src":"4480:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"4500:32:17","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4473:6:17"},"nodeType":"YulFunctionCall","src":"4473:60:17"},"nodeType":"YulExpressionStatement","src":"4473:60:17"},{"nodeType":"YulAssignment","src":"4542:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4554:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4565:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4550:3:17"},"nodeType":"YulFunctionCall","src":"4550:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4542:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4371:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4385:4:17","type":""}],"src":"4220:354:17"},{"body":{"nodeType":"YulBlock","src":"4753:181:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4770:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4781:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4763:6:17"},"nodeType":"YulFunctionCall","src":"4763:21:17"},"nodeType":"YulExpressionStatement","src":"4763:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4804:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4815:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4800:3:17"},"nodeType":"YulFunctionCall","src":"4800:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4820:2:17","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4793:6:17"},"nodeType":"YulFunctionCall","src":"4793:30:17"},"nodeType":"YulExpressionStatement","src":"4793:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4843:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4854:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4839:3:17"},"nodeType":"YulFunctionCall","src":"4839:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"4859:33:17","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4832:6:17"},"nodeType":"YulFunctionCall","src":"4832:61:17"},"nodeType":"YulExpressionStatement","src":"4832:61:17"},{"nodeType":"YulAssignment","src":"4902:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4914:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4925:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4910:3:17"},"nodeType":"YulFunctionCall","src":"4910:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4902:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4730:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4744:4:17","type":""}],"src":"4579:355:17"},{"body":{"nodeType":"YulBlock","src":"5038:149:17","statements":[{"nodeType":"YulAssignment","src":"5048:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5060:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5071:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5056:3:17"},"nodeType":"YulFunctionCall","src":"5056:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5048:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5090:9:17"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5105:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"5113:66:17","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5101:3:17"},"nodeType":"YulFunctionCall","src":"5101:79:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5083:6:17"},"nodeType":"YulFunctionCall","src":"5083:98:17"},"nodeType":"YulExpressionStatement","src":"5083:98:17"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5007:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5018:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5029:4:17","type":""}],"src":"4939:248:17"},{"body":{"nodeType":"YulBlock","src":"5258:184:17","statements":[{"nodeType":"YulVariableDeclaration","src":"5268:10:17","value":{"kind":"number","nodeType":"YulLiteral","src":"5277:1:17","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5272:1:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"5337:63:17","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5362:3:17"},{"name":"i","nodeType":"YulIdentifier","src":"5367:1:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5358:3:17"},"nodeType":"YulFunctionCall","src":"5358:11:17"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5381:3:17"},{"name":"i","nodeType":"YulIdentifier","src":"5386:1:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5377:3:17"},"nodeType":"YulFunctionCall","src":"5377:11:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5371:5:17"},"nodeType":"YulFunctionCall","src":"5371:18:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5351:6:17"},"nodeType":"YulFunctionCall","src":"5351:39:17"},"nodeType":"YulExpressionStatement","src":"5351:39:17"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5298:1:17"},{"name":"length","nodeType":"YulIdentifier","src":"5301:6:17"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5295:2:17"},"nodeType":"YulFunctionCall","src":"5295:13:17"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5309:19:17","statements":[{"nodeType":"YulAssignment","src":"5311:15:17","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5320:1:17"},{"kind":"number","nodeType":"YulLiteral","src":"5323:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5316:3:17"},"nodeType":"YulFunctionCall","src":"5316:10:17"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5311:1:17"}]}]},"pre":{"nodeType":"YulBlock","src":"5291:3:17","statements":[]},"src":"5287:113:17"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5420:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"5425:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5416:3:17"},"nodeType":"YulFunctionCall","src":"5416:16:17"},{"kind":"number","nodeType":"YulLiteral","src":"5434:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5409:6:17"},"nodeType":"YulFunctionCall","src":"5409:27:17"},"nodeType":"YulExpressionStatement","src":"5409:27:17"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"5236:3:17","type":""},{"name":"dst","nodeType":"YulTypedName","src":"5241:3:17","type":""},{"name":"length","nodeType":"YulTypedName","src":"5246:6:17","type":""}],"src":"5192:250:17"},{"body":{"nodeType":"YulBlock","src":"5584:150:17","statements":[{"nodeType":"YulVariableDeclaration","src":"5594:27:17","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5614:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5608:5:17"},"nodeType":"YulFunctionCall","src":"5608:13:17"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5598:6:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5669:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"5677:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5665:3:17"},"nodeType":"YulFunctionCall","src":"5665:17:17"},{"name":"pos","nodeType":"YulIdentifier","src":"5684:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"5689:6:17"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"5630:34:17"},"nodeType":"YulFunctionCall","src":"5630:66:17"},"nodeType":"YulExpressionStatement","src":"5630:66:17"},{"nodeType":"YulAssignment","src":"5705:23:17","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5716:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"5721:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5712:3:17"},"nodeType":"YulFunctionCall","src":"5712:16:17"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5705:3:17"}]}]},"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":"5560:3:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5565:6:17","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5576:3:17","type":""}],"src":"5447:287:17"},{"body":{"nodeType":"YulBlock","src":"5913:179:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5930:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5941:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5923:6:17"},"nodeType":"YulFunctionCall","src":"5923:21:17"},"nodeType":"YulExpressionStatement","src":"5923:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5964:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5975:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5960:3:17"},"nodeType":"YulFunctionCall","src":"5960:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"5980:2:17","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5953:6:17"},"nodeType":"YulFunctionCall","src":"5953:30:17"},"nodeType":"YulExpressionStatement","src":"5953:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6003:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6014:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5999:3:17"},"nodeType":"YulFunctionCall","src":"5999:18:17"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6019:31:17","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5992:6:17"},"nodeType":"YulFunctionCall","src":"5992:59:17"},"nodeType":"YulExpressionStatement","src":"5992:59:17"},{"nodeType":"YulAssignment","src":"6060:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6072:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6083:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6068:3:17"},"nodeType":"YulFunctionCall","src":"6068:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6060:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5890:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5904:4:17","type":""}],"src":"5739:353:17"},{"body":{"nodeType":"YulBlock","src":"6218:334:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6235:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6246:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6228:6:17"},"nodeType":"YulFunctionCall","src":"6228:21:17"},"nodeType":"YulExpressionStatement","src":"6228:21:17"},{"nodeType":"YulVariableDeclaration","src":"6258:27:17","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6278:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6272:5:17"},"nodeType":"YulFunctionCall","src":"6272:13:17"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6262:6:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6305:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6316:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6301:3:17"},"nodeType":"YulFunctionCall","src":"6301:18:17"},{"name":"length","nodeType":"YulIdentifier","src":"6321:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6294:6:17"},"nodeType":"YulFunctionCall","src":"6294:34:17"},"nodeType":"YulExpressionStatement","src":"6294:34:17"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6376:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"6384:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6372:3:17"},"nodeType":"YulFunctionCall","src":"6372:15:17"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6393:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6404:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6389:3:17"},"nodeType":"YulFunctionCall","src":"6389:18:17"},{"name":"length","nodeType":"YulIdentifier","src":"6409:6:17"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"6337:34:17"},"nodeType":"YulFunctionCall","src":"6337:79:17"},"nodeType":"YulExpressionStatement","src":"6337:79:17"},{"nodeType":"YulAssignment","src":"6425:121:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6441:9:17"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6460:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"6468:2:17","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6456:3:17"},"nodeType":"YulFunctionCall","src":"6456:15:17"},{"kind":"number","nodeType":"YulLiteral","src":"6473:66:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6452:3:17"},"nodeType":"YulFunctionCall","src":"6452:88:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6437:3:17"},"nodeType":"YulFunctionCall","src":"6437:104:17"},{"kind":"number","nodeType":"YulLiteral","src":"6543:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6433:3:17"},"nodeType":"YulFunctionCall","src":"6433:113:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6425:4:17"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6187:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6198:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6209:4:17","type":""}],"src":"6097:455:17"}]},"contents":"{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\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_addresst_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 := abi_decode_address(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_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function 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 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_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not approved t\")\n        mstore(add(headStart, 96), \"arget\")\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 abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"FirewallConsumer: No meta transa\")\n        mstore(add(headStart, 96), \"ctions\")\n        tail := add(headStart, 128)\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 abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\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":17,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100655760003560e01c80638c36d02d116100435780638c36d02d146100b4578063b7f9a748146100d4578063f05c8582146100f457600080fd5b80631a8828f41461006a578063734b71981461007f5780637c65c38b1461009f575b600080fd5b61007d610078366004610bda565b610132565b005b34801561008b57600080fd5b5061007d61009a366004610c5b565b61033e565b3480156100ab57600080fd5b5061007d6104dc565b3480156100c057600080fd5b5061007d6100cf366004610c5b565b610606565b3480156100e057600080fd5b5061007d6100ef366004610c76565b610767565b34801561010057600080fd5b506101096108c5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061016060017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610cb2565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101b0835490565b1415905080610246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564207460448201527f617267657400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610270837f0c908cff000000000000000000000000000000000000000000000000000000006108fa565b61027957600080fd5b60008873ffffffffffffffffffffffffffffffffffffffff1688886040516102a2929190610cec565b6000604051808303816000865af19150503d80600081146102df576040519150601f19603f3d011682016040523d82523d6000602084013e6102e4565b606091505b50509050806102f257600080fd5b6103323087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109cb92505050565b50505050505050505050565b61037061036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610429576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b73ffffffffffffffffffffffffffffffffffffffff81166104a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f20616464726573730000604482015260640161023d565b6104d96104d460017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610cb2565b829055565b50565b61050a61036c60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e00604482015260640161023d565b6105d16105cc60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b61063461036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b61071b6104d460017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610cb2565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b61079561036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b600061087b60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610cb2565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b60006108f561036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156109b2575060208210155b80156109be5750600081115b9450505050505b92915050565b60606109f08383604051806060016040528060278152602001610d8e602791396109f7565b9392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610a219190610d20565b600060405180830381855af49150503d8060008114610a5c576040519150601f19603f3d011682016040523d82523d6000602084013e610a61565b606091505b5091509150610a7286838387610a7c565b9695505050505050565b60608315610b12578251600003610b0b5773ffffffffffffffffffffffffffffffffffffffff85163b610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161023d565b5081610b1c565b610b1c8383610b24565b949350505050565b815115610b345781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023d9190610d3c565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b8c57600080fd5b919050565b60008083601f840112610ba357600080fd5b50813567ffffffffffffffff811115610bbb57600080fd5b602083019150836020828501011115610bd357600080fd5b9250929050565b600080600080600060608688031215610bf257600080fd5b610bfb86610b68565b9450602086013567ffffffffffffffff80821115610c1857600080fd5b610c2489838a01610b91565b90965094506040880135915080821115610c3d57600080fd5b50610c4a88828901610b91565b969995985093965092949392505050565b600060208284031215610c6d57600080fd5b6109f082610b68565b60008060408385031215610c8957600080fd5b610c9283610b68565b915060208301358015158114610ca757600080fd5b809150509250929050565b818103818111156109c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610d17578181015183820152602001610cff565b50506000910152565b60008251610d32818460208701610cfc565b9190910192915050565b6020815260008251806020840152610d5b816040850160208701610cfc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d978160461676caa1e25126727f4b00a34db9a4aa4543d35b341d1a250896efb64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xB7F9A748 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0x9F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH2 0x78 CALLDATASIZE PUSH1 0x4 PUSH2 0xBDA JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x33E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0x4DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x606 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0xC76 JUMP JUMPDEST PUSH2 0x767 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x8C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x160 PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1B0 DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x246 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6172676574000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x270 DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x8FA JUMP JUMPDEST PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP3 SWAP2 SWAP1 PUSH2 0xCEC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2DF 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 0x2E4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x332 ADDRESS DUP8 DUP8 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 0x9CB SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x370 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x429 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 PUSH2 0x23D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x4D9 PUSH2 0x4D4 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xCB2 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x50A PUSH2 0x36C PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x59E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x5D1 PUSH2 0x5CC PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x634 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6ED 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 PUSH2 0x23D JUMP JUMPDEST PUSH2 0x71B PUSH2 0x4D4 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x795 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x84E 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 PUSH2 0x23D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87B PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F5 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0x9B2 JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x9BE JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9F0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD8E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x9F7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xA21 SWAP2 SWAP1 PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA5C 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 0xA61 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xA72 DUP7 DUP4 DUP4 DUP8 PUSH2 0xA7C JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xB12 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xB0B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xB0B 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 0x23D JUMP JUMPDEST POP DUP2 PUSH2 0xB1C JUMP JUMPDEST PUSH2 0xB1C DUP4 DUP4 PUSH2 0xB24 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xB34 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0xD3C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xBD3 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 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBFB DUP7 PUSH2 0xB68 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC24 DUP10 DUP4 DUP11 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC4A DUP9 DUP3 DUP10 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F0 DUP3 PUSH2 0xB68 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC92 DUP4 PUSH2 0xB68 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9C5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0xD17 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCFF JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xD32 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xCFC 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 0xD5B DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCFC 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 0x70667358221220D97816 DIV PUSH2 0x676C 0xAA 0x1E 0x25 SLT PUSH8 0x27F4B00A34DB9A4A LOG4 SLOAD RETURNDATASIZE CALLDATALOAD 0xB3 COINBASE 0xD1 LOG2 POP DUP10 PUSH15 0xFB64736F6C63430008130033000000 ","sourceMap":"890:12068:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8869:401;;;;;;:::i;:::-;;:::i;:::-;;10543:241;;;;;;;;;;-1:-1:-1;10543:241:7;;;;;:::i;:::-;;:::i;10853:280::-;;;;;;;;;;;;;:::i;10201:176::-;;;;;;;;;;-1:-1:-1;10201:176:7;;;;;:::i;:::-;;:::i;9595:239::-;;;;;;;;;;-1:-1:-1;9595:239:7;;;;;:::i;:::-;;:::i;9905:136::-;;;;;;;;;;;;;:::i;:::-;;;2082:42:17;2070:55;;;2052:74;;2040:2;2025:18;9905:136:7;;;;;;;8869:401;9028:6;7439:13;1791:50;1840:1;1799:37;1791:50;:::i;:::-;7465:49;;;;;;2598:25:17;;;;2671:42;2659:55;;2639:18;;;2632:83;2571:18;;7465:49:7;;;;;;;;;;;;7455:60;;;;;;7439:76;;7525:21;7583:1;7575:10;;7549:22;7565:5;12928:12;;12806:150;7549:22;:36;;7525:60;;7603:16;7595:66;;;;;;;2928:2:17;7595:66:7;;;2910:21:17;2967:2;2947:18;;;2940:30;3006:34;2986:18;;;2979:62;3077:7;3057:18;;;3050:35;3102:19;;7595:66:7;;;;;;;;;7679:99;7726:6;1582:18;7679:46;:99::i;:::-;7671:108;;;;;;9047:12:::1;9065:6;:11;;9077:13;;9065:26;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9046:45;;;9109:7;9101:16;;;::::0;::::1;;9214:49;9251:4;9258;;9214:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;9214:28:7::1;::::0;-1:-1:-1;;;9214:49:7:i:1;:::-;;9036:234;7159:638:::0;;8869:401;;;;;;:::o;10543:241::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;:::-;12928:12;;12806:150;7951:46;7937:60;;:10;:60;;;7929:109;;;;;;;4017:2:17;7929:109:7;;;3999:21:17;4056:2;4036:18;;;4029:30;4095:34;4075:18;;;4068:62;4166:6;4146:18;;;4139:34;4190:19;;7929:109:7;3815:400:17;7929:109:7;10638:28:::1;::::0;::::1;10630:71;;;::::0;::::1;::::0;;4422:2:17;10630:71:7::1;::::0;::::1;4404:21:17::0;4461:2;4441:18;;;4434:30;4500:32;4480:18;;;4473:60;4550:18;;10630:71:7::1;4220:354:17::0;10630:71:7::1;10711:66;1453:52;1504:1;1461:39;1453:52;:::i;:::-;10762:14:::0;12264:23;;12162:141;10711:66:::1;10543:241:::0;:::o;10853:280::-;10925:50;1453:52;1504:1;1461:39;1453:52;:::i;10925:50::-;10911:64;;:10;:64;;;10903:108;;;;;;;4781:2:17;10903:108:7;;;4763:21:17;4820:2;4800:18;;;4793:30;4859:33;4839:18;;;4832:61;4910:18;;10903:108:7;4579:355:17;10903:108:7;11021:58;1243:48;1290:1;1251:35;1243:48;:::i;:::-;11068:10;12264:23;;12162:141;11021:58;11094:32;;11115:10;2052:74:17;;11094:32:7;;2040:2:17;2025:18;11094:32:7;;;;;;;10853:280::o;10201:176::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;7951:46::-;7937:60;;:10;:60;;;7929:109;;;;;;;4017:2:17;7929:109:7;;;3999:21:17;4056:2;4036:18;;;4029:30;4095:34;4075:18;;;4068:62;4166:6;4146:18;;;4139:34;4190:19;;7929:109:7;3815:400:17;7929:109:7;10278:51:::1;1069:42;1110:1;1077:29;1069:42;:::i;10278:51::-;10344:26;::::0;2082:42:17;2070:55;;2052:74;;10344:26:7::1;::::0;2040:2:17;2025:18;10344:26:7::1;;;;;;;10201:176:::0;:::o;9595:239::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;7951:46::-;7937:60;;:10;:60;;;7929:109;;;;;;;4017:2:17;7929:109:7;;;3999:21:17;4056:2;4036:18;;;4029:30;4095:34;4075:18;;;4068:62;4166:6;4146:18;;;4139:34;4190:19;;7929:109:7;3815:400:17;7929:109:7;9688:13:::1;1791:50;1840:1;1799:37;1791:50;:::i;:::-;9714:49;::::0;;::::1;::::0;::::1;2598:25:17::0;;;;2671:42;2659:55;;2639:18;;;2632:83;2571:18;;9714:49:7::1;;;;;;;;;;;;9704:60;;;;;;9688:76;;9811:6;9804:5;9797:21;9783:45;9595:239:::0;;:::o;9905:136::-;9962:7;9988:46;1243:48;1290:1;1251:35;1243:48;:::i;9988:46::-;9981:53;;9905:136;:::o;4421:647:4:-;4592:71;;;5113:66:17;5101:79;;4592:71:4;;;;5083:98:17;;;;4592:71:4;;;;;;;;;;5056:18:17;;;;4592:71:4;;;;;;;;;;;4615:34;4592:71;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;;:::o;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:2: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;;;;;;;5941:2:17;8113:60:2;;;5923:21:17;5980:2;5960:18;;;5953:30;6019:31;5999:18;;;5992:59;6068:18;;8113:60:2;5739:353:17;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:196:17:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:347::-;266:8;276:6;330:3;323:4;315:6;311:17;307:27;297:55;;348:1;345;338:12;297:55;-1:-1:-1;371:20:17;;414:18;403:30;;400:50;;;446:1;443;436:12;400:50;483:4;475:6;471:17;459:29;;535:3;528:4;519:6;511;507:19;503:30;500:39;497:59;;;552:1;549;542:12;497:59;215:347;;;;;:::o;567:791::-;666:6;674;682;690;698;751:2;739:9;730:7;726:23;722:32;719:52;;;767:1;764;757:12;719:52;790:29;809:9;790:29;:::i;:::-;780:39;;870:2;859:9;855:18;842:32;893:18;934:2;926:6;923:14;920:34;;;950:1;947;940:12;920:34;989:58;1039:7;1030:6;1019:9;1015:22;989:58;:::i;:::-;1066:8;;-1:-1:-1;963:84:17;-1:-1:-1;1154:2:17;1139:18;;1126:32;;-1:-1:-1;1170:16:17;;;1167:36;;;1199:1;1196;1189:12;1167:36;;1238:60;1290:7;1279:8;1268:9;1264:24;1238:60;:::i;:::-;567:791;;;;-1:-1:-1;567:791:17;;-1:-1:-1;1317:8:17;;1212:86;567:791;-1:-1:-1;;;567:791:17:o;1363:186::-;1422:6;1475:2;1463:9;1454:7;1450:23;1446:32;1443:52;;;1491:1;1488;1481:12;1443:52;1514:29;1533:9;1514:29;:::i;1554:347::-;1619:6;1627;1680:2;1668:9;1659:7;1655:23;1651:32;1648:52;;;1696:1;1693;1686:12;1648:52;1719:29;1738:9;1719:29;:::i;:::-;1709:39;;1798:2;1787:9;1783:18;1770:32;1845:5;1838:13;1831:21;1824:5;1821:32;1811:60;;1867:1;1864;1857:12;1811:60;1890:5;1880:15;;;1554:347;;;;;:::o;2137:282::-;2204:9;;;2225:11;;;2222:191;;;2269:77;2266:1;2259:88;2370:4;2367:1;2360:15;2398:4;2395:1;2388:15;3132:271;3315:6;3307;3302:3;3289:33;3271:3;3341:16;;3366:13;;;3341:16;3132:271;-1:-1:-1;3132:271:17:o;5192:250::-;5277:1;5287:113;5301:6;5298:1;5295:13;5287:113;;;5377:11;;;5371:18;5358:11;;;5351:39;5323:2;5316:10;5287:113;;;-1:-1:-1;;5434:1:17;5416:16;;5409:27;5192:250::o;5447:287::-;5576:3;5614:6;5608:13;5630:66;5689:6;5684:3;5677:4;5669:6;5665:17;5630:66;:::i;:::-;5712:16;;;;;5447:287;-1:-1:-1;;5447:287:17:o;6097:455::-;6246:2;6235:9;6228:21;6209:4;6278:6;6272:13;6321:6;6316:2;6305:9;6301:18;6294:34;6337:79;6409:6;6404:2;6393:9;6389:18;6384:2;6376:6;6372:15;6337:79;:::i;:::-;6468:2;6456:15;6473:66;6452:88;6437:104;;;;6543:2;6433:113;;6097:455;-1:-1:-1;;6097:455:17:o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","firewallAdmin()":"f05c8582","safeFunctionCall(address,bytes,bytes)":"1a8828f4","setApprovedTarget(address,bool)":"b7f9a748","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"targetPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setApprovedTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"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 must define a firewall contract which will manage the policies that are applied to the contract. It also must define a firewall admin which will be able to add and remove policies.\",\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"constructor\":{\"details\":\"Initializes a contract protected by a firewall, with a firewall address and a firewall admin.\"},\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"safeFunctionCall(address,bytes,bytes)\":{\"details\":\"Allows calling an approved external target 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.\",\"params\":{\"data\":\"data to be executed after the target call\",\"target\":\"address of the target\",\"targetPayload\":\"payload to be sent to the target\"}},\"setApprovedTarget(address,bool)\":{\"details\":\"Allows firewall admin to set approved targets. IMPORTANT: Only set approved target if you know what you're doing. Anyone can cause this contract to send any data to an approved target.\",\"params\":{\"status\":\"status of the target\",\"target\":\"address of the target\"}},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}}},\"title\":\"Firewall Consumer Base Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FirewallConsumerBase.sol\":\"FirewallConsumerBase\"},\"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\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/FirewallConsumerBase.sol\":{\"keccak256\":\"0x4da0867b995c7a8e0f21ac356af4eee72432ed37633b8ba51ed847d70d29a2d5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6d9749043bb16a28fa0058ff2b303408174e01e18dfb29bc229fc7778c6610eb\",\"dweb:/ipfs/QmfDcQEhe4aAVS6aUULY8aKGUXAdLiHdPNQQsiFjf6LP2x\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0xb9ee7c4bd6e08fd9a5b7945d405604c563b7aa91f06ed46f8eedeae8c5156898\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://858fb99b602da6e34e51e1a40ee945921006c84c08454f22495b224c3abd0ec3\",\"dweb:/ipfs/QmWDFoDrTX2FFjcyY3aooeZxo5TX7sxmoQ3UhcZo7ccGsx\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/consumers/FirewallConsumerStorage.sol":{"FirewallConsumerStorage":{"abi":[{"inputs":[{"internalType":"address","name":"_firewall","type":"address"},{"internalType":"address","name":"_firewallAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getApprovedTarget","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"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setUserNativeFee","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1809":{"entryPoint":null,"id":1809,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1958":{"entryPoint":null,"id":1958,"parameterSlots":2,"returnSlots":0},"abi_decode_address_fromMemory":{"entryPoint":156,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":184,"id":null,"parameterSlots":2,"returnSlots":2},"checked_sub_t_uint256":{"entryPoint":235,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:721:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:17","statements":[{"nodeType":"YulAssignment","src":"84:22:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:17"},"nodeType":"YulFunctionCall","src":"93:13:17"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:17"}]},{"body":{"nodeType":"YulBlock","src":"169:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:17"},"nodeType":"YulFunctionCall","src":"171:12:17"},"nodeType":"YulExpressionStatement","src":"171:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:17"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:17"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:17","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:17","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:17"},"nodeType":"YulFunctionCall","src":"150:11:17"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:17","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:17"},"nodeType":"YulFunctionCall","src":"146:19:17"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:17"},"nodeType":"YulFunctionCall","src":"135:31:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:17"},"nodeType":"YulFunctionCall","src":"125:42:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:17"},"nodeType":"YulFunctionCall","src":"118:50:17"},"nodeType":"YulIf","src":"115:70:17"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:17","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:17","type":""}],"src":"14:177:17"},{"body":{"nodeType":"YulBlock","src":"294:195:17","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:17"},"nodeType":"YulFunctionCall","src":"342:12:17"},"nodeType":"YulExpressionStatement","src":"342:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:17"},"nodeType":"YulFunctionCall","src":"311:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:17","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:17"},"nodeType":"YulFunctionCall","src":"307:32:17"},"nodeType":"YulIf","src":"304:52:17"},{"nodeType":"YulAssignment","src":"365:50:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:17"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:17"},"nodeType":"YulFunctionCall","src":"375:40:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:17"}]},{"nodeType":"YulAssignment","src":"424:59:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:17"},"nodeType":"YulFunctionCall","src":"464:18:17"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:17"},"nodeType":"YulFunctionCall","src":"434:49:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:17"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:17","type":""}],"src":"196:293:17"},{"body":{"nodeType":"YulBlock","src":"543:176:17","statements":[{"nodeType":"YulAssignment","src":"553:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"565:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"568:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"561:3:17"},"nodeType":"YulFunctionCall","src":"561:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"553:4:17"}]},{"body":{"nodeType":"YulBlock","src":"602:111:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"623:1:17","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"630:3:17","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"635:10:17","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"626:3:17"},"nodeType":"YulFunctionCall","src":"626:20:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"616:6:17"},"nodeType":"YulFunctionCall","src":"616:31:17"},"nodeType":"YulExpressionStatement","src":"616:31:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"667:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"670:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"660:6:17"},"nodeType":"YulFunctionCall","src":"660:15:17"},"nodeType":"YulExpressionStatement","src":"660:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"695:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"698:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"688:6:17"},"nodeType":"YulFunctionCall","src":"688:15:17"},"nodeType":"YulExpressionStatement","src":"688:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"585:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"591:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"582:2:17"},"nodeType":"YulFunctionCall","src":"582:11:17"},"nodeType":"YulIf","src":"579:134:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"525:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"528:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"534:4:17","type":""}],"src":"494:225:17"}]},"contents":"{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":17,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051610a65380380610a6583398101604081905261002f916100b8565b61006261005d60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626100eb565b839055565b61009561009060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366100eb565b829055565b5050610112565b80516001600160a01b03811681146100b357600080fd5b919050565b600080604083850312156100cb57600080fd5b6100d48361009c565b91506100e26020840161009c565b90509250929050565b8181038181111561010c57634e487b7160e01b600052601160045260246000fd5b92915050565b610944806101216000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063776d1a01116100765780638c36d02d1161005b5780638c36d02d14610133578063af7f27f414610146578063e79542a81461014e57600080fd5b8063776d1a01146101185780637c65c38b1461012b57600080fd5b80631498be2f146100a8578063369c87ca146100c357806351cfdd39146100d8578063734b719814610105575b600080fd5b6100b0610156565b6040519081526020015b60405180910390f35b6100d66100d1366004610878565b61018f565b005b6100e06102b1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ba565b6100d6610113366004610891565b6102e6565b6100d6610126366004610891565b610478565b6100d661058d565b6100d6610141366004610891565b6106b7565b6100e0610818565b6100e0610848565b600061018a61018660017ffa772cc97e705cdeca11bb64152cb56987b045e50611cde5b293130495205bea6108ce565b5490565b919050565b6101bd61018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461027b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e0000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ae6102a960017ffa772cc97e705cdeca11bb64152cb56987b045e50611cde5b293130495205bea6108ce565b829055565b50565b60006102e161018660017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626108ce565b905090565b61031461018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610272565b73ffffffffffffffffffffffffffffffffffffffff811661044a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610272565b6102ae6102a960017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd36108ce565b6104a661018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461055f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610272565b6102ae6102a960017f9a47a57dd949ca52baa9f4dd2008a3df675ab7e24583f22e3b264117679d741e6108ce565b6105bb61018660017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd36108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461064f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610272565b61068261067d60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b6106e561018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610272565b6107cc6102a960017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626108ce565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b60006102e161018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b60006102e161018660017f9a47a57dd949ca52baa9f4dd2008a3df675ab7e24583f22e3b264117679d741e6108ce565b60006020828403121561088a57600080fd5b5035919050565b6000602082840312156108a357600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108c757600080fd5b9392505050565b81810381811115610908577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea26469706673582212208fa626a0f6aad72ccd810aa155da854c5ddd4778956fa516b64c7788da99d35f64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xA65 CODESIZE SUB DUP1 PUSH2 0xA65 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xB8 JUMP JUMPDEST PUSH2 0x62 PUSH2 0x5D PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xEB JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x95 PUSH2 0x90 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xEB JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP POP PUSH2 0x112 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD4 DUP4 PUSH2 0x9C JUMP JUMPDEST SWAP2 POP PUSH2 0xE2 PUSH1 0x20 DUP5 ADD PUSH2 0x9C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x10C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x944 DUP1 PUSH2 0x121 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x776D1A01 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x8C36D02D GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0xAF7F27F4 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0xE79542A8 EQ PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1498BE2F EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x369C87CA EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x51CFDD39 EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x105 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH2 0x156 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x878 JUMP JUMPDEST PUSH2 0x18F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE0 PUSH2 0x2B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBA JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x2E6 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x126 CALLDATASIZE PUSH1 0x4 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x478 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x58D JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x141 CALLDATASIZE PUSH1 0x4 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0xE0 PUSH2 0x818 JUMP JUMPDEST PUSH2 0xE0 PUSH2 0x848 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18A PUSH2 0x186 PUSH1 0x1 PUSH32 0xFA772CC97E705CDECA11BB64152CB56987B045E50611CDE5B293130495205BEA PUSH2 0x8CE JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1BD PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x27B 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 0x2AE PUSH2 0x2A9 PUSH1 0x1 PUSH32 0xFA772CC97E705CDECA11BB64152CB56987B045E50611CDE5B293130495205BEA PUSH2 0x8CE JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1 PUSH2 0x186 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x8CE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3CD 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 PUSH2 0x272 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x44A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x272 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x2A9 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x4A6 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x55F 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 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x2A9 PUSH1 0x1 PUSH32 0x9A47A57DD949CA52BAA9F4DD2008A3DF675AB7E24583F22E3B264117679D741E PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x5BB PUSH2 0x186 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x64F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x272 JUMP JUMPDEST PUSH2 0x682 PUSH2 0x67D PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x6E5 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x79E 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 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x7CC PUSH2 0x2A9 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1 PUSH2 0x186 PUSH1 0x1 PUSH32 0x9A47A57DD949CA52BAA9F4DD2008A3DF675AB7E24583F22E3B264117679D741E PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x88A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x908 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 0xA6 0x26 LOG0 0xF6 0xAA 0xD7 0x2C 0xCD DUP2 EXP LOG1 SSTORE 0xDA DUP6 0x4C 0x5D 0xDD SELFBALANCE PUSH25 0x956FA516B64C7788DA99D35F64736F6C634300081300330000 ","sourceMap":"751:5026:8:-:0;;;2161:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2248:51;931:42;972:1;939:29;931:42;:::i;:::-;2289:9;4942:23;;4840:141;2248:51;2309:62;1105:48;1152:1;1113:35;1105:48;:::i;:::-;2356:14;4942:23;;4840:141;2309:62;2161:217;;751:5026;;14:177:17;93:13;;-1:-1:-1;;;;;135:31:17;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:225::-;561:9;;;582:11;;;579:134;;;635:10;630:3;626:20;623:1;616:31;670:4;667:1;660:15;698:4;695:1;688:15;579:134;494:225;;;;:::o;:::-;751:5026:8;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_1968":{"entryPoint":null,"id":1968,"parameterSlots":1,"returnSlots":1},"@_getValueBySlot_1987":{"entryPoint":null,"id":1987,"parameterSlots":1,"returnSlots":1},"@_setAddressBySlot_1958":{"entryPoint":null,"id":1958,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_1977":{"entryPoint":null,"id":1977,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_1948":{"entryPoint":1421,"id":1948,"parameterSlots":0,"returnSlots":0},"@getApprovedTarget_1819":{"entryPoint":2120,"id":1819,"parameterSlots":0,"returnSlots":1},"@getFirewallAdmin_1852":{"entryPoint":2072,"id":1852,"parameterSlots":0,"returnSlots":1},"@getFirewall_1842":{"entryPoint":689,"id":1842,"parameterSlots":0,"returnSlots":1},"@getUserNativeFee_1832":{"entryPoint":342,"id":1832,"parameterSlots":0,"returnSlots":1},"@setFirewallAdmin_1922":{"entryPoint":742,"id":1922,"parameterSlots":1,"returnSlots":0},"@setFirewall_1898":{"entryPoint":1719,"id":1898,"parameterSlots":1,"returnSlots":0},"@setTarget_1866":{"entryPoint":1144,"id":1866,"parameterSlots":1,"returnSlots":0},"@setUserNativeFee_1880":{"entryPoint":399,"id":1880,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":2193,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":2168,"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_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__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_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":2254,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2334:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:76:17","statements":[{"nodeType":"YulAssignment","src":"125:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:17"},"nodeType":"YulFunctionCall","src":"133:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:17"},{"name":"value0","nodeType":"YulIdentifier","src":"178:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:17"},"nodeType":"YulFunctionCall","src":"160:25:17"},"nodeType":"YulExpressionStatement","src":"160:25:17"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:17","type":""}],"src":"14:177:17"},{"body":{"nodeType":"YulBlock","src":"266:110:17","statements":[{"body":{"nodeType":"YulBlock","src":"312:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"321:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"324:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"314:6:17"},"nodeType":"YulFunctionCall","src":"314:12:17"},"nodeType":"YulExpressionStatement","src":"314:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"287:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"296:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"283:3:17"},"nodeType":"YulFunctionCall","src":"283:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"308:2:17","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"279:3:17"},"nodeType":"YulFunctionCall","src":"279:32:17"},"nodeType":"YulIf","src":"276:52:17"},{"nodeType":"YulAssignment","src":"337:33:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"360:9:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"347:12:17"},"nodeType":"YulFunctionCall","src":"347:23:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"337:6:17"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"232:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"243:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"255:6:17","type":""}],"src":"196:180:17"},{"body":{"nodeType":"YulBlock","src":"482:125:17","statements":[{"nodeType":"YulAssignment","src":"492:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"504:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"515:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"500:3:17"},"nodeType":"YulFunctionCall","src":"500:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"492:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"534:9:17"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"549:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"557:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"545:3:17"},"nodeType":"YulFunctionCall","src":"545:55:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"527:6:17"},"nodeType":"YulFunctionCall","src":"527:74:17"},"nodeType":"YulExpressionStatement","src":"527:74:17"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"451:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"462:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"473:4:17","type":""}],"src":"381:226:17"},{"body":{"nodeType":"YulBlock","src":"682:239:17","statements":[{"body":{"nodeType":"YulBlock","src":"728:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"737:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"740:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"730:6:17"},"nodeType":"YulFunctionCall","src":"730:12:17"},"nodeType":"YulExpressionStatement","src":"730:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"703:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"712:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"699:3:17"},"nodeType":"YulFunctionCall","src":"699:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"724:2:17","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"695:3:17"},"nodeType":"YulFunctionCall","src":"695:32:17"},"nodeType":"YulIf","src":"692:52:17"},{"nodeType":"YulVariableDeclaration","src":"753:36:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"779:9:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"766:12:17"},"nodeType":"YulFunctionCall","src":"766:23:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"757:5:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"875:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"884:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"887:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"877:6:17"},"nodeType":"YulFunctionCall","src":"877:12:17"},"nodeType":"YulExpressionStatement","src":"877:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"811:5:17"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"822:5:17"},{"kind":"number","nodeType":"YulLiteral","src":"829:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"818:3:17"},"nodeType":"YulFunctionCall","src":"818:54:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"808:2:17"},"nodeType":"YulFunctionCall","src":"808:65:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"801:6:17"},"nodeType":"YulFunctionCall","src":"801:73:17"},"nodeType":"YulIf","src":"798:93:17"},{"nodeType":"YulAssignment","src":"900:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"910:5:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"900:6:17"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"648:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"659:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"671:6:17","type":""}],"src":"612:309:17"},{"body":{"nodeType":"YulBlock","src":"975:233:17","statements":[{"nodeType":"YulAssignment","src":"985:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"997:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"1000:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"993:3:17"},"nodeType":"YulFunctionCall","src":"993:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"985:4:17"}]},{"body":{"nodeType":"YulBlock","src":"1034:168:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1055:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1058:77:17","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1048:6:17"},"nodeType":"YulFunctionCall","src":"1048:88:17"},"nodeType":"YulExpressionStatement","src":"1048:88:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1156:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1159:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:17"},"nodeType":"YulFunctionCall","src":"1149:15:17"},"nodeType":"YulExpressionStatement","src":"1149:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1184:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1187:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1177:6:17"},"nodeType":"YulFunctionCall","src":"1177:15:17"},"nodeType":"YulExpressionStatement","src":"1177:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"1017:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"1023:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1014:2:17"},"nodeType":"YulFunctionCall","src":"1014:11:17"},"nodeType":"YulIf","src":"1011:191:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"957:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"960:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"966:4:17","type":""}],"src":"926:282:17"},{"body":{"nodeType":"YulBlock","src":"1387:226:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1404:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1415:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1397:6:17"},"nodeType":"YulFunctionCall","src":"1397:21:17"},"nodeType":"YulExpressionStatement","src":"1397:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1438:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1449:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1434:3:17"},"nodeType":"YulFunctionCall","src":"1434:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"1454:2:17","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1427:6:17"},"nodeType":"YulFunctionCall","src":"1427:30:17"},"nodeType":"YulExpressionStatement","src":"1427:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1477:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1473:3:17"},"nodeType":"YulFunctionCall","src":"1473:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"1493:34:17","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1466:6:17"},"nodeType":"YulFunctionCall","src":"1466:62:17"},"nodeType":"YulExpressionStatement","src":"1466:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1548:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1559:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1544:3:17"},"nodeType":"YulFunctionCall","src":"1544:18:17"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"1564:6:17","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1537:6:17"},"nodeType":"YulFunctionCall","src":"1537:34:17"},"nodeType":"YulExpressionStatement","src":"1537:34:17"},{"nodeType":"YulAssignment","src":"1580:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1592:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1603:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1588:3:17"},"nodeType":"YulFunctionCall","src":"1588:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1580:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1364:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1378:4:17","type":""}],"src":"1213:400:17"},{"body":{"nodeType":"YulBlock","src":"1792:180:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1809:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1820:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1802:6:17"},"nodeType":"YulFunctionCall","src":"1802:21:17"},"nodeType":"YulExpressionStatement","src":"1802:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1843:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1854:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1839:3:17"},"nodeType":"YulFunctionCall","src":"1839:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"1859:2:17","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1832:6:17"},"nodeType":"YulFunctionCall","src":"1832:30:17"},"nodeType":"YulExpressionStatement","src":"1832:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1882:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1893:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1878:3:17"},"nodeType":"YulFunctionCall","src":"1878:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"1898:32:17","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1871:6:17"},"nodeType":"YulFunctionCall","src":"1871:60:17"},"nodeType":"YulExpressionStatement","src":"1871:60:17"},{"nodeType":"YulAssignment","src":"1940:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1952:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1963:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1948:3:17"},"nodeType":"YulFunctionCall","src":"1948:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1940:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1769:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1783:4:17","type":""}],"src":"1618:354:17"},{"body":{"nodeType":"YulBlock","src":"2151:181:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2168:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2179:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2161:6:17"},"nodeType":"YulFunctionCall","src":"2161:21:17"},"nodeType":"YulExpressionStatement","src":"2161:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2202:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2213:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2198:3:17"},"nodeType":"YulFunctionCall","src":"2198:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"2218:2:17","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2191:6:17"},"nodeType":"YulFunctionCall","src":"2191:30:17"},"nodeType":"YulExpressionStatement","src":"2191:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2241:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2252:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2237:3:17"},"nodeType":"YulFunctionCall","src":"2237:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"2257:33:17","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2230:6:17"},"nodeType":"YulFunctionCall","src":"2230:61:17"},"nodeType":"YulExpressionStatement","src":"2230:61:17"},{"nodeType":"YulAssignment","src":"2300:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2312:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2323:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2308:3:17"},"nodeType":"YulFunctionCall","src":"2308:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2300:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2128:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2142:4:17","type":""}],"src":"1977:355:17"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\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_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\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_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 abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\n    }\n}","id":17,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a35760003560e01c8063776d1a01116100765780638c36d02d1161005b5780638c36d02d14610133578063af7f27f414610146578063e79542a81461014e57600080fd5b8063776d1a01146101185780637c65c38b1461012b57600080fd5b80631498be2f146100a8578063369c87ca146100c357806351cfdd39146100d8578063734b719814610105575b600080fd5b6100b0610156565b6040519081526020015b60405180910390f35b6100d66100d1366004610878565b61018f565b005b6100e06102b1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ba565b6100d6610113366004610891565b6102e6565b6100d6610126366004610891565b610478565b6100d661058d565b6100d6610141366004610891565b6106b7565b6100e0610818565b6100e0610848565b600061018a61018660017ffa772cc97e705cdeca11bb64152cb56987b045e50611cde5b293130495205bea6108ce565b5490565b919050565b6101bd61018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461027b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e0000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ae6102a960017ffa772cc97e705cdeca11bb64152cb56987b045e50611cde5b293130495205bea6108ce565b829055565b50565b60006102e161018660017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626108ce565b905090565b61031461018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610272565b73ffffffffffffffffffffffffffffffffffffffff811661044a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610272565b6102ae6102a960017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd36108ce565b6104a661018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461055f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610272565b6102ae6102a960017f9a47a57dd949ca52baa9f4dd2008a3df675ab7e24583f22e3b264117679d741e6108ce565b6105bb61018660017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd36108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461064f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610272565b61068261067d60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b6106e561018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610272565b6107cc6102a960017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626108ce565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b60006102e161018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b60006102e161018660017f9a47a57dd949ca52baa9f4dd2008a3df675ab7e24583f22e3b264117679d741e6108ce565b60006020828403121561088a57600080fd5b5035919050565b6000602082840312156108a357600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108c757600080fd5b9392505050565b81810381811115610908577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea26469706673582212208fa626a0f6aad72ccd810aa155da854c5ddd4778956fa516b64c7788da99d35f64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x776D1A01 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x8C36D02D GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0x133 JUMPI DUP1 PUSH4 0xAF7F27F4 EQ PUSH2 0x146 JUMPI DUP1 PUSH4 0xE79542A8 EQ PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x776D1A01 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1498BE2F EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x369C87CA EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x51CFDD39 EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x105 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH2 0x156 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x878 JUMP JUMPDEST PUSH2 0x18F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE0 PUSH2 0x2B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBA JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x2E6 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x126 CALLDATASIZE PUSH1 0x4 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x478 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x58D JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x141 CALLDATASIZE PUSH1 0x4 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x6B7 JUMP JUMPDEST PUSH2 0xE0 PUSH2 0x818 JUMP JUMPDEST PUSH2 0xE0 PUSH2 0x848 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18A PUSH2 0x186 PUSH1 0x1 PUSH32 0xFA772CC97E705CDECA11BB64152CB56987B045E50611CDE5B293130495205BEA PUSH2 0x8CE JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1BD PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x27B 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 0x2AE PUSH2 0x2A9 PUSH1 0x1 PUSH32 0xFA772CC97E705CDECA11BB64152CB56987B045E50611CDE5B293130495205BEA PUSH2 0x8CE JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1 PUSH2 0x186 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x8CE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x314 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3CD 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 PUSH2 0x272 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x44A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x272 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x2A9 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x4A6 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x55F 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 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x2A9 PUSH1 0x1 PUSH32 0x9A47A57DD949CA52BAA9F4DD2008A3DF675AB7E24583F22E3B264117679D741E PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x5BB PUSH2 0x186 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x64F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x272 JUMP JUMPDEST PUSH2 0x682 PUSH2 0x67D PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x6E5 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x79E 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 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x7CC PUSH2 0x2A9 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1 PUSH2 0x186 PUSH1 0x1 PUSH32 0x9A47A57DD949CA52BAA9F4DD2008A3DF675AB7E24583F22E3B264117679D741E PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x88A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x908 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 0xA6 0x26 LOG0 0xF6 0xAA 0xD7 0x2C 0xCD DUP2 EXP LOG1 SSTORE 0xDA DUP6 0x4C 0x5D 0xDD SELFBALANCE PUSH25 0x956FA516B64C7788DA99D35F64736F6C634300081300330000 ","sourceMap":"751:5026:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2514:130;;;:::i;:::-;;;160:25:17;;;148:2;133:18;2514:130:8;;;;;;;;3454:125;;;;;;:::i;:::-;;:::i;:::-;;2650:119;;;:::i;:::-;;;557:42:17;545:55;;;527:74;;515:2;500:18;2650:119:8;381:226:17;4081:241:8;;;;;;:::i;:::-;;:::i;3178:126::-;;;;;;:::i;:::-;;:::i;4391:280::-;;;:::i;3739:176::-;;;;;;:::i;:::-;;:::i;2775:130::-;;;:::i;2384:124::-;;;:::i;2514:130::-;2565:7;2599:37;1624:49;1672:1;1632:36;1624:49;:::i;:::-;5747:12;;5625:150;2599:37;2591:46;2514:130;-1:-1:-1;2514:130:8:o;3454:125::-;1928:46;1105:48;1152:1;1113:35;1105:48;:::i;1928:46::-;1914:60;;:10;:60;;;1906:109;;;;;;;1415:2:17;1906:109:8;;;1397:21:17;1454:2;1434:18;;;1427:30;1493:34;1473:18;;;1466:62;1564:6;1544:18;;;1537:34;1588:19;;1906:109:8;;;;;;;;;3530:42:::1;1624:49;1672:1;1632:36;1624:49;:::i;:::-;3568:3:::0;5417:21;;5319:135;3530:42:::1;3454:125:::0;:::o;2650:119::-;2696:7;2722:40;931:42;972:1;939:29;931:42;:::i;2722:40::-;2715:47;;2650:119;:::o;4081:241::-;1928:46;1105:48;1152:1;1113:35;1105:48;:::i;1928:46::-;1914:60;;:10;:60;;;1906:109;;;;;;;1415:2:17;1906:109:8;;;1397:21:17;1454:2;1434:18;;;1427:30;1493:34;1473:18;;;1466:62;1564:6;1544:18;;;1537:34;1588:19;;1906:109:8;1213:400:17;1906:109:8;4176:28:::1;::::0;::::1;4168:71;;;::::0;::::1;::::0;;1820:2:17;4168:71:8::1;::::0;::::1;1802:21:17::0;1859:2;1839:18;;;1832:30;1898:32;1878:18;;;1871:60;1948:18;;4168:71:8::1;1618:354:17::0;4168:71:8::1;4249:66;1315:52;1366:1;1323:39;1315:52;:::i;3178:126::-:0;1928:46;1105:48;1152:1;1113:35;1105:48;:::i;1928:46::-;1914:60;;:10;:60;;;1906:109;;;;;;;1415:2:17;1906:109:8;;;1397:21:17;1454:2;1434:18;;;1427:30;1493:34;1473:18;;;1466:62;1564:6;1544:18;;;1537:34;1588:19;;1906:109:8;1213:400:17;1906:109:8;3250:47:::1;1511:49;1559:1;1519:36;1511:49;:::i;4391:280::-:0;4463:50;1315:52;1366:1;1323:39;1315:52;:::i;4463:50::-;4449:64;;:10;:64;;;4441:108;;;;;;;2179:2:17;4441:108:8;;;2161:21:17;2218:2;2198:18;;;2191:30;2257:33;2237:18;;;2230:61;2308:18;;4441:108:8;1977:355:17;4441:108:8;4559:58;1105:48;1152:1;1113:35;1105:48;:::i;:::-;4606:10;5417:21;;5319:135;4559:58;4632:32;;4653:10;527:74:17;;4632:32:8;;515:2:17;500:18;4632:32:8;;;;;;;4391:280::o;3739:176::-;1928:46;1105:48;1152:1;1113:35;1105:48;:::i;1928:46::-;1914:60;;:10;:60;;;1906:109;;;;;;;1415:2:17;1906:109:8;;;1397:21:17;1454:2;1434:18;;;1427:30;1493:34;1473:18;;;1466:62;1564:6;1544:18;;;1537:34;1588:19;;1906:109:8;1213:400:17;1906:109:8;3816:51:::1;931:42;972:1;939:29;931:42;:::i;3816:51::-;3882:26;::::0;557:42:17;545:55;;527:74;;3882:26:8::1;::::0;515:2:17;500:18;3882:26:8::1;;;;;;;3739:176:::0;:::o;2775:130::-;2826:7;2852:46;1105:48;1152:1;1113:35;1105:48;:::i;2384:124::-;2436:7;2462:39;1511:49;1559:1;1519:36;1511:49;:::i;196:180:17:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:17;;196:180;-1:-1:-1;196:180:17:o;612:309::-;671:6;724:2;712:9;703:7;699:23;695:32;692:52;;;740:1;737;730:12;692:52;779:9;766:23;829:42;822:5;818:54;811:5;808:65;798:93;;887:1;884;877:12;798:93;910:5;612:309;-1:-1:-1;;;612:309:17:o;926:282::-;993:9;;;1014:11;;;1011:191;;;1058:77;1055:1;1048:88;1159:4;1156:1;1149:15;1187:4;1184:1;1177:15;1011:191;926:282;;;;:::o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","getApprovedTarget()":"e79542a8","getFirewall()":"51cfdd39","getFirewallAdmin()":"af7f27f4","getUserNativeFee()":"1498be2f","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198","setTarget(address)":"776d1a01","setUserNativeFee(uint256)":"369c87ca"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getApprovedTarget\",\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"setTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setUserNativeFee\",\"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 must define a firewall contract which will manage the policies that are applied to the contract. It also must define a firewall admin which will be able to add and remove policies.\",\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"constructor\":{\"details\":\"Initializes a contract protected by a firewall, with a firewall address and a firewall admin.\"},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}},\"setTarget(address)\":{\"details\":\"Allows firewall admin to set target. IMPORTANT: Only set approved target if you know what you're doing. Anyone can cause this contract to send any data to an approved target.\",\"params\":{\"target\":\"address of the target\"}},\"setUserNativeFee(uint256)\":{\"details\":\"Allows firewall admin to set user native fee for safeFunctionCall.\",\"params\":{\"fee\":\"native fee for the user\"}}},\"title\":\"Firewall Consumer Storage Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/consumers/FirewallConsumerStorage.sol\":\"FirewallConsumerStorage\"},\"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\"]},\"contracts/consumers/FirewallConsumerStorage.sol\":{\"keccak256\":\"0x6b3145b6f6bd130dfb55836d741499e3539c595764016c35d62f35643379d7f9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://51c1e2d7d59074e80abbb52f8ce75d5b3033953f32e5b36a1967b549a3c90305\",\"dweb:/ipfs/QmQRYRvTky8CqSiGmb5zbkJMnmXLgyVfWqJMCFdwRA6oda\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumerStorage.sol\":{\"keccak256\":\"0xa8bc5a21613b7a5eb8e6647e492a6c36e3a5c6f35f488e164cd0e4f956b49b7a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://526f7bb6121658d765595817e100be4f1460c8eb801ce565ba02bf9c16a534e3\",\"dweb:/ipfs/QmZgGM3ypLHgaSWJkA6sSAg6wMXhuhVgfurC5dpVgEWqyg\"]}},\"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":"bytes","name":"targetPayload","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":"608060405234801561001057600080fd5b506108bc806100206000396000f3fe6080604052600436106100345760003560e01c80638568b4d214610039578063af076af41461004e578063f05c85821461006e575b600080fd5b61004c61004736600461069c565b6100ac565b005b34801561005a57600080fd5b5061004c61006936600461072a565b6102f8565b34801561007a57600080fd5b506100836103ef565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60006100b66103fe565b905060008173ffffffffffffffffffffffffffffffffffffffff1663e79542a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610105573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610129919061074e565b905060008273ffffffffffffffffffffffffffffffffffffffff16631498be2f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019c919061076b565b905080341015610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768206e617460448201527f6976652076616c756520666f722066656500000000000000000000000000000060648201526084015b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682898960405161025d929190610784565b60006040518083038185875af1925050503d806000811461029a576040519150601f19603f3d011682016040523d82523d6000602084013e61029f565b606091505b50509050806102ad57600080fd5b6102ed3087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061043292505050565b505050505050505050565b610300610460565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161022a565b6103ec6103e760017f7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d610794565b829055565b50565b60006103f9610460565b905090565b60006103f961042e60017f7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d610794565b5490565b60606104578383604051806060016040528060278152602001610860602791396104e2565b90505b92915050565b60008061046b6103fe565b90508073ffffffffffffffffffffffffffffffffffffffff1663af7f27f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc919061074e565b91505090565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161050c91906107f2565b600060405180830381855af49150503d8060008114610547576040519150601f19603f3d011682016040523d82523d6000602084013e61054c565b606091505b509150915061055d86838387610567565b9695505050505050565b606083156105fd5782516000036105f65773ffffffffffffffffffffffffffffffffffffffff85163b6105f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161022a565b5081610607565b610607838361060f565b949350505050565b81511561061f5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022a919061080e565b60008083601f84011261066557600080fd5b50813567ffffffffffffffff81111561067d57600080fd5b60208301915083602082850101111561069557600080fd5b9250929050565b600080600080604085870312156106b257600080fd5b843567ffffffffffffffff808211156106ca57600080fd5b6106d688838901610653565b909650945060208701359150808211156106ef57600080fd5b506106fc87828801610653565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146103ec57600080fd5b60006020828403121561073c57600080fd5b813561074781610708565b9392505050565b60006020828403121561076057600080fd5b815161074781610708565b60006020828403121561077d57600080fd5b5051919050565b8183823760009101908152919050565b8181038181111561045a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202c67d17a8d78653c41b5bc22a713112bf0f3946e8fa3a14c6d952cb23d00cd6b64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8BC 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 0x8568B4D2 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xAF076AF4 EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4C PUSH2 0x47 CALLDATASIZE PUSH1 0x4 PUSH2 0x69C JUMP JUMPDEST PUSH2 0xAC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x72A JUMP JUMPDEST PUSH2 0x2F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x83 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0xB6 PUSH2 0x3FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE79542A8 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 0x105 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 0x129 SWAP2 SWAP1 PUSH2 0x74E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1498BE2F 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 0x178 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 0x19C SWAP2 SWAP1 PUSH2 0x76B JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH2 0x233 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 JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0x25D SWAP3 SWAP2 SWAP1 PUSH2 0x784 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 0x29A 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 0x29F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2ED ADDRESS DUP8 DUP8 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 0x432 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x300 PUSH2 0x460 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3B9 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 PUSH2 0x22A JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x3E7 PUSH1 0x1 PUSH32 0x7FFA9B40FF30EBF8641C7BC9A690E086033CB7145678974A167B48D9033BA95D PUSH2 0x794 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F9 PUSH2 0x460 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F9 PUSH2 0x42E PUSH1 0x1 PUSH32 0x7FFA9B40FF30EBF8641C7BC9A690E086033CB7145678974A167B48D9033BA95D PUSH2 0x794 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x457 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x860 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x4E2 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x46B PUSH2 0x3FE JUMP JUMPDEST SWAP1 POP 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 0x4B8 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 0x4DC SWAP2 SWAP1 PUSH2 0x74E JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x50C SWAP2 SWAP1 PUSH2 0x7F2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x547 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 0x54C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x55D DUP7 DUP4 DUP4 DUP8 PUSH2 0x567 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x5FD JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x5F6 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0x5F6 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 0x22A JUMP JUMPDEST POP DUP2 PUSH2 0x607 JUMP JUMPDEST PUSH2 0x607 DUP4 DUP4 PUSH2 0x60F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x61F JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22A SWAP2 SWAP1 PUSH2 0x80E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6D6 DUP9 DUP4 DUP10 ADD PUSH2 0x653 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6FC DUP8 DUP3 DUP9 ADD PUSH2 0x653 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x73C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x747 DUP2 PUSH2 0x708 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x760 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x747 DUP2 PUSH2 0x708 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x77D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x45A JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7E9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7D1 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x804 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x7CE 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 0x82D DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x7CE 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 0x706673582212202C67D1 PUSH27 0x8D78653C41B5BC22A713112BF0F3946E8FA3A14C6D952CB23D00CD PUSH12 0x64736F6C6343000813003300 ","sourceMap":"836:4618:9:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_2232":{"entryPoint":null,"id":2232,"parameterSlots":1,"returnSlots":1},"@_getFirewallAdmin_2201":{"entryPoint":1120,"id":2201,"parameterSlots":0,"returnSlots":1},"@_getFirewallConsumerStorage_2212":{"entryPoint":1022,"id":2212,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":1551,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_2222":{"entryPoint":null,"id":2222,"parameterSlots":2,"returnSlots":0},"@firewallAdmin_2157":{"entryPoint":1007,"id":2157,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":1074,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":1250,"id":744,"parameterSlots":3,"returnSlots":1},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_2147":{"entryPoint":172,"id":2147,"parameterSlots":4,"returnSlots":0},"@setFirewallConsumerStorage_2170":{"entryPoint":760,"id":2170,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_783":{"entryPoint":1383,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":1619,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":1834,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":1870,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":1692,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":1899,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1924,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":2034,"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":2062,"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":1940,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1998,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_address":{"entryPoint":1800,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4923:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"86:275:17","statements":[{"body":{"nodeType":"YulBlock","src":"135:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"144:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"147:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"137:6:17"},"nodeType":"YulFunctionCall","src":"137:12:17"},"nodeType":"YulExpressionStatement","src":"137:12:17"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"114:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"122:4:17","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"110:3:17"},"nodeType":"YulFunctionCall","src":"110:17:17"},{"name":"end","nodeType":"YulIdentifier","src":"129:3:17"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"106:3:17"},"nodeType":"YulFunctionCall","src":"106:27:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"99:6:17"},"nodeType":"YulFunctionCall","src":"99:35:17"},"nodeType":"YulIf","src":"96:55:17"},{"nodeType":"YulAssignment","src":"160:30:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"183:6:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"170:12:17"},"nodeType":"YulFunctionCall","src":"170:20:17"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"160:6:17"}]},{"body":{"nodeType":"YulBlock","src":"233:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"242:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"245:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"235:6:17"},"nodeType":"YulFunctionCall","src":"235:12:17"},"nodeType":"YulExpressionStatement","src":"235:12:17"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"205:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"213:18:17","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"202:2:17"},"nodeType":"YulFunctionCall","src":"202:30:17"},"nodeType":"YulIf","src":"199:50:17"},{"nodeType":"YulAssignment","src":"258:29:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"274:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"282:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"270:3:17"},"nodeType":"YulFunctionCall","src":"270:17:17"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"258:8:17"}]},{"body":{"nodeType":"YulBlock","src":"339:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"348:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"351:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"341:6:17"},"nodeType":"YulFunctionCall","src":"341:12:17"},"nodeType":"YulExpressionStatement","src":"341:12:17"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"310:6:17"},{"name":"length","nodeType":"YulIdentifier","src":"318:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"306:3:17"},"nodeType":"YulFunctionCall","src":"306:19:17"},{"kind":"number","nodeType":"YulLiteral","src":"327:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"302:3:17"},"nodeType":"YulFunctionCall","src":"302:30:17"},{"name":"end","nodeType":"YulIdentifier","src":"334:3:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"299:2:17"},"nodeType":"YulFunctionCall","src":"299:39:17"},"nodeType":"YulIf","src":"296:59:17"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"49:6:17","type":""},{"name":"end","nodeType":"YulTypedName","src":"57:3:17","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"65:8:17","type":""},{"name":"length","nodeType":"YulTypedName","src":"75:6:17","type":""}],"src":"14:347:17"},{"body":{"nodeType":"YulBlock","src":"491:592:17","statements":[{"body":{"nodeType":"YulBlock","src":"537:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"546:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"549:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"539:6:17"},"nodeType":"YulFunctionCall","src":"539:12:17"},"nodeType":"YulExpressionStatement","src":"539:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"512:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"521:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"508:3:17"},"nodeType":"YulFunctionCall","src":"508:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"533:2:17","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"504:3:17"},"nodeType":"YulFunctionCall","src":"504:32:17"},"nodeType":"YulIf","src":"501:52:17"},{"nodeType":"YulVariableDeclaration","src":"562:37:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"589:9:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"576:12:17"},"nodeType":"YulFunctionCall","src":"576:23:17"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"566:6:17","type":""}]},{"nodeType":"YulVariableDeclaration","src":"608:28:17","value":{"kind":"number","nodeType":"YulLiteral","src":"618:18:17","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"612:2:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"663:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"675:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"665:6:17"},"nodeType":"YulFunctionCall","src":"665:12:17"},"nodeType":"YulExpressionStatement","src":"665:12:17"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"651:6:17"},{"name":"_1","nodeType":"YulIdentifier","src":"659:2:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"648:2:17"},"nodeType":"YulFunctionCall","src":"648:14:17"},"nodeType":"YulIf","src":"645:34:17"},{"nodeType":"YulVariableDeclaration","src":"688:84:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"744:9:17"},{"name":"offset","nodeType":"YulIdentifier","src":"755:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"740:3:17"},"nodeType":"YulFunctionCall","src":"740:22:17"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"764:7:17"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"714:25:17"},"nodeType":"YulFunctionCall","src":"714:58:17"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"692:8:17","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"702:8:17","type":""}]},{"nodeType":"YulAssignment","src":"781:18:17","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"791:8:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"781:6:17"}]},{"nodeType":"YulAssignment","src":"808:18:17","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"818:8:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"808:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"835:48:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"868:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"879:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"864:3:17"},"nodeType":"YulFunctionCall","src":"864:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"851:12:17"},"nodeType":"YulFunctionCall","src":"851:32:17"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"839:8:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"912:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"921:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"924:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"914:6:17"},"nodeType":"YulFunctionCall","src":"914:12:17"},"nodeType":"YulExpressionStatement","src":"914:12:17"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"898:8:17"},{"name":"_1","nodeType":"YulIdentifier","src":"908:2:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"895:2:17"},"nodeType":"YulFunctionCall","src":"895:16:17"},"nodeType":"YulIf","src":"892:36:17"},{"nodeType":"YulVariableDeclaration","src":"937:86:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"993:9:17"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1004:8:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"989:3:17"},"nodeType":"YulFunctionCall","src":"989:24:17"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1015:7:17"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"963:25:17"},"nodeType":"YulFunctionCall","src":"963:60:17"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"941:8:17","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"951:8:17","type":""}]},{"nodeType":"YulAssignment","src":"1032:18:17","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1042:8:17"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1032:6:17"}]},{"nodeType":"YulAssignment","src":"1059:18:17","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1069:8:17"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1059:6:17"}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"433:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"444:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"456:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"464:6:17","type":""},{"name":"value2","nodeType":"YulTypedName","src":"472:6:17","type":""},{"name":"value3","nodeType":"YulTypedName","src":"480:6:17","type":""}],"src":"366:717:17"},{"body":{"nodeType":"YulBlock","src":"1133:109:17","statements":[{"body":{"nodeType":"YulBlock","src":"1220:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1229:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1232:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1222:6:17"},"nodeType":"YulFunctionCall","src":"1222:12:17"},"nodeType":"YulExpressionStatement","src":"1222:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1156:5:17"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1167:5:17"},{"kind":"number","nodeType":"YulLiteral","src":"1174:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1163:3:17"},"nodeType":"YulFunctionCall","src":"1163:54:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1153:2:17"},"nodeType":"YulFunctionCall","src":"1153:65:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1146:6:17"},"nodeType":"YulFunctionCall","src":"1146:73:17"},"nodeType":"YulIf","src":"1143:93:17"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1122:5:17","type":""}],"src":"1088:154:17"},{"body":{"nodeType":"YulBlock","src":"1317:177:17","statements":[{"body":{"nodeType":"YulBlock","src":"1363:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1372:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1375:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1365:6:17"},"nodeType":"YulFunctionCall","src":"1365:12:17"},"nodeType":"YulExpressionStatement","src":"1365:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1338:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"1347:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1334:3:17"},"nodeType":"YulFunctionCall","src":"1334:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"1359:2:17","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1330:3:17"},"nodeType":"YulFunctionCall","src":"1330:32:17"},"nodeType":"YulIf","src":"1327:52:17"},{"nodeType":"YulVariableDeclaration","src":"1388:36:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1414:9:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1401:12:17"},"nodeType":"YulFunctionCall","src":"1401:23:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1392:5:17","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1458:5:17"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1433:24:17"},"nodeType":"YulFunctionCall","src":"1433:31:17"},"nodeType":"YulExpressionStatement","src":"1433:31:17"},{"nodeType":"YulAssignment","src":"1473:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"1483:5:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1473:6:17"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1283:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1294:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1306:6:17","type":""}],"src":"1247:247:17"},{"body":{"nodeType":"YulBlock","src":"1600:125:17","statements":[{"nodeType":"YulAssignment","src":"1610:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1622:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1633:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1618:3:17"},"nodeType":"YulFunctionCall","src":"1618:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1610:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1652:9:17"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1667:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"1675:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1663:3:17"},"nodeType":"YulFunctionCall","src":"1663:55:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1645:6:17"},"nodeType":"YulFunctionCall","src":"1645:74:17"},"nodeType":"YulExpressionStatement","src":"1645:74:17"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1569:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1580:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1591:4:17","type":""}],"src":"1499:226:17"},{"body":{"nodeType":"YulBlock","src":"1811:170:17","statements":[{"body":{"nodeType":"YulBlock","src":"1857:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1866:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1869:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1859:6:17"},"nodeType":"YulFunctionCall","src":"1859:12:17"},"nodeType":"YulExpressionStatement","src":"1859:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1832:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"1841:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1828:3:17"},"nodeType":"YulFunctionCall","src":"1828:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"1853:2:17","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1824:3:17"},"nodeType":"YulFunctionCall","src":"1824:32:17"},"nodeType":"YulIf","src":"1821:52:17"},{"nodeType":"YulVariableDeclaration","src":"1882:29:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1901:9:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1895:5:17"},"nodeType":"YulFunctionCall","src":"1895:16:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1886:5:17","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1945:5:17"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1920:24:17"},"nodeType":"YulFunctionCall","src":"1920:31:17"},"nodeType":"YulExpressionStatement","src":"1920:31:17"},{"nodeType":"YulAssignment","src":"1960:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"1970:5:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1960:6:17"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1777:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1788:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1800:6:17","type":""}],"src":"1730:251:17"},{"body":{"nodeType":"YulBlock","src":"2067:103:17","statements":[{"body":{"nodeType":"YulBlock","src":"2113:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2122:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2125:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2115:6:17"},"nodeType":"YulFunctionCall","src":"2115:12:17"},"nodeType":"YulExpressionStatement","src":"2115:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2088:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"2097:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2084:3:17"},"nodeType":"YulFunctionCall","src":"2084:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"2109:2:17","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2080:3:17"},"nodeType":"YulFunctionCall","src":"2080:32:17"},"nodeType":"YulIf","src":"2077:52:17"},{"nodeType":"YulAssignment","src":"2138:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2154:9:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2148:5:17"},"nodeType":"YulFunctionCall","src":"2148:16:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2138:6:17"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2033:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2044:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2056:6:17","type":""}],"src":"1986:184:17"},{"body":{"nodeType":"YulBlock","src":"2349:239:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2366:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2377:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2359:6:17"},"nodeType":"YulFunctionCall","src":"2359:21:17"},"nodeType":"YulExpressionStatement","src":"2359:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2400:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2411:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2396:3:17"},"nodeType":"YulFunctionCall","src":"2396:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"2416:2:17","type":"","value":"49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2389:6:17"},"nodeType":"YulFunctionCall","src":"2389:30:17"},"nodeType":"YulExpressionStatement","src":"2389:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2439:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2450:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:17"},"nodeType":"YulFunctionCall","src":"2435:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768206e6174","kind":"string","nodeType":"YulLiteral","src":"2455:34:17","type":"","value":"FirewallConsumer: Not enough nat"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2428:6:17"},"nodeType":"YulFunctionCall","src":"2428:62:17"},"nodeType":"YulExpressionStatement","src":"2428:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2510:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2521:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2506:3:17"},"nodeType":"YulFunctionCall","src":"2506:18:17"},{"hexValue":"6976652076616c756520666f7220666565","kind":"string","nodeType":"YulLiteral","src":"2526:19:17","type":"","value":"ive value for fee"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2499:6:17"},"nodeType":"YulFunctionCall","src":"2499:47:17"},"nodeType":"YulExpressionStatement","src":"2499:47:17"},{"nodeType":"YulAssignment","src":"2555:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2567:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2578:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2563:3:17"},"nodeType":"YulFunctionCall","src":"2563:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2555:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_07febfd97e0fd373aad0774c26ec4d8253768884ed8a5ab3a228f46a0ba43d3c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2326:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2340:4:17","type":""}],"src":"2175:413:17"},{"body":{"nodeType":"YulBlock","src":"2740:124:17","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2763:3:17"},{"name":"value0","nodeType":"YulIdentifier","src":"2768:6:17"},{"name":"value1","nodeType":"YulIdentifier","src":"2776:6:17"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2750:12:17"},"nodeType":"YulFunctionCall","src":"2750:33:17"},"nodeType":"YulExpressionStatement","src":"2750:33:17"},{"nodeType":"YulVariableDeclaration","src":"2792:26:17","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2806:3:17"},{"name":"value1","nodeType":"YulIdentifier","src":"2811:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2802:3:17"},"nodeType":"YulFunctionCall","src":"2802:16:17"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2796:2:17","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2834:2:17"},{"kind":"number","nodeType":"YulLiteral","src":"2838:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2827:6:17"},"nodeType":"YulFunctionCall","src":"2827:13:17"},"nodeType":"YulExpressionStatement","src":"2827:13:17"},{"nodeType":"YulAssignment","src":"2849:9:17","value":{"name":"_1","nodeType":"YulIdentifier","src":"2856:2:17"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2849:3:17"}]}]},"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":"2708:3:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2713:6:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2721:6:17","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2732:3:17","type":""}],"src":"2593:271:17"},{"body":{"nodeType":"YulBlock","src":"3043:226:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3060:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3071:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3053:6:17"},"nodeType":"YulFunctionCall","src":"3053:21:17"},"nodeType":"YulExpressionStatement","src":"3053:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3094:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3105:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3090:3:17"},"nodeType":"YulFunctionCall","src":"3090:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"3110:2:17","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3083:6:17"},"nodeType":"YulFunctionCall","src":"3083:30:17"},"nodeType":"YulExpressionStatement","src":"3083:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3133:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3144:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3129:3:17"},"nodeType":"YulFunctionCall","src":"3129:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"3149:34:17","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3122:6:17"},"nodeType":"YulFunctionCall","src":"3122:62:17"},"nodeType":"YulExpressionStatement","src":"3122:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3204:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3215:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3200:3:17"},"nodeType":"YulFunctionCall","src":"3200:18:17"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"3220:6:17","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3193:6:17"},"nodeType":"YulFunctionCall","src":"3193:34:17"},"nodeType":"YulExpressionStatement","src":"3193:34:17"},{"nodeType":"YulAssignment","src":"3236:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3248:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3259:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3244:3:17"},"nodeType":"YulFunctionCall","src":"3244:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3236:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3020:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3034:4:17","type":""}],"src":"2869:400:17"},{"body":{"nodeType":"YulBlock","src":"3323:233:17","statements":[{"nodeType":"YulAssignment","src":"3333:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3345:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"3348:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3341:3:17"},"nodeType":"YulFunctionCall","src":"3341:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"3333:4:17"}]},{"body":{"nodeType":"YulBlock","src":"3382:168:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3403:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3406:77:17","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3396:6:17"},"nodeType":"YulFunctionCall","src":"3396:88:17"},"nodeType":"YulExpressionStatement","src":"3396:88:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3504:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3507:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3497:6:17"},"nodeType":"YulFunctionCall","src":"3497:15:17"},"nodeType":"YulExpressionStatement","src":"3497:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3532:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3535:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3525:6:17"},"nodeType":"YulFunctionCall","src":"3525:15:17"},"nodeType":"YulExpressionStatement","src":"3525:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"3365:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"3371:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3362:2:17"},"nodeType":"YulFunctionCall","src":"3362:11:17"},"nodeType":"YulIf","src":"3359:191:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3305:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"3308:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"3314:4:17","type":""}],"src":"3274:282:17"},{"body":{"nodeType":"YulBlock","src":"3627:184:17","statements":[{"nodeType":"YulVariableDeclaration","src":"3637:10:17","value":{"kind":"number","nodeType":"YulLiteral","src":"3646:1:17","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3641:1:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"3706:63:17","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3731:3:17"},{"name":"i","nodeType":"YulIdentifier","src":"3736:1:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3727:3:17"},"nodeType":"YulFunctionCall","src":"3727:11:17"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3750:3:17"},{"name":"i","nodeType":"YulIdentifier","src":"3755:1:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3746:3:17"},"nodeType":"YulFunctionCall","src":"3746:11:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3740:5:17"},"nodeType":"YulFunctionCall","src":"3740:18:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3720:6:17"},"nodeType":"YulFunctionCall","src":"3720:39:17"},"nodeType":"YulExpressionStatement","src":"3720:39:17"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3667:1:17"},{"name":"length","nodeType":"YulIdentifier","src":"3670:6:17"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3664:2:17"},"nodeType":"YulFunctionCall","src":"3664:13:17"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3678:19:17","statements":[{"nodeType":"YulAssignment","src":"3680:15:17","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3689:1:17"},{"kind":"number","nodeType":"YulLiteral","src":"3692:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3685:3:17"},"nodeType":"YulFunctionCall","src":"3685:10:17"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3680:1:17"}]}]},"pre":{"nodeType":"YulBlock","src":"3660:3:17","statements":[]},"src":"3656:113:17"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3789:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"3794:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3785:3:17"},"nodeType":"YulFunctionCall","src":"3785:16:17"},{"kind":"number","nodeType":"YulLiteral","src":"3803:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3778:6:17"},"nodeType":"YulFunctionCall","src":"3778:27:17"},"nodeType":"YulExpressionStatement","src":"3778:27:17"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3605:3:17","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3610:3:17","type":""},{"name":"length","nodeType":"YulTypedName","src":"3615:6:17","type":""}],"src":"3561:250:17"},{"body":{"nodeType":"YulBlock","src":"3953:150:17","statements":[{"nodeType":"YulVariableDeclaration","src":"3963:27:17","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3983:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3977:5:17"},"nodeType":"YulFunctionCall","src":"3977:13:17"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3967:6:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4038:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"4046:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4034:3:17"},"nodeType":"YulFunctionCall","src":"4034:17:17"},{"name":"pos","nodeType":"YulIdentifier","src":"4053:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"4058:6:17"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"3999:34:17"},"nodeType":"YulFunctionCall","src":"3999:66:17"},"nodeType":"YulExpressionStatement","src":"3999:66:17"},{"nodeType":"YulAssignment","src":"4074:23:17","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4085:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"4090:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4081:3:17"},"nodeType":"YulFunctionCall","src":"4081:16:17"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4074:3:17"}]}]},"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":"3929:3:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3934:6:17","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3945:3:17","type":""}],"src":"3816:287:17"},{"body":{"nodeType":"YulBlock","src":"4282:179:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4299:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4310:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4292:6:17"},"nodeType":"YulFunctionCall","src":"4292:21:17"},"nodeType":"YulExpressionStatement","src":"4292:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4333:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4344:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4329:3:17"},"nodeType":"YulFunctionCall","src":"4329:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4349:2:17","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4322:6:17"},"nodeType":"YulFunctionCall","src":"4322:30:17"},"nodeType":"YulExpressionStatement","src":"4322:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4372:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4383:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4368:3:17"},"nodeType":"YulFunctionCall","src":"4368:18:17"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"4388:31:17","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4361:6:17"},"nodeType":"YulFunctionCall","src":"4361:59:17"},"nodeType":"YulExpressionStatement","src":"4361:59:17"},{"nodeType":"YulAssignment","src":"4429:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4441:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4452:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4437:3:17"},"nodeType":"YulFunctionCall","src":"4437:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4429:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4259:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4273:4:17","type":""}],"src":"4108:353:17"},{"body":{"nodeType":"YulBlock","src":"4587:334:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4604:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4615:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4597:6:17"},"nodeType":"YulFunctionCall","src":"4597:21:17"},"nodeType":"YulExpressionStatement","src":"4597:21:17"},{"nodeType":"YulVariableDeclaration","src":"4627:27:17","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4647:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4641:5:17"},"nodeType":"YulFunctionCall","src":"4641:13:17"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4631:6:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4674:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4685:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4670:3:17"},"nodeType":"YulFunctionCall","src":"4670:18:17"},{"name":"length","nodeType":"YulIdentifier","src":"4690:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4663:6:17"},"nodeType":"YulFunctionCall","src":"4663:34:17"},"nodeType":"YulExpressionStatement","src":"4663:34:17"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4745:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"4753:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4741:3:17"},"nodeType":"YulFunctionCall","src":"4741:15:17"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4762:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4773:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4758:3:17"},"nodeType":"YulFunctionCall","src":"4758:18:17"},{"name":"length","nodeType":"YulIdentifier","src":"4778:6:17"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4706:34:17"},"nodeType":"YulFunctionCall","src":"4706:79:17"},"nodeType":"YulExpressionStatement","src":"4706:79:17"},{"nodeType":"YulAssignment","src":"4794:121:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4810:9:17"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4829:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"4837:2:17","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4825:3:17"},"nodeType":"YulFunctionCall","src":"4825:15:17"},{"kind":"number","nodeType":"YulLiteral","src":"4842:66:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4821:3:17"},"nodeType":"YulFunctionCall","src":"4821:88:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4806:3:17"},"nodeType":"YulFunctionCall","src":"4806:104:17"},{"kind":"number","nodeType":"YulLiteral","src":"4912:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4802:3:17"},"nodeType":"YulFunctionCall","src":"4802:113:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4794:4:17"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4556:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4567:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4578:4:17","type":""}],"src":"4466:455:17"}]},"contents":"{\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_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\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_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_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_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\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 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 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":17,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100345760003560e01c80638568b4d214610039578063af076af41461004e578063f05c85821461006e575b600080fd5b61004c61004736600461069c565b6100ac565b005b34801561005a57600080fd5b5061004c61006936600461072a565b6102f8565b34801561007a57600080fd5b506100836103ef565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60006100b66103fe565b905060008173ffffffffffffffffffffffffffffffffffffffff1663e79542a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610105573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610129919061074e565b905060008273ffffffffffffffffffffffffffffffffffffffff16631498be2f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019c919061076b565b905080341015610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768206e617460448201527f6976652076616c756520666f722066656500000000000000000000000000000060648201526084015b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682898960405161025d929190610784565b60006040518083038185875af1925050503d806000811461029a576040519150601f19603f3d011682016040523d82523d6000602084013e61029f565b606091505b50509050806102ad57600080fd5b6102ed3087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061043292505050565b505050505050505050565b610300610460565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161022a565b6103ec6103e760017f7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d610794565b829055565b50565b60006103f9610460565b905090565b60006103f961042e60017f7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d610794565b5490565b60606104578383604051806060016040528060278152602001610860602791396104e2565b90505b92915050565b60008061046b6103fe565b90508073ffffffffffffffffffffffffffffffffffffffff1663af7f27f46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc919061074e565b91505090565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161050c91906107f2565b600060405180830381855af49150503d8060008114610547576040519150601f19603f3d011682016040523d82523d6000602084013e61054c565b606091505b509150915061055d86838387610567565b9695505050505050565b606083156105fd5782516000036105f65773ffffffffffffffffffffffffffffffffffffffff85163b6105f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161022a565b5081610607565b610607838361060f565b949350505050565b81511561061f5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022a919061080e565b60008083601f84011261066557600080fd5b50813567ffffffffffffffff81111561067d57600080fd5b60208301915083602082850101111561069557600080fd5b9250929050565b600080600080604085870312156106b257600080fd5b843567ffffffffffffffff808211156106ca57600080fd5b6106d688838901610653565b909650945060208701359150808211156106ef57600080fd5b506106fc87828801610653565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff811681146103ec57600080fd5b60006020828403121561073c57600080fd5b813561074781610708565b9392505050565b60006020828403121561076057600080fd5b815161074781610708565b60006020828403121561077d57600080fd5b5051919050565b8183823760009101908152919050565b8181038181111561045a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60005b838110156107e95781810151838201526020016107d1565b50506000910152565b600082516108048184602087016107ce565b9190910192915050565b602081526000825180602084015261082d8160408501602087016107ce565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202c67d17a8d78653c41b5bc22a713112bf0f3946e8fa3a14c6d952cb23d00cd6b64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8568B4D2 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xAF076AF4 EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4C PUSH2 0x47 CALLDATASIZE PUSH1 0x4 PUSH2 0x69C JUMP JUMPDEST PUSH2 0xAC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x72A JUMP JUMPDEST PUSH2 0x2F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x83 PUSH2 0x3EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0xB6 PUSH2 0x3FE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE79542A8 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 0x105 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 0x129 SWAP2 SWAP1 PUSH2 0x74E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1498BE2F 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 0x178 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 0x19C SWAP2 SWAP1 PUSH2 0x76B JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH2 0x233 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 JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0x25D SWAP3 SWAP2 SWAP1 PUSH2 0x784 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 0x29A 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 0x29F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2ED ADDRESS DUP8 DUP8 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 0x432 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x300 PUSH2 0x460 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3B9 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 PUSH2 0x22A JUMP JUMPDEST PUSH2 0x3EC PUSH2 0x3E7 PUSH1 0x1 PUSH32 0x7FFA9B40FF30EBF8641C7BC9A690E086033CB7145678974A167B48D9033BA95D PUSH2 0x794 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F9 PUSH2 0x460 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F9 PUSH2 0x42E PUSH1 0x1 PUSH32 0x7FFA9B40FF30EBF8641C7BC9A690E086033CB7145678974A167B48D9033BA95D PUSH2 0x794 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x457 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x860 PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x4E2 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x46B PUSH2 0x3FE JUMP JUMPDEST SWAP1 POP 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 0x4B8 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 0x4DC SWAP2 SWAP1 PUSH2 0x74E JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x50C SWAP2 SWAP1 PUSH2 0x7F2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x547 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 0x54C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x55D DUP7 DUP4 DUP4 DUP8 PUSH2 0x567 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x5FD JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x5F6 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0x5F6 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 0x22A JUMP JUMPDEST POP DUP2 PUSH2 0x607 JUMP JUMPDEST PUSH2 0x607 DUP4 DUP4 PUSH2 0x60F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x61F JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22A SWAP2 SWAP1 PUSH2 0x80E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x665 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x695 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x6D6 DUP9 DUP4 DUP10 ADD PUSH2 0x653 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x6EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6FC DUP8 DUP3 DUP9 ADD PUSH2 0x653 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x73C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x747 DUP2 PUSH2 0x708 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x760 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x747 DUP2 PUSH2 0x708 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x77D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x45A JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7E9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x7D1 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x804 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x7CE 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 0x82D DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x7CE 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 0x706673582212202C67D1 PUSH27 0x8D78653C41B5BC22A713112BF0F3946E8FA3A14C6D952CB23D00CD PUSH12 0x64736F6C6343000813003300 ","sourceMap":"836:4618:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3049:653;;;;;;:::i;:::-;;:::i;:::-;;3879:189;;;;;;;;;;-1:-1:-1;3879:189:9;;;;;:::i;:::-;;:::i;3773:100::-;;;;;;;;;;;;;:::i;:::-;;;1675:42:17;1663:55;;;1645:74;;1633:2;1618:18;3773:100:9;;;;;;;3049:653;3175:31;3209:29;:27;:29::i;:::-;3175:63;;3248:14;3290:23;3265:67;;;:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3248:86;;3344:21;3393:23;3368:66;;;:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3344:92;;3467:13;3454:9;:26;;3446:88;;;;;;;2377:2:17;3446:88:9;;;2359:21:17;2416:2;2396:18;;;2389:30;2455:34;2435:18;;;2428:62;2526:19;2506:18;;;2499:47;2563:19;;3446:88:9;;;;;;;;;3545:12;3562:6;:11;;3581:13;3596;;3562:48;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3544:66;;;3628:7;3620:16;;;;;;3646:49;3683:4;3690;;3646:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3646:28:9;;-1:-1:-1;;;3646:49:9:i;:::-;;3165:537;;;;3049:653;;;;:::o;3879:189::-;2368:19;:17;:19::i;:::-;2354:33;;:10;:33;;;2346:82;;;;;;;3071:2:17;2346:82:9;;;3053:21:17;3110:2;3090:18;;;3083:30;3149:34;3129:18;;;3122:62;3220:6;3200:18;;;3193:34;3244:19;;2346:82:9;2869:400:17;2346:82:9;3986:75:::1;1051:59;1109:1;1059:46;1051:59;:::i;:::-;4036:24:::0;5080:23;;4978:141;3986:75:::1;3879:189:::0;:::o;3773:100::-;3821:7;3847:19;:17;:19::i;:::-;3840:26;;3773:100;:::o;4664:144::-;4726:7;4752:49;1051:59;1109:1;1059:46;1051:59;:::i;:::-;5423:12;;5295:156;6674:198:2;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;;6674:198;;;;;:::o;4356:226:9:-;4408:7;4427:31;4461:29;:27;:29::i;:::-;4427:63;;4532:23;4507:66;;;:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4500:75;;;4356:226;:::o;7058:325:2:-;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;;;;;;;4310:2:17;8113:60:2;;;4292:21:17;4349:2;4329:18;;;4322:30;4388:31;4368:18;;;4361:59;4437:18;;8113:60:2;4108:353:17;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:347:17:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:17;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:717::-;456:6;464;472;480;533:2;521:9;512:7;508:23;504:32;501:52;;;549:1;546;539:12;501:52;589:9;576:23;618:18;659:2;651:6;648:14;645:34;;;675:1;672;665:12;645:34;714:58;764:7;755:6;744:9;740:22;714:58;:::i;:::-;791:8;;-1:-1:-1;688:84:17;-1:-1:-1;879:2:17;864:18;;851:32;;-1:-1:-1;895:16:17;;;892:36;;;924:1;921;914:12;892:36;;963:60;1015:7;1004:8;993:9;989:24;963:60;:::i;:::-;366:717;;;;-1:-1:-1;1042:8:17;-1:-1:-1;;;;366:717:17:o;1088:154::-;1174:42;1167:5;1163:54;1156:5;1153:65;1143:93;;1232:1;1229;1222:12;1247:247;1306:6;1359:2;1347:9;1338:7;1334:23;1330:32;1327:52;;;1375:1;1372;1365:12;1327:52;1414:9;1401:23;1433:31;1458:5;1433:31;:::i;:::-;1483:5;1247:247;-1:-1:-1;;;1247:247:17:o;1730:251::-;1800:6;1853:2;1841:9;1832:7;1828:23;1824:32;1821:52;;;1869:1;1866;1859:12;1821:52;1901:9;1895:16;1920:31;1945:5;1920:31;:::i;1986:184::-;2056:6;2109:2;2097:9;2088:7;2084:23;2080:32;2077:52;;;2125:1;2122;2115:12;2077:52;-1:-1:-1;2148:16:17;;1986:184;-1:-1:-1;1986:184:17:o;2593:271::-;2776:6;2768;2763:3;2750:33;2732:3;2802:16;;2827:13;;;2802:16;2593:271;-1:-1:-1;2593:271:17:o;3274:282::-;3341:9;;;3362:11;;;3359:191;;;3406:77;3403:1;3396:88;3507:4;3504:1;3497:15;3535:4;3532:1;3525:15;3561:250;3646:1;3656:113;3670:6;3667:1;3664:13;3656:113;;;3746:11;;;3740:18;3727:11;;;3720:39;3692:2;3685:10;3656:113;;;-1:-1:-1;;3803:1:17;3785:16;;3778:27;3561:250::o;3816:287::-;3945:3;3983:6;3977:13;3999:66;4058:6;4053:3;4046:4;4038:6;4034:17;3999:66;:::i;:::-;4081:16;;;;;3816:287;-1:-1:-1;;3816:287:17:o;4466:455::-;4615:2;4604:9;4597:21;4578:4;4647:6;4641:13;4690:6;4685:2;4674:9;4670:18;4663:34;4706:79;4778:6;4773:2;4762:9;4758:18;4753:2;4745:6;4741:15;4706:79;:::i;:::-;4837:2;4825:15;4842:66;4821:88;4806:104;;;;4912:2;4802:113;;4466:455;-1:-1:-1;;4466:455:17:o"},"methodIdentifiers":{"firewallAdmin()":"f05c8582","safeFunctionCall(bytes,bytes)":"8568b4d2","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\":\"bytes\",\"name\":\"targetPayload\",\"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(bytes,bytes)\":{\"details\":\"Allows calling an approved external target 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 target call\",\"targetPayload\":\"payload to be sent to the target\"}}},\"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\":\"0xf4fc3080e620a667205525f643ecda0ede73d6defecccc5ac24d72e3b2252a99\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8957346d6f70f96ecd1fd216ce9e78bbae1cee7462c0ea2a887cb8083e25f680\",\"dweb:/ipfs/QmU58aSedRsoZp4sBkV6a6VGQ9rJ9fDBC4KFfKtTgPsd9x\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0xb9ee7c4bd6e08fd9a5b7945d405604c563b7aa91f06ed46f8eedeae8c5156898\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://858fb99b602da6e34e51e1a40ee945921006c84c08454f22495b224c3abd0ec3\",\"dweb:/ipfs/QmWDFoDrTX2FFjcyY3aooeZxo5TX7sxmoQ3UhcZo7ccGsx\"]},\"contracts/interfaces/IFirewallConsumerStorage.sol\":{\"keccak256\":\"0xa8bc5a21613b7a5eb8e6647e492a6c36e3a5c6f35f488e164cd0e4f956b49b7a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://526f7bb6121658d765595817e100be4f1460c8eb801ce565ba02bf9c16a534e3\",\"dweb:/ipfs/QmZgGM3ypLHgaSWJkA6sSAg6wMXhuhVgfurC5dpVgEWqyg\"]}},\"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":"nonpayable","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\":\"nonpayable\",\"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\":\"0xb9ee7c4bd6e08fd9a5b7945d405604c563b7aa91f06ed46f8eedeae8c5156898\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://858fb99b602da6e34e51e1a40ee945921006c84c08454f22495b224c3abd0ec3\",\"dweb:/ipfs/QmWDFoDrTX2FFjcyY3aooeZxo5TX7sxmoQ3UhcZo7ccGsx\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/interfaces/IFirewallConsumerStorage.sol":{"IFirewallConsumerStorage":{"abi":[{"inputs":[],"name":"getApprovedTarget","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":{"getApprovedTarget()":"e79542a8","getFirewall()":"51cfdd39","getFirewallAdmin()":"af7f27f4","getUserNativeFee()":"1498be2f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getApprovedTarget\",\"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\":\"0xa8bc5a21613b7a5eb8e6647e492a6c36e3a5c6f35f488e164cd0e4f956b49b7a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://526f7bb6121658d765595817e100be4f1460c8eb801ce565ba02bf9c16a534e3\",\"dweb:/ipfs/QmZgGM3ypLHgaSWJkA6sSAg6wMXhuhVgfurC5dpVgEWqyg\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/interfaces/IOwnable.sol":{"IOwnable":{"abi":[{"inputs":[],"name":"owner","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":{"owner()":"8da5cb5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"owner\",\"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/IOwnable.sol\":\"IOwnable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IOwnable.sol\":{\"keccak256\":\"0x45b2b806b3c3f90bf684380d722f23d9de67651f3fb6715d1dc2c36812e36768\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fd01f222df5446d79f2438f2c310dbdf96db0783164248b2bab5dfaa078e068\",\"dweb:/ipfs/QmYuDWuE1Ke1oiaErbeBhiqFptinyKWt9GhJtstwhiw8dt\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/proxies/BeaconProxyFirewallConsumer.sol":{"BeaconProxyFirewallConsumer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"initializeFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"targetPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setApprovedTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1451":{"entryPoint":null,"id":1451,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1670":{"entryPoint":null,"id":1670,"parameterSlots":2,"returnSlots":0},"checked_sub_t_uint256":{"entryPoint":129,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:241:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:176:17","statements":[{"nodeType":"YulAssignment","src":"73:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"85:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"88:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"81:3:17"},"nodeType":"YulFunctionCall","src":"81:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"73:4:17"}]},{"body":{"nodeType":"YulBlock","src":"122:111:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"143:1:17","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:3:17","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"155:10:17","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"146:3:17"},"nodeType":"YulFunctionCall","src":"146:20:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"136:6:17"},"nodeType":"YulFunctionCall","src":"136:31:17"},"nodeType":"YulExpressionStatement","src":"136:31:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"187:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"190:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"180:6:17"},"nodeType":"YulFunctionCall","src":"180:15:17"},"nodeType":"YulExpressionStatement","src":"180:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"215:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"218:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"208:6:17"},"nodeType":"YulFunctionCall","src":"208:15:17"},"nodeType":"YulExpressionStatement","src":"208:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"105:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"111:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"102:2:17"},"nodeType":"YulFunctionCall","src":"102:11:17"},"nodeType":"YulIf","src":"99:134:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"45:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"48:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"54:4:17","type":""}],"src":"14:225:17"}]},"contents":"{\n    { }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":17,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060008061004761004260017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610081565b839055565b61007a61007560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610081565b829055565b50506100a8565b818103818111156100a257634e487b7160e01b600052601160045260246000fd5b92915050565b6110fb806100b76000396000f3fe6080604052600436106100705760003560e01c80637eba94711161004e5780637eba9471146100bf5780638c36d02d146100df578063b7f9a748146100ff578063f05c85821461011f57600080fd5b80631a8828f414610075578063734b71981461008a5780637c65c38b146100aa575b600080fd5b610088610083366004610ec8565b61015d565b005b34801561009657600080fd5b506100886100a5366004610f4b565b610369565b3480156100b657600080fd5b50610088610507565b3480156100cb57600080fd5b506100886100da366004610f4b565b610631565b3480156100eb57600080fd5b506100886100fa366004610f4b565b610785565b34801561010b57600080fd5b5061008861011a366004610f68565b6108e6565b34801561012b57600080fd5b50610134610a44565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061018b60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610fa6565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101db835490565b1415905080610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564207460448201527f617267657400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61029b837f0c908cff00000000000000000000000000000000000000000000000000000000610a79565b6102a457600080fd5b60008873ffffffffffffffffffffffffffffffffffffffff1688886040516102cd929190610fe0565b6000604051808303816000865af19150503d806000811461030a576040519150601f19603f3d011682016040523d82523d6000602084013e61030f565b606091505b505090508061031d57600080fd5b61035d3087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b4a92505050565b50505050505050505050565b61039b61039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610454576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b73ffffffffffffffffffffffffffffffffffffffff81166104d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610268565b6105046104ff60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610fa6565b829055565b50565b61053561039760017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610fa6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610268565b6105fc6105f760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50600061065c825490565b905060008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cf9190610ff0565b90503373ffffffffffffffffffffffffffffffffffffffff821614610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2073656e646560448201527f72206973206e6f7420616c6c6f776564000000000000000000000000000000006064820152608401610268565b61077f84610b76565b50505050565b6107b361039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b61089a6104ff60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610fa6565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b61091461039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b60006109fa60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610fa6565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610a7461039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610b31575060208210155b8015610b3d5750600081115b9450505050505b92915050565b6060610b6f838360405180606001604052806027815260200161109f60279139610cec565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f2060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152608401610268565b6000610c4961039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b73ffffffffffffffffffffffffffffffffffffffff16146104d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e60448201527f20616c72656164792073657400000000000000000000000000000000000000006064820152608401610268565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610d169190611031565b600060405180830381855af49150503d8060008114610d51576040519150601f19603f3d011682016040523d82523d6000602084013e610d56565b606091505b5091509150610d6786838387610d71565b9695505050505050565b60608315610e07578251600003610e005773ffffffffffffffffffffffffffffffffffffffff85163b610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610268565b5081610e11565b610e118383610e19565b949350505050565b815115610e295781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610268919061104d565b73ffffffffffffffffffffffffffffffffffffffff8116811461050457600080fd5b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060608688031215610ee057600080fd5b8535610eeb81610e5d565b9450602086013567ffffffffffffffff80821115610f0857600080fd5b610f1489838a01610e7f565b90965094506040880135915080821115610f2d57600080fd5b50610f3a88828901610e7f565b969995985093965092949392505050565b600060208284031215610f5d57600080fd5b8135610b6f81610e5d565b60008060408385031215610f7b57600080fd5b8235610f8681610e5d565b915060208301358015158114610f9b57600080fd5b809150509250929050565b81810381811115610b44577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60006020828403121561100257600080fd5b8151610b6f81610e5d565b60005b83811015611028578181015183820152602001611010565b50506000910152565b6000825161104381846020870161100d565b9190910192915050565b602081526000825180602084015261106c81604085016020870161100d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122005bc948c5a345d018ae4430205c2e8c6caf87eb13faa57d1d0b105712c077f9464736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0x47 PUSH2 0x42 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x81 JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x7A PUSH2 0x75 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x81 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP POP PUSH2 0xA8 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xA2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x10FB DUP1 PUSH2 0xB7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7EBA9471 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x7EBA9471 EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xB7F9A748 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x369 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x507 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x631 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x785 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0xF68 JUMP JUMPDEST PUSH2 0x8E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x134 PUSH2 0xA44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x18B PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xFA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1DB DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6172676574000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29B DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xA79 JUMP JUMPDEST PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2CD SWAP3 SWAP2 SWAP1 PUSH2 0xFE0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x30A 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 0x30F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x35D ADDRESS DUP8 DUP8 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 0xB4A SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x39B PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x454 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 PUSH2 0x268 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x504 PUSH2 0x4FF PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xFA6 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x535 PUSH2 0x397 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x5FC PUSH2 0x5F7 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 PUSH2 0x65C DUP3 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B 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 0x6AB 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 0x6CF SWAP2 SWAP1 PUSH2 0xFF0 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x776 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2073656E6465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206973206E6F7420616C6C6F77656400000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x77F DUP5 PUSH2 0xB76 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x7B3 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x86C 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 PUSH2 0x268 JUMP JUMPDEST PUSH2 0x89A PUSH2 0x4FF PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xFA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x914 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9CD 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 PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9FA PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xFA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA74 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xB31 JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xB3D JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xB6F DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x109F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCEC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xC19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A207A65726F20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6164647265737300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC49 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2061646D696E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20616C7265616479207365740000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xD16 SWAP2 SWAP1 PUSH2 0x1031 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD51 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 0xD56 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD67 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD71 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xE07 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xE00 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xE00 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 0x268 JUMP JUMPDEST POP DUP2 PUSH2 0xE11 JUMP JUMPDEST PUSH2 0xE11 DUP4 DUP4 PUSH2 0xE19 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xE29 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x104D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xE91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xEC1 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 0xEE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xEEB DUP2 PUSH2 0xE5D JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF14 DUP10 DUP4 DUP11 ADD PUSH2 0xE7F JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3A DUP9 DUP3 DUP10 ADD PUSH2 0xE7F JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB6F DUP2 PUSH2 0xE5D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF86 DUP2 PUSH2 0xE5D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xB44 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1002 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB6F DUP2 PUSH2 0xE5D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1028 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1010 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1043 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x100D 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 0x106C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x100D 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 0x7066735822122005BC94 DUP13 GAS CALLVALUE 0x5D ADD DUP11 0xE4 NUMBER MUL SDIV 0xC2 0xE8 0xC6 0xCA 0xF8 PUSH31 0xB13FAA57D1D0B105712C077F9464736F6C6343000813003300000000000000 ","sourceMap":"540:852:14:-:0;;;;;;;;;;;;-1:-1:-1;651:1:15;;8271:51:7;1069:42;1110:1;1077:29;1069:42;:::i;:::-;8312:9;12264:23;;12162:141;8271:51;8332:62;1243:48;1290:1;1251:35;1243:48;:::i;:::-;8379:14;12264:23;;12162:141;8332:62;8184:217;;540:852:14;;14:225:17;81:9;;;102:11;;;99:134;;;155:10;150:3;146:20;143:1;136:31;190:4;187:1;180:15;218:4;215:1;208:15;99:134;14:225;;;;:::o;:::-;540:852:14;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_1680":{"entryPoint":null,"id":1680,"parameterSlots":1,"returnSlots":1},"@_getValueBySlot_1690":{"entryPoint":null,"id":1690,"parameterSlots":1,"returnSlots":1},"@_initializeFirewallAdmin_2450":{"entryPoint":2934,"id":2450,"parameterSlots":1,"returnSlots":0},"@_msgSender_840":{"entryPoint":null,"id":840,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":3609,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1670":{"entryPoint":null,"id":1670,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_1597":{"entryPoint":1287,"id":1597,"parameterSlots":0,"returnSlots":0},"@firewallAdmin_1529":{"entryPoint":2628,"id":1529,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":2890,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":3308,"id":744,"parameterSlots":3,"returnSlots":1},"@initializeFirewallAdmin_2344":{"entryPoint":1585,"id":2344,"parameterSlots":1,"returnSlots":0},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_1495":{"entryPoint":349,"id":1495,"parameterSlots":5,"returnSlots":0},"@setApprovedTarget_1517":{"entryPoint":2278,"id":1517,"parameterSlots":2,"returnSlots":0},"@setFirewallAdmin_1571":{"entryPoint":873,"id":1571,"parameterSlots":1,"returnSlots":0},"@setFirewall_1547":{"entryPoint":1925,"id":1547,"parameterSlots":1,"returnSlots":0},"@supportsERC165InterfaceUnchecked_1043":{"entryPoint":2681,"id":1043,"parameterSlots":2,"returnSlots":1},"@verifyCallResultFromTarget_783":{"entryPoint":3441,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3711,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3915,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":4080,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3944,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":3784,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4064,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4145,"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_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__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":4173,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__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_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47__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},"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":4006,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4109,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_address":{"entryPoint":3677,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8197:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"59:109:17","statements":[{"body":{"nodeType":"YulBlock","src":"146:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"155:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"158:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"148:6:17"},"nodeType":"YulFunctionCall","src":"148:12:17"},"nodeType":"YulExpressionStatement","src":"148:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"82:5:17"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"93:5:17"},{"kind":"number","nodeType":"YulLiteral","src":"100:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"89:3:17"},"nodeType":"YulFunctionCall","src":"89:54:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"79:2:17"},"nodeType":"YulFunctionCall","src":"79:65:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"72:6:17"},"nodeType":"YulFunctionCall","src":"72:73:17"},"nodeType":"YulIf","src":"69:93:17"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"48:5:17","type":""}],"src":"14:154:17"},{"body":{"nodeType":"YulBlock","src":"245:275:17","statements":[{"body":{"nodeType":"YulBlock","src":"294:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"303:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"306:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"296:6:17"},"nodeType":"YulFunctionCall","src":"296:12:17"},"nodeType":"YulExpressionStatement","src":"296:12:17"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"273:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"281:4:17","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"269:3:17"},"nodeType":"YulFunctionCall","src":"269:17:17"},{"name":"end","nodeType":"YulIdentifier","src":"288:3:17"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"265:3:17"},"nodeType":"YulFunctionCall","src":"265:27:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"258:6:17"},"nodeType":"YulFunctionCall","src":"258:35:17"},"nodeType":"YulIf","src":"255:55:17"},{"nodeType":"YulAssignment","src":"319:30:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"342:6:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"329:12:17"},"nodeType":"YulFunctionCall","src":"329:20:17"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"319:6:17"}]},{"body":{"nodeType":"YulBlock","src":"392:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"401:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"404:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"394:6:17"},"nodeType":"YulFunctionCall","src":"394:12:17"},"nodeType":"YulExpressionStatement","src":"394:12:17"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"364:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"372:18:17","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"361:2:17"},"nodeType":"YulFunctionCall","src":"361:30:17"},"nodeType":"YulIf","src":"358:50:17"},{"nodeType":"YulAssignment","src":"417:29:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"433:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"441:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"429:3:17"},"nodeType":"YulFunctionCall","src":"429:17:17"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"417:8:17"}]},{"body":{"nodeType":"YulBlock","src":"498:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"507:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"510:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"500:6:17"},"nodeType":"YulFunctionCall","src":"500:12:17"},"nodeType":"YulExpressionStatement","src":"500:12:17"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"469:6:17"},{"name":"length","nodeType":"YulIdentifier","src":"477:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"465:3:17"},"nodeType":"YulFunctionCall","src":"465:19:17"},{"kind":"number","nodeType":"YulLiteral","src":"486:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"461:3:17"},"nodeType":"YulFunctionCall","src":"461:30:17"},{"name":"end","nodeType":"YulIdentifier","src":"493:3:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"458:2:17"},"nodeType":"YulFunctionCall","src":"458:39:17"},"nodeType":"YulIf","src":"455:59:17"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"208:6:17","type":""},{"name":"end","nodeType":"YulTypedName","src":"216:3:17","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"224:8:17","type":""},{"name":"length","nodeType":"YulTypedName","src":"234:6:17","type":""}],"src":"173:347:17"},{"body":{"nodeType":"YulBlock","src":"667:710:17","statements":[{"body":{"nodeType":"YulBlock","src":"713:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"722:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"725:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"715:6:17"},"nodeType":"YulFunctionCall","src":"715:12:17"},"nodeType":"YulExpressionStatement","src":"715:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"688:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"697:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"684:3:17"},"nodeType":"YulFunctionCall","src":"684:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"709:2:17","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"680:3:17"},"nodeType":"YulFunctionCall","src":"680:32:17"},"nodeType":"YulIf","src":"677:52:17"},{"nodeType":"YulVariableDeclaration","src":"738:36:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"764:9:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"751:12:17"},"nodeType":"YulFunctionCall","src":"751:23:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"742:5:17","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"808:5:17"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"783:24:17"},"nodeType":"YulFunctionCall","src":"783:31:17"},"nodeType":"YulExpressionStatement","src":"783:31:17"},{"nodeType":"YulAssignment","src":"823:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"833:5:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"823:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"847:46:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"878:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"889:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"874:3:17"},"nodeType":"YulFunctionCall","src":"874:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"861:12:17"},"nodeType":"YulFunctionCall","src":"861:32:17"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"851:6:17","type":""}]},{"nodeType":"YulVariableDeclaration","src":"902:28:17","value":{"kind":"number","nodeType":"YulLiteral","src":"912:18:17","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"906:2:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"957:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"966:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"969:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"959:6:17"},"nodeType":"YulFunctionCall","src":"959:12:17"},"nodeType":"YulExpressionStatement","src":"959:12:17"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"945:6:17"},{"name":"_1","nodeType":"YulIdentifier","src":"953:2:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"942:2:17"},"nodeType":"YulFunctionCall","src":"942:14:17"},"nodeType":"YulIf","src":"939:34:17"},{"nodeType":"YulVariableDeclaration","src":"982:84:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1038:9:17"},{"name":"offset","nodeType":"YulIdentifier","src":"1049:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1034:3:17"},"nodeType":"YulFunctionCall","src":"1034:22:17"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1058:7:17"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1008:25:17"},"nodeType":"YulFunctionCall","src":"1008:58:17"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"986:8:17","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"996:8:17","type":""}]},{"nodeType":"YulAssignment","src":"1075:18:17","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1085:8:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1075:6:17"}]},{"nodeType":"YulAssignment","src":"1102:18:17","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1112:8:17"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1102:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"1129:48:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1162:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1173:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1158:3:17"},"nodeType":"YulFunctionCall","src":"1158:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1145:12:17"},"nodeType":"YulFunctionCall","src":"1145:32:17"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1133:8:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"1206:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1215:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1218:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1208:6:17"},"nodeType":"YulFunctionCall","src":"1208:12:17"},"nodeType":"YulExpressionStatement","src":"1208:12:17"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1192:8:17"},{"name":"_1","nodeType":"YulIdentifier","src":"1202:2:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1189:2:17"},"nodeType":"YulFunctionCall","src":"1189:16:17"},"nodeType":"YulIf","src":"1186:36:17"},{"nodeType":"YulVariableDeclaration","src":"1231:86:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1287:9:17"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1298:8:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1283:3:17"},"nodeType":"YulFunctionCall","src":"1283:24:17"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1309:7:17"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1257:25:17"},"nodeType":"YulFunctionCall","src":"1257:60:17"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1235:8:17","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1245:8:17","type":""}]},{"nodeType":"YulAssignment","src":"1326:18:17","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1336:8:17"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1326:6:17"}]},{"nodeType":"YulAssignment","src":"1353:18:17","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1363:8:17"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1353:6:17"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"601:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"612:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"624:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"632:6:17","type":""},{"name":"value2","nodeType":"YulTypedName","src":"640:6:17","type":""},{"name":"value3","nodeType":"YulTypedName","src":"648:6:17","type":""},{"name":"value4","nodeType":"YulTypedName","src":"656:6:17","type":""}],"src":"525:852:17"},{"body":{"nodeType":"YulBlock","src":"1452:177:17","statements":[{"body":{"nodeType":"YulBlock","src":"1498:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1507:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1510:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1500:6:17"},"nodeType":"YulFunctionCall","src":"1500:12:17"},"nodeType":"YulExpressionStatement","src":"1500:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1473:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"1482:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1469:3:17"},"nodeType":"YulFunctionCall","src":"1469:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"1494:2:17","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1465:3:17"},"nodeType":"YulFunctionCall","src":"1465:32:17"},"nodeType":"YulIf","src":"1462:52:17"},{"nodeType":"YulVariableDeclaration","src":"1523:36:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1549:9:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1536:12:17"},"nodeType":"YulFunctionCall","src":"1536:23:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1527:5:17","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1593:5:17"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1568:24:17"},"nodeType":"YulFunctionCall","src":"1568:31:17"},"nodeType":"YulExpressionStatement","src":"1568:31:17"},{"nodeType":"YulAssignment","src":"1608:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"1618:5:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1608:6:17"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1418:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1429:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1441:6:17","type":""}],"src":"1382:247:17"},{"body":{"nodeType":"YulBlock","src":"1718:332:17","statements":[{"body":{"nodeType":"YulBlock","src":"1764:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1773:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1776:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1766:6:17"},"nodeType":"YulFunctionCall","src":"1766:12:17"},"nodeType":"YulExpressionStatement","src":"1766:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1739:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"1748:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1735:3:17"},"nodeType":"YulFunctionCall","src":"1735:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"1760:2:17","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1731:3:17"},"nodeType":"YulFunctionCall","src":"1731:32:17"},"nodeType":"YulIf","src":"1728:52:17"},{"nodeType":"YulVariableDeclaration","src":"1789:36:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1815:9:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1802:12:17"},"nodeType":"YulFunctionCall","src":"1802:23:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1793:5:17","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1859:5:17"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1834:24:17"},"nodeType":"YulFunctionCall","src":"1834:31:17"},"nodeType":"YulExpressionStatement","src":"1834:31:17"},{"nodeType":"YulAssignment","src":"1874:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"1884:5:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1874:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"1898:47:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1930:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1941:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1926:3:17"},"nodeType":"YulFunctionCall","src":"1926:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1913:12:17"},"nodeType":"YulFunctionCall","src":"1913:32:17"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1902:7:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"2002:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2011:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2014:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2004:6:17"},"nodeType":"YulFunctionCall","src":"2004:12:17"},"nodeType":"YulExpressionStatement","src":"2004:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1967:7:17"},{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1990:7:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1983:6:17"},"nodeType":"YulFunctionCall","src":"1983:15:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1976:6:17"},"nodeType":"YulFunctionCall","src":"1976:23:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1964:2:17"},"nodeType":"YulFunctionCall","src":"1964:36:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1957:6:17"},"nodeType":"YulFunctionCall","src":"1957:44:17"},"nodeType":"YulIf","src":"1954:64:17"},{"nodeType":"YulAssignment","src":"2027:17:17","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2037:7:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2027:6:17"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1676:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1687:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1699:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1707:6:17","type":""}],"src":"1634:416:17"},{"body":{"nodeType":"YulBlock","src":"2156:125:17","statements":[{"nodeType":"YulAssignment","src":"2166:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2178:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2189:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2174:3:17"},"nodeType":"YulFunctionCall","src":"2174:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2166:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2208:9:17"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2223:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"2231:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2219:3:17"},"nodeType":"YulFunctionCall","src":"2219:55:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2201:6:17"},"nodeType":"YulFunctionCall","src":"2201:74:17"},"nodeType":"YulExpressionStatement","src":"2201:74:17"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2125:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2136:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2147:4:17","type":""}],"src":"2055:226:17"},{"body":{"nodeType":"YulBlock","src":"2335:233:17","statements":[{"nodeType":"YulAssignment","src":"2345:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2357:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"2360:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2353:3:17"},"nodeType":"YulFunctionCall","src":"2353:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2345:4:17"}]},{"body":{"nodeType":"YulBlock","src":"2394:168:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2415:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2418:77:17","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2408:6:17"},"nodeType":"YulFunctionCall","src":"2408:88:17"},"nodeType":"YulExpressionStatement","src":"2408:88:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2516:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2519:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2509:6:17"},"nodeType":"YulFunctionCall","src":"2509:15:17"},"nodeType":"YulExpressionStatement","src":"2509:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2544:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2547:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2537:6:17"},"nodeType":"YulFunctionCall","src":"2537:15:17"},"nodeType":"YulExpressionStatement","src":"2537:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2377:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"2383:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2374:2:17"},"nodeType":"YulFunctionCall","src":"2374:11:17"},"nodeType":"YulIf","src":"2371:191:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2317:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"2320:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2326:4:17","type":""}],"src":"2286:282:17"},{"body":{"nodeType":"YulBlock","src":"2702:168:17","statements":[{"nodeType":"YulAssignment","src":"2712:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2724:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2735:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2720:3:17"},"nodeType":"YulFunctionCall","src":"2720:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2712:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2754:9:17"},{"name":"value0","nodeType":"YulIdentifier","src":"2765:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2747:6:17"},"nodeType":"YulFunctionCall","src":"2747:25:17"},"nodeType":"YulExpressionStatement","src":"2747:25:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2792:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2803:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2788:3:17"},"nodeType":"YulFunctionCall","src":"2788:18:17"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2812:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"2820:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2808:3:17"},"nodeType":"YulFunctionCall","src":"2808:55:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2781:6:17"},"nodeType":"YulFunctionCall","src":"2781:83:17"},"nodeType":"YulExpressionStatement","src":"2781:83:17"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2663:9:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2674:6:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2682:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2693:4:17","type":""}],"src":"2573:297:17"},{"body":{"nodeType":"YulBlock","src":"3049:227:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3066:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3077:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3059:6:17"},"nodeType":"YulFunctionCall","src":"3059:21:17"},"nodeType":"YulExpressionStatement","src":"3059:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3100:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3111:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3096:3:17"},"nodeType":"YulFunctionCall","src":"3096:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"3116:2:17","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3089:6:17"},"nodeType":"YulFunctionCall","src":"3089:30:17"},"nodeType":"YulExpressionStatement","src":"3089:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3139:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3150:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3135:3:17"},"nodeType":"YulFunctionCall","src":"3135:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642074","kind":"string","nodeType":"YulLiteral","src":"3155:34:17","type":"","value":"FirewallConsumer: Not approved t"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3128:6:17"},"nodeType":"YulFunctionCall","src":"3128:62:17"},"nodeType":"YulExpressionStatement","src":"3128:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3210:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3221:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3206:3:17"},"nodeType":"YulFunctionCall","src":"3206:18:17"},{"hexValue":"6172676574","kind":"string","nodeType":"YulLiteral","src":"3226:7:17","type":"","value":"arget"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3199:6:17"},"nodeType":"YulFunctionCall","src":"3199:35:17"},"nodeType":"YulExpressionStatement","src":"3199:35:17"},{"nodeType":"YulAssignment","src":"3243:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3255:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3266:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3251:3:17"},"nodeType":"YulFunctionCall","src":"3251:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3243:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3026:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3040:4:17","type":""}],"src":"2875:401:17"},{"body":{"nodeType":"YulBlock","src":"3428:124:17","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3451:3:17"},{"name":"value0","nodeType":"YulIdentifier","src":"3456:6:17"},{"name":"value1","nodeType":"YulIdentifier","src":"3464:6:17"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3438:12:17"},"nodeType":"YulFunctionCall","src":"3438:33:17"},"nodeType":"YulExpressionStatement","src":"3438:33:17"},{"nodeType":"YulVariableDeclaration","src":"3480:26:17","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3494:3:17"},{"name":"value1","nodeType":"YulIdentifier","src":"3499:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3490:3:17"},"nodeType":"YulFunctionCall","src":"3490:16:17"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3484:2:17","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3522:2:17"},{"kind":"number","nodeType":"YulLiteral","src":"3526:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3515:6:17"},"nodeType":"YulFunctionCall","src":"3515:13:17"},"nodeType":"YulExpressionStatement","src":"3515:13:17"},{"nodeType":"YulAssignment","src":"3537:9:17","value":{"name":"_1","nodeType":"YulIdentifier","src":"3544:2:17"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3537:3:17"}]}]},"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":"3396:3:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3401:6:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3409:6:17","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3420:3:17","type":""}],"src":"3281:271:17"},{"body":{"nodeType":"YulBlock","src":"3731:228:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3748:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3759:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3741:6:17"},"nodeType":"YulFunctionCall","src":"3741:21:17"},"nodeType":"YulExpressionStatement","src":"3741:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3782:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3793:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3778:3:17"},"nodeType":"YulFunctionCall","src":"3778:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"3798:2:17","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3771:6:17"},"nodeType":"YulFunctionCall","src":"3771:30:17"},"nodeType":"YulExpressionStatement","src":"3771:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3821:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3832:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3817:3:17"},"nodeType":"YulFunctionCall","src":"3817:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f206d657461207472616e7361","kind":"string","nodeType":"YulLiteral","src":"3837:34:17","type":"","value":"FirewallConsumer: No meta transa"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3810:6:17"},"nodeType":"YulFunctionCall","src":"3810:62:17"},"nodeType":"YulExpressionStatement","src":"3810:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3892:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3903:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3888:3:17"},"nodeType":"YulFunctionCall","src":"3888:18:17"},{"hexValue":"6374696f6e73","kind":"string","nodeType":"YulLiteral","src":"3908:8:17","type":"","value":"ctions"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3881:6:17"},"nodeType":"YulFunctionCall","src":"3881:36:17"},"nodeType":"YulExpressionStatement","src":"3881:36:17"},{"nodeType":"YulAssignment","src":"3926:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3938:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3949:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3934:3:17"},"nodeType":"YulFunctionCall","src":"3934:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3926:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3708:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3722:4:17","type":""}],"src":"3557:402:17"},{"body":{"nodeType":"YulBlock","src":"4138:226:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4155:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4166:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4148:6:17"},"nodeType":"YulFunctionCall","src":"4148:21:17"},"nodeType":"YulExpressionStatement","src":"4148:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4189:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4200:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4185:3:17"},"nodeType":"YulFunctionCall","src":"4185:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4205:2:17","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4178:6:17"},"nodeType":"YulFunctionCall","src":"4178:30:17"},"nodeType":"YulExpressionStatement","src":"4178:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4228:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4239:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4224:3:17"},"nodeType":"YulFunctionCall","src":"4224:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"4244:34:17","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4217:6:17"},"nodeType":"YulFunctionCall","src":"4217:62:17"},"nodeType":"YulExpressionStatement","src":"4217:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4299:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4310:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4295:3:17"},"nodeType":"YulFunctionCall","src":"4295:18:17"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"4315:6:17","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4288:6:17"},"nodeType":"YulFunctionCall","src":"4288:34:17"},"nodeType":"YulExpressionStatement","src":"4288:34:17"},{"nodeType":"YulAssignment","src":"4331:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4343:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4354:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4339:3:17"},"nodeType":"YulFunctionCall","src":"4339:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4331:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4115:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4129:4:17","type":""}],"src":"3964:400:17"},{"body":{"nodeType":"YulBlock","src":"4543:180:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4560:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4571:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4553:6:17"},"nodeType":"YulFunctionCall","src":"4553:21:17"},"nodeType":"YulExpressionStatement","src":"4553:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4594:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4605:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4590:3:17"},"nodeType":"YulFunctionCall","src":"4590:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4610:2:17","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4583:6:17"},"nodeType":"YulFunctionCall","src":"4583:30:17"},"nodeType":"YulExpressionStatement","src":"4583:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4633:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4644:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4629:3:17"},"nodeType":"YulFunctionCall","src":"4629:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"4649:32:17","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4622:6:17"},"nodeType":"YulFunctionCall","src":"4622:60:17"},"nodeType":"YulExpressionStatement","src":"4622:60:17"},{"nodeType":"YulAssignment","src":"4691:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4703:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4714:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4699:3:17"},"nodeType":"YulFunctionCall","src":"4699:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4691:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4520:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4534:4:17","type":""}],"src":"4369:354:17"},{"body":{"nodeType":"YulBlock","src":"4902:181:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4919:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4930:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4912:6:17"},"nodeType":"YulFunctionCall","src":"4912:21:17"},"nodeType":"YulExpressionStatement","src":"4912:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4953:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4964:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4949:3:17"},"nodeType":"YulFunctionCall","src":"4949:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4969:2:17","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4942:6:17"},"nodeType":"YulFunctionCall","src":"4942:30:17"},"nodeType":"YulExpressionStatement","src":"4942:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4992:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5003:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4988:3:17"},"nodeType":"YulFunctionCall","src":"4988:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"5008:33:17","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4981:6:17"},"nodeType":"YulFunctionCall","src":"4981:61:17"},"nodeType":"YulExpressionStatement","src":"4981:61:17"},{"nodeType":"YulAssignment","src":"5051:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5063:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5074:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5059:3:17"},"nodeType":"YulFunctionCall","src":"5059:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5051:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4879:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4893:4:17","type":""}],"src":"4728:355:17"},{"body":{"nodeType":"YulBlock","src":"5169:170:17","statements":[{"body":{"nodeType":"YulBlock","src":"5215:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5224:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5227:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5217:6:17"},"nodeType":"YulFunctionCall","src":"5217:12:17"},"nodeType":"YulExpressionStatement","src":"5217:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5190:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"5199:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5186:3:17"},"nodeType":"YulFunctionCall","src":"5186:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"5211:2:17","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5182:3:17"},"nodeType":"YulFunctionCall","src":"5182:32:17"},"nodeType":"YulIf","src":"5179:52:17"},{"nodeType":"YulVariableDeclaration","src":"5240:29:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5259:9:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5253:5:17"},"nodeType":"YulFunctionCall","src":"5253:16:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5244:5:17","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5303:5:17"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"5278:24:17"},"nodeType":"YulFunctionCall","src":"5278:31:17"},"nodeType":"YulExpressionStatement","src":"5278:31:17"},{"nodeType":"YulAssignment","src":"5318:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"5328:5:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5318:6:17"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5135:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5146:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5158:6:17","type":""}],"src":"5088:251:17"},{"body":{"nodeType":"YulBlock","src":"5518:238:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5535:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5546:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5528:6:17"},"nodeType":"YulFunctionCall","src":"5528:21:17"},"nodeType":"YulExpressionStatement","src":"5528:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5569:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5580:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5565:3:17"},"nodeType":"YulFunctionCall","src":"5565:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"5585:2:17","type":"","value":"48"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5558:6:17"},"nodeType":"YulFunctionCall","src":"5558:30:17"},"nodeType":"YulExpressionStatement","src":"5558:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5608:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5619:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5604:3:17"},"nodeType":"YulFunctionCall","src":"5604:18:17"},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a2073656e6465","kind":"string","nodeType":"YulLiteral","src":"5624:34:17","type":"","value":"ProxyFirewallConsumerBase: sende"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5597:6:17"},"nodeType":"YulFunctionCall","src":"5597:62:17"},"nodeType":"YulExpressionStatement","src":"5597:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5679:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5690:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5675:3:17"},"nodeType":"YulFunctionCall","src":"5675:18:17"},{"hexValue":"72206973206e6f7420616c6c6f776564","kind":"string","nodeType":"YulLiteral","src":"5695:18:17","type":"","value":"r is not allowed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5668:6:17"},"nodeType":"YulFunctionCall","src":"5668:46:17"},"nodeType":"YulExpressionStatement","src":"5668:46:17"},{"nodeType":"YulAssignment","src":"5723:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5735:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5746:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5731:3:17"},"nodeType":"YulFunctionCall","src":"5731:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5723:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5495:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5509:4:17","type":""}],"src":"5344:412:17"},{"body":{"nodeType":"YulBlock","src":"5860:149:17","statements":[{"nodeType":"YulAssignment","src":"5870:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5882:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5893:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5878:3:17"},"nodeType":"YulFunctionCall","src":"5878:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5870:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5912:9:17"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5927:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"5935:66:17","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5923:3:17"},"nodeType":"YulFunctionCall","src":"5923:79:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5905:6:17"},"nodeType":"YulFunctionCall","src":"5905:98:17"},"nodeType":"YulExpressionStatement","src":"5905:98:17"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5829:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5840:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5851:4:17","type":""}],"src":"5761:248:17"},{"body":{"nodeType":"YulBlock","src":"6188:229:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6205:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6216:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6198:6:17"},"nodeType":"YulFunctionCall","src":"6198:21:17"},"nodeType":"YulExpressionStatement","src":"6198:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6239:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6250:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6235:3:17"},"nodeType":"YulFunctionCall","src":"6235:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"6255:2:17","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6228:6:17"},"nodeType":"YulFunctionCall","src":"6228:30:17"},"nodeType":"YulExpressionStatement","src":"6228:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6278:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6289:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6274:3:17"},"nodeType":"YulFunctionCall","src":"6274:18:17"},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f20","kind":"string","nodeType":"YulLiteral","src":"6294:34:17","type":"","value":"ProxyFirewallConsumerBase: zero "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6267:6:17"},"nodeType":"YulFunctionCall","src":"6267:62:17"},"nodeType":"YulExpressionStatement","src":"6267:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6349:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6360:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6345:3:17"},"nodeType":"YulFunctionCall","src":"6345:18:17"},{"hexValue":"61646472657373","kind":"string","nodeType":"YulLiteral","src":"6365:9:17","type":"","value":"address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6338:6:17"},"nodeType":"YulFunctionCall","src":"6338:37:17"},"nodeType":"YulExpressionStatement","src":"6338:37:17"},{"nodeType":"YulAssignment","src":"6384:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6396:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6407:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6392:3:17"},"nodeType":"YulFunctionCall","src":"6392:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6384:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6165:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6179:4:17","type":""}],"src":"6014:403:17"},{"body":{"nodeType":"YulBlock","src":"6596:234:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6613:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6624:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6606:6:17"},"nodeType":"YulFunctionCall","src":"6606:21:17"},"nodeType":"YulExpressionStatement","src":"6606:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6647:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6658:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:17"},"nodeType":"YulFunctionCall","src":"6643:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"6663:2:17","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6636:6:17"},"nodeType":"YulFunctionCall","src":"6636:30:17"},"nodeType":"YulExpressionStatement","src":"6636:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6686:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6697:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6682:3:17"},"nodeType":"YulFunctionCall","src":"6682:18:17"},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e","kind":"string","nodeType":"YulLiteral","src":"6702:34:17","type":"","value":"ProxyFirewallConsumerBase: admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6675:6:17"},"nodeType":"YulFunctionCall","src":"6675:62:17"},"nodeType":"YulExpressionStatement","src":"6675:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6757:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6768:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6753:3:17"},"nodeType":"YulFunctionCall","src":"6753:18:17"},{"hexValue":"20616c726561647920736574","kind":"string","nodeType":"YulLiteral","src":"6773:14:17","type":"","value":" already set"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6746:6:17"},"nodeType":"YulFunctionCall","src":"6746:42:17"},"nodeType":"YulExpressionStatement","src":"6746:42:17"},{"nodeType":"YulAssignment","src":"6797:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6809:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6820:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6805:3:17"},"nodeType":"YulFunctionCall","src":"6805:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6797:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6573:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6587:4:17","type":""}],"src":"6422:408:17"},{"body":{"nodeType":"YulBlock","src":"6901:184:17","statements":[{"nodeType":"YulVariableDeclaration","src":"6911:10:17","value":{"kind":"number","nodeType":"YulLiteral","src":"6920:1:17","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6915:1:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"6980:63:17","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7005:3:17"},{"name":"i","nodeType":"YulIdentifier","src":"7010:1:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7001:3:17"},"nodeType":"YulFunctionCall","src":"7001:11:17"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7024:3:17"},{"name":"i","nodeType":"YulIdentifier","src":"7029:1:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7020:3:17"},"nodeType":"YulFunctionCall","src":"7020:11:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7014:5:17"},"nodeType":"YulFunctionCall","src":"7014:18:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6994:6:17"},"nodeType":"YulFunctionCall","src":"6994:39:17"},"nodeType":"YulExpressionStatement","src":"6994:39:17"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6941:1:17"},{"name":"length","nodeType":"YulIdentifier","src":"6944:6:17"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6938:2:17"},"nodeType":"YulFunctionCall","src":"6938:13:17"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6952:19:17","statements":[{"nodeType":"YulAssignment","src":"6954:15:17","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6963:1:17"},{"kind":"number","nodeType":"YulLiteral","src":"6966:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6959:3:17"},"nodeType":"YulFunctionCall","src":"6959:10:17"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6954:1:17"}]}]},"pre":{"nodeType":"YulBlock","src":"6934:3:17","statements":[]},"src":"6930:113:17"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7063:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"7068:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7059:3:17"},"nodeType":"YulFunctionCall","src":"7059:16:17"},{"kind":"number","nodeType":"YulLiteral","src":"7077:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7052:6:17"},"nodeType":"YulFunctionCall","src":"7052:27:17"},"nodeType":"YulExpressionStatement","src":"7052:27:17"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6879:3:17","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6884:3:17","type":""},{"name":"length","nodeType":"YulTypedName","src":"6889:6:17","type":""}],"src":"6835:250:17"},{"body":{"nodeType":"YulBlock","src":"7227:150:17","statements":[{"nodeType":"YulVariableDeclaration","src":"7237:27:17","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7257:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7251:5:17"},"nodeType":"YulFunctionCall","src":"7251:13:17"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7241:6:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7312:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"7320:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7308:3:17"},"nodeType":"YulFunctionCall","src":"7308:17:17"},{"name":"pos","nodeType":"YulIdentifier","src":"7327:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"7332:6:17"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7273:34:17"},"nodeType":"YulFunctionCall","src":"7273:66:17"},"nodeType":"YulExpressionStatement","src":"7273:66:17"},{"nodeType":"YulAssignment","src":"7348:23:17","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7359:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"7364:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7355:3:17"},"nodeType":"YulFunctionCall","src":"7355:16:17"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7348:3:17"}]}]},"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":"7203:3:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7208:6:17","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7219:3:17","type":""}],"src":"7090:287:17"},{"body":{"nodeType":"YulBlock","src":"7556:179:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7573:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"7584:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7566:6:17"},"nodeType":"YulFunctionCall","src":"7566:21:17"},"nodeType":"YulExpressionStatement","src":"7566:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7607:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"7618:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7603:3:17"},"nodeType":"YulFunctionCall","src":"7603:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"7623:2:17","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7596:6:17"},"nodeType":"YulFunctionCall","src":"7596:30:17"},"nodeType":"YulExpressionStatement","src":"7596:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7646:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"7657:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7642:3:17"},"nodeType":"YulFunctionCall","src":"7642:18:17"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"7662:31:17","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7635:6:17"},"nodeType":"YulFunctionCall","src":"7635:59:17"},"nodeType":"YulExpressionStatement","src":"7635:59:17"},{"nodeType":"YulAssignment","src":"7703:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7715:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"7726:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7711:3:17"},"nodeType":"YulFunctionCall","src":"7711:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7703:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7533:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7547:4:17","type":""}],"src":"7382:353:17"},{"body":{"nodeType":"YulBlock","src":"7861:334:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7878:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"7889:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7871:6:17"},"nodeType":"YulFunctionCall","src":"7871:21:17"},"nodeType":"YulExpressionStatement","src":"7871:21:17"},{"nodeType":"YulVariableDeclaration","src":"7901:27:17","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7921:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7915:5:17"},"nodeType":"YulFunctionCall","src":"7915:13:17"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7905:6:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7948:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"7959:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7944:3:17"},"nodeType":"YulFunctionCall","src":"7944:18:17"},{"name":"length","nodeType":"YulIdentifier","src":"7964:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7937:6:17"},"nodeType":"YulFunctionCall","src":"7937:34:17"},"nodeType":"YulExpressionStatement","src":"7937:34:17"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8019:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"8027:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8015:3:17"},"nodeType":"YulFunctionCall","src":"8015:15:17"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8036:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"8047:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8032:3:17"},"nodeType":"YulFunctionCall","src":"8032:18:17"},{"name":"length","nodeType":"YulIdentifier","src":"8052:6:17"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7980:34:17"},"nodeType":"YulFunctionCall","src":"7980:79:17"},"nodeType":"YulExpressionStatement","src":"7980:79:17"},{"nodeType":"YulAssignment","src":"8068:121:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8084:9:17"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8103:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"8111:2:17","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8099:3:17"},"nodeType":"YulFunctionCall","src":"8099:15:17"},{"kind":"number","nodeType":"YulLiteral","src":"8116:66:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8095:3:17"},"nodeType":"YulFunctionCall","src":"8095:88:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8080:3:17"},"nodeType":"YulFunctionCall","src":"8080:104:17"},{"kind":"number","nodeType":"YulLiteral","src":"8186:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8076:3:17"},"nodeType":"YulFunctionCall","src":"8076:113:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8068:4:17"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7830:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7841:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7852:4:17","type":""}],"src":"7740:455:17"}]},"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_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_addresst_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        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\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_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_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_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 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_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not approved t\")\n        mstore(add(headStart, 96), \"arget\")\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 abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"FirewallConsumer: No meta transa\")\n        mstore(add(headStart, 96), \"ctions\")\n        tail := add(headStart, 128)\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 abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\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_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"ProxyFirewallConsumerBase: sende\")\n        mstore(add(headStart, 96), \"r is not allowed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_encode_tuple_t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"ProxyFirewallConsumerBase: zero \")\n        mstore(add(headStart, 96), \"address\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ProxyFirewallConsumerBase: admin\")\n        mstore(add(headStart, 96), \" already set\")\n        tail := add(headStart, 128)\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":17,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100705760003560e01c80637eba94711161004e5780637eba9471146100bf5780638c36d02d146100df578063b7f9a748146100ff578063f05c85821461011f57600080fd5b80631a8828f414610075578063734b71981461008a5780637c65c38b146100aa575b600080fd5b610088610083366004610ec8565b61015d565b005b34801561009657600080fd5b506100886100a5366004610f4b565b610369565b3480156100b657600080fd5b50610088610507565b3480156100cb57600080fd5b506100886100da366004610f4b565b610631565b3480156100eb57600080fd5b506100886100fa366004610f4b565b610785565b34801561010b57600080fd5b5061008861011a366004610f68565b6108e6565b34801561012b57600080fd5b50610134610a44565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061018b60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610fa6565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101db835490565b1415905080610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564207460448201527f617267657400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61029b837f0c908cff00000000000000000000000000000000000000000000000000000000610a79565b6102a457600080fd5b60008873ffffffffffffffffffffffffffffffffffffffff1688886040516102cd929190610fe0565b6000604051808303816000865af19150503d806000811461030a576040519150601f19603f3d011682016040523d82523d6000602084013e61030f565b606091505b505090508061031d57600080fd5b61035d3087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b4a92505050565b50505050505050505050565b61039b61039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610454576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b73ffffffffffffffffffffffffffffffffffffffff81166104d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610268565b6105046104ff60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610fa6565b829055565b50565b61053561039760017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610fa6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610268565b6105fc6105f760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50600061065c825490565b905060008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cf9190610ff0565b90503373ffffffffffffffffffffffffffffffffffffffff821614610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2073656e646560448201527f72206973206e6f7420616c6c6f776564000000000000000000000000000000006064820152608401610268565b61077f84610b76565b50505050565b6107b361039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b61089a6104ff60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610fa6565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b61091461039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b60006109fa60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610fa6565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610a7461039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610b31575060208210155b8015610b3d5750600081115b9450505050505b92915050565b6060610b6f838360405180606001604052806027815260200161109f60279139610cec565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f2060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152608401610268565b6000610c4961039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b73ffffffffffffffffffffffffffffffffffffffff16146104d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e60448201527f20616c72656164792073657400000000000000000000000000000000000000006064820152608401610268565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610d169190611031565b600060405180830381855af49150503d8060008114610d51576040519150601f19603f3d011682016040523d82523d6000602084013e610d56565b606091505b5091509150610d6786838387610d71565b9695505050505050565b60608315610e07578251600003610e005773ffffffffffffffffffffffffffffffffffffffff85163b610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610268565b5081610e11565b610e118383610e19565b949350505050565b815115610e295781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610268919061104d565b73ffffffffffffffffffffffffffffffffffffffff8116811461050457600080fd5b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060608688031215610ee057600080fd5b8535610eeb81610e5d565b9450602086013567ffffffffffffffff80821115610f0857600080fd5b610f1489838a01610e7f565b90965094506040880135915080821115610f2d57600080fd5b50610f3a88828901610e7f565b969995985093965092949392505050565b600060208284031215610f5d57600080fd5b8135610b6f81610e5d565b60008060408385031215610f7b57600080fd5b8235610f8681610e5d565b915060208301358015158114610f9b57600080fd5b809150509250929050565b81810381811115610b44577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60006020828403121561100257600080fd5b8151610b6f81610e5d565b60005b83811015611028578181015183820152602001611010565b50506000910152565b6000825161104381846020870161100d565b9190910192915050565b602081526000825180602084015261106c81604085016020870161100d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122005bc948c5a345d018ae4430205c2e8c6caf87eb13faa57d1d0b105712c077f9464736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7EBA9471 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x7EBA9471 EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xB7F9A748 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x369 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x507 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x631 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x785 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0xF68 JUMP JUMPDEST PUSH2 0x8E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x134 PUSH2 0xA44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x18B PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xFA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1DB DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6172676574000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29B DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xA79 JUMP JUMPDEST PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2CD SWAP3 SWAP2 SWAP1 PUSH2 0xFE0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x30A 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 0x30F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x35D ADDRESS DUP8 DUP8 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 0xB4A SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x39B PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x454 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 PUSH2 0x268 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x504 PUSH2 0x4FF PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xFA6 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x535 PUSH2 0x397 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x5FC PUSH2 0x5F7 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 PUSH2 0x65C DUP3 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B 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 0x6AB 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 0x6CF SWAP2 SWAP1 PUSH2 0xFF0 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x776 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2073656E6465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206973206E6F7420616C6C6F77656400000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x77F DUP5 PUSH2 0xB76 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x7B3 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x86C 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 PUSH2 0x268 JUMP JUMPDEST PUSH2 0x89A PUSH2 0x4FF PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xFA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x914 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9CD 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 PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9FA PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xFA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA74 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xB31 JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xB3D JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xB6F DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x109F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCEC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xC19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A207A65726F20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6164647265737300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC49 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2061646D696E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20616C7265616479207365740000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xD16 SWAP2 SWAP1 PUSH2 0x1031 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD51 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 0xD56 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD67 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD71 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xE07 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xE00 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xE00 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 0x268 JUMP JUMPDEST POP DUP2 PUSH2 0xE11 JUMP JUMPDEST PUSH2 0xE11 DUP4 DUP4 PUSH2 0xE19 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xE29 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x104D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xE91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xEC1 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 0xEE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xEEB DUP2 PUSH2 0xE5D JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF14 DUP10 DUP4 DUP11 ADD PUSH2 0xE7F JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3A DUP9 DUP3 DUP10 ADD PUSH2 0xE7F JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB6F DUP2 PUSH2 0xE5D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF86 DUP2 PUSH2 0xE5D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xB44 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1002 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB6F DUP2 PUSH2 0xE5D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1028 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1010 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1043 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x100D 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 0x106C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x100D 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 0x7066735822122005BC94 DUP13 GAS CALLVALUE 0x5D ADD DUP11 0xE4 NUMBER MUL SDIV 0xC2 0xE8 0xC6 0xCA 0xF8 PUSH31 0xB13FAA57D1D0B105712C077F9464736F6C6343000813003300000000000000 ","sourceMap":"540:852:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8869:401:7;;;;;;:::i;:::-;;:::i;:::-;;10543:241;;;;;;;;;;-1:-1:-1;10543:241:7;;;;;:::i;:::-;;:::i;10853:280::-;;;;;;;;;;;;;:::i;1233:157:14:-;;;;;;;;;;-1:-1:-1;1233:157:14;;;;;:::i;:::-;;:::i;10201:176:7:-;;;;;;;;;;-1:-1:-1;10201:176:7;;;;;:::i;:::-;;:::i;9595:239::-;;;;;;;;;;-1:-1:-1;9595:239:7;;;;;:::i;:::-;;:::i;9905:136::-;;;;;;;;;;;;;:::i;:::-;;;2231:42:17;2219:55;;;2201:74;;2189:2;2174:18;9905:136:7;;;;;;;8869:401;9028:6;7439:13;1791:50;1840:1;1799:37;1791:50;:::i;:::-;7465:49;;;;;;2747:25:17;;;;2820:42;2808:55;;2788:18;;;2781:83;2720:18;;7465:49:7;;;;;;;;;;;;7455:60;;;;;;7439:76;;7525:21;7583:1;7575:10;;7549:22;7565:5;12928:12;;12806:150;7549:22;:36;;7525:60;;7603:16;7595:66;;;;;;;3077:2:17;7595:66:7;;;3059:21:17;3116:2;3096:18;;;3089:30;3155:34;3135:18;;;3128:62;3226:7;3206:18;;;3199:35;3251:19;;7595:66:7;;;;;;;;;7679:99;7726:6;1582:18;7679:46;:99::i;:::-;7671:108;;;;;;9047:12:::1;9065:6;:11;;9077:13;;9065:26;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9046:45;;;9109:7;9101:16;;;::::0;::::1;;9214:49;9251:4;9258;;9214:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;9214:28:7::1;::::0;-1:-1:-1;;;9214:49:7:i:1;:::-;;9036:234;7159:638:::0;;8869:401;;;;;;:::o;10543:241::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;:::-;12928:12;;12806:150;7951:46;7937:60;;:10;:60;;;7929:109;;;;;;;4166:2:17;7929:109:7;;;4148:21:17;4205:2;4185:18;;;4178:30;4244:34;4224:18;;;4217:62;4315:6;4295:18;;;4288:34;4339:19;;7929:109:7;3964:400:17;7929:109:7;10638:28:::1;::::0;::::1;10630:71;;;::::0;::::1;::::0;;4571:2:17;10630:71:7::1;::::0;::::1;4553:21:17::0;4610:2;4590:18;;;4583:30;4649:32;4629:18;;;4622:60;4699:18;;10630:71:7::1;4369:354:17::0;10630:71:7::1;10711:66;1453:52;1504:1;1461:39;1453:52;:::i;:::-;10762:14:::0;12264:23;;12162:141;10711:66:::1;10543:241:::0;:::o;10853:280::-;10925:50;1453:52;1504:1;1461:39;1453:52;:::i;10925:50::-;10911:64;;:10;:64;;;10903:108;;;;;;;4930:2:17;10903:108:7;;;4912:21:17;4969:2;4949:18;;;4942:30;5008:33;4988:18;;;4981:61;5059:18;;10903:108:7;4728:355:17;10903:108:7;11021:58;1243:48;1290:1;1251:35;1243:48;:::i;:::-;11068:10;12264:23;;12162:141;11021:58;11094:32;;11115:10;2201:74:17;;11094:32:7;;2189:2:17;2174:18;11094:32:7;;;;;;;10853:280::o;1233:157:14:-;728:66;1311:11;1103:37:15;728:66:14;12928:12:7;;12806:150;1103:37:15;1074:66;;1150:24;1186:18;1177:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1150:63;-1:-1:-1;1231:10:15;:30;;;;1223:91;;;;;;;5546:2:17;1223:91:15;;;5528:21:17;5585:2;5565:18;;;5558:30;5624:34;5604:18;;;5597:62;5695:18;5675;;;5668:46;5731:19;;1223:91:15;5344:412:17;1223:91:15;1343:40:14::1;1368:14;1343:24;:40::i;:::-;1064:268:15::0;;1233:157:14;;:::o;10201:176:7:-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;7951:46::-;7937:60;;:10;:60;;;7929:109;;;;;;;4166:2:17;7929:109:7;;;4148:21:17;4205:2;4185:18;;;4178:30;4244:34;4224:18;;;4217:62;4315:6;4295:18;;;4288:34;4339:19;;7929:109:7;3964:400:17;7929:109:7;10278:51:::1;1069:42;1110:1;1077:29;1069:42;:::i;10278:51::-;10344:26;::::0;2231:42:17;2219:55;;2201:74;;10344:26:7::1;::::0;2189:2:17;2174:18;10344:26:7::1;;;;;;;10201:176:::0;:::o;9595:239::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;7951:46::-;7937:60;;:10;:60;;;7929:109;;;;;;;4166:2:17;7929:109:7;;;4148:21:17;4205:2;4185:18;;;4178:30;4244:34;4224:18;;;4217:62;4315:6;4295:18;;;4288:34;4339:19;;7929:109:7;3964:400:17;7929:109:7;9688:13:::1;1791:50;1840:1;1799:37;1791:50;:::i;:::-;9714:49;::::0;;::::1;::::0;::::1;2747:25:17::0;;;;2820:42;2808:55;;2788:18;;;2781:83;2720:18;;9714:49:7::1;;;;;;;;;;;;9704:60;;;;;;9688:76;;9811:6;9804:5;9797:21;9783:45;9595:239:::0;;:::o;9905:136::-;9962:7;9988:46;1243:48;1290:1;1251:35;1243:48;:::i;9988:46::-;9981:53;;9905:136;:::o;4421:647:4:-;4592:71;;;5935:66:17;5923:79;;4592:71:4;;;;5905:98:17;;;;4592:71:4;;;;;;;;;;5878:18:17;;;;4592:71:4;;;;;;;;;;;4615:34;4592:71;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;;:::o;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:2:o;1770:368:15:-;1855:28;;;1847:80;;;;;;;6216:2:17;1847:80:15;;;6198:21:17;6255:2;6235:18;;;6228:30;6294:34;6274:18;;;6267:62;6365:9;6345:18;;;6338:37;6392:19;;1847:80:15;6014:403:17;1847:80:15;2003:1;1945:46;736:48;783:1;744:35;736:48;:::i;1945:46::-;:60;;;1937:117;;;;;;;6624:2:17;1937:117:15;;;6606:21:17;6663:2;6643:18;;;6636:30;6702:34;6682:18;;;6675:62;6773:14;6753:18;;;6746:42;6805:19;;1937:117:15;6422:408:17;7058:325:2;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;;;;;;;7584:2:17;8113:60:2;;;7566:21:17;7623:2;7603:18;;;7596:30;7662:31;7642:18;;;7635:59;7711:18;;8113:60:2;7382:353:17;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:17:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:347;224:8;234:6;288:3;281:4;273:6;269:17;265:27;255:55;;306:1;303;296:12;255:55;-1:-1:-1;329:20:17;;372:18;361:30;;358:50;;;404:1;401;394:12;358:50;441:4;433:6;429:17;417:29;;493:3;486:4;477:6;469;465:19;461:30;458:39;455:59;;;510:1;507;500:12;455:59;173:347;;;;;:::o;525:852::-;624:6;632;640;648;656;709:2;697:9;688:7;684:23;680:32;677:52;;;725:1;722;715:12;677:52;764:9;751:23;783:31;808:5;783:31;:::i;:::-;833:5;-1:-1:-1;889:2:17;874:18;;861:32;912:18;942:14;;;939:34;;;969:1;966;959:12;939:34;1008:58;1058:7;1049:6;1038:9;1034:22;1008:58;:::i;:::-;1085:8;;-1:-1:-1;982:84:17;-1:-1:-1;1173:2:17;1158:18;;1145:32;;-1:-1:-1;1189:16:17;;;1186:36;;;1218:1;1215;1208:12;1186:36;;1257:60;1309:7;1298:8;1287:9;1283:24;1257:60;:::i;:::-;525:852;;;;-1:-1:-1;525:852:17;;-1:-1:-1;1336:8:17;;1231:86;525:852;-1:-1:-1;;;525:852:17:o;1382:247::-;1441:6;1494:2;1482:9;1473:7;1469:23;1465:32;1462:52;;;1510:1;1507;1500:12;1462:52;1549:9;1536:23;1568:31;1593:5;1568:31;:::i;1634:416::-;1699:6;1707;1760:2;1748:9;1739:7;1735:23;1731:32;1728:52;;;1776:1;1773;1766:12;1728:52;1815:9;1802:23;1834:31;1859:5;1834:31;:::i;:::-;1884:5;-1:-1:-1;1941:2:17;1926:18;;1913:32;1983:15;;1976:23;1964:36;;1954:64;;2014:1;2011;2004:12;1954:64;2037:7;2027:17;;;1634:416;;;;;:::o;2286:282::-;2353:9;;;2374:11;;;2371:191;;;2418:77;2415:1;2408:88;2519:4;2516:1;2509:15;2547:4;2544:1;2537:15;3281:271;3464:6;3456;3451:3;3438:33;3420:3;3490:16;;3515:13;;;3490:16;3281:271;-1:-1:-1;3281:271:17:o;5088:251::-;5158:6;5211:2;5199:9;5190:7;5186:23;5182:32;5179:52;;;5227:1;5224;5217:12;5179:52;5259:9;5253:16;5278:31;5303:5;5278:31;:::i;6835:250::-;6920:1;6930:113;6944:6;6941:1;6938:13;6930:113;;;7020:11;;;7014:18;7001:11;;;6994:39;6966:2;6959:10;6930:113;;;-1:-1:-1;;7077:1:17;7059:16;;7052:27;6835:250::o;7090:287::-;7219:3;7257:6;7251:13;7273:66;7332:6;7327:3;7320:4;7312:6;7308:17;7273:66;:::i;:::-;7355:16;;;;;7090:287;-1:-1:-1;;7090:287:17:o;7740:455::-;7889:2;7878:9;7871:21;7852:4;7921:6;7915:13;7964:6;7959:2;7948:9;7944:18;7937:34;7980:79;8052:6;8047:2;8036:9;8032:18;8027:2;8019:6;8015:15;7980:79;:::i;:::-;8111:2;8099:15;8116:66;8095:88;8080:104;;;;8186:2;8076:113;;7740:455;-1:-1:-1;;7740:455:17:o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","firewallAdmin()":"f05c8582","initializeFirewallAdmin(address)":"7eba9471","safeFunctionCall(address,bytes,bytes)":"1a8828f4","setApprovedTarget(address,bool)":"b7f9a748","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"initializeFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"targetPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setApprovedTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"initializeFirewallAdmin(address)\":{\"details\":\"Beacon Proxy Owner only function, allows the Beacon Proxy Owner to initialize the firewall admin in the following cases: - If the contract was originally deployed with a zero-address in the constructor (for various reasons) - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\",\"params\":{\"_firewallAdmin\":\"address of the firewall admin\"}},\"safeFunctionCall(address,bytes,bytes)\":{\"details\":\"Allows calling an approved external target 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.\",\"params\":{\"data\":\"data to be executed after the target call\",\"target\":\"address of the target\",\"targetPayload\":\"payload to be sent to the target\"}},\"setApprovedTarget(address,bool)\":{\"details\":\"Allows firewall admin to set approved targets. IMPORTANT: Only set approved target if you know what you're doing. Anyone can cause this contract to send any data to an approved target.\",\"params\":{\"status\":\"status of the target\",\"target\":\"address of the target\"}},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}}},\"title\":\"BeaconProxyFirewallConsumer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"this extension allows the Beacon Proxy Owner to initialize the firewall admin even if the contract was originally deployed with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/proxies/BeaconProxyFirewallConsumer.sol\":\"BeaconProxyFirewallConsumer\"},\"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\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/FirewallConsumerBase.sol\":{\"keccak256\":\"0x4da0867b995c7a8e0f21ac356af4eee72432ed37633b8ba51ed847d70d29a2d5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6d9749043bb16a28fa0058ff2b303408174e01e18dfb29bc229fc7778c6610eb\",\"dweb:/ipfs/QmfDcQEhe4aAVS6aUULY8aKGUXAdLiHdPNQQsiFjf6LP2x\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0xb9ee7c4bd6e08fd9a5b7945d405604c563b7aa91f06ed46f8eedeae8c5156898\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://858fb99b602da6e34e51e1a40ee945921006c84c08454f22495b224c3abd0ec3\",\"dweb:/ipfs/QmWDFoDrTX2FFjcyY3aooeZxo5TX7sxmoQ3UhcZo7ccGsx\"]},\"contracts/interfaces/IOwnable.sol\":{\"keccak256\":\"0x45b2b806b3c3f90bf684380d722f23d9de67651f3fb6715d1dc2c36812e36768\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fd01f222df5446d79f2438f2c310dbdf96db0783164248b2bab5dfaa078e068\",\"dweb:/ipfs/QmYuDWuE1Ke1oiaErbeBhiqFptinyKWt9GhJtstwhiw8dt\"]},\"contracts/proxies/BeaconProxyFirewallConsumer.sol\":{\"keccak256\":\"0x5c8b79d0c6fc8efdedb26d024ed758f775d4508ae9b0cc75bb9af3ee2464310c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2e5691eab0f3f037dbc56494719f1b796cf5f0bb0dad4113f28887e2f61ff58b\",\"dweb:/ipfs/Qme6pX5uZETJBVdUzaTQKPmfvvhxqR3t9vKrdyyoLEYJ5C\"]},\"contracts/proxies/ProxyFirewallConsumerBase.sol\":{\"keccak256\":\"0x37ee68fa975fba14161dfc225c468236d25d927dcbe25271b6e3f86ca1357d49\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ec8807ff82d2eb410e0079e41bc7566cb220183f759a2eef438dae3e201fffa8\",\"dweb:/ipfs/QmZnM8kCF8yCvVS8uMoz8zyitV11t5LEwD1ypi65E4wj8P\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/proxies/ProxyFirewallConsumerBase.sol":{"ProxyFirewallConsumerBase":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"targetPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setApprovedTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1451":{"entryPoint":null,"id":1451,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1670":{"entryPoint":null,"id":1670,"parameterSlots":2,"returnSlots":0},"checked_sub_t_uint256":{"entryPoint":129,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:241:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:176:17","statements":[{"nodeType":"YulAssignment","src":"73:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"85:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"88:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"81:3:17"},"nodeType":"YulFunctionCall","src":"81:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"73:4:17"}]},{"body":{"nodeType":"YulBlock","src":"122:111:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"143:1:17","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:3:17","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"155:10:17","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"146:3:17"},"nodeType":"YulFunctionCall","src":"146:20:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"136:6:17"},"nodeType":"YulFunctionCall","src":"136:31:17"},"nodeType":"YulExpressionStatement","src":"136:31:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"187:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"190:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"180:6:17"},"nodeType":"YulFunctionCall","src":"180:15:17"},"nodeType":"YulExpressionStatement","src":"180:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"215:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"218:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"208:6:17"},"nodeType":"YulFunctionCall","src":"208:15:17"},"nodeType":"YulExpressionStatement","src":"208:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"105:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"111:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"102:2:17"},"nodeType":"YulFunctionCall","src":"102:11:17"},"nodeType":"YulIf","src":"99:134:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"45:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"48:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"54:4:17","type":""}],"src":"14:225:17"}]},"contents":"{\n    { }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":17,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060008061004761004260017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610081565b839055565b61007a61007560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610081565b829055565b50506100a8565b818103818111156100a257634e487b7160e01b600052601160045260246000fd5b92915050565b610dea806100b76000396000f3fe6080604052600436106100655760003560e01c80638c36d02d116100435780638c36d02d146100b4578063b7f9a748146100d4578063f05c8582146100f457600080fd5b80631a8828f41461006a578063734b71981461007f5780637c65c38b1461009f575b600080fd5b61007d610078366004610bda565b610132565b005b34801561008b57600080fd5b5061007d61009a366004610c5b565b61033e565b3480156100ab57600080fd5b5061007d6104dc565b3480156100c057600080fd5b5061007d6100cf366004610c5b565b610606565b3480156100e057600080fd5b5061007d6100ef366004610c76565b610767565b34801561010057600080fd5b506101096108c5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061016060017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610cb2565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101b0835490565b1415905080610246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564207460448201527f617267657400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610270837f0c908cff000000000000000000000000000000000000000000000000000000006108fa565b61027957600080fd5b60008873ffffffffffffffffffffffffffffffffffffffff1688886040516102a2929190610cec565b6000604051808303816000865af19150503d80600081146102df576040519150601f19603f3d011682016040523d82523d6000602084013e6102e4565b606091505b50509050806102f257600080fd5b6103323087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109cb92505050565b50505050505050505050565b61037061036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610429576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b73ffffffffffffffffffffffffffffffffffffffff81166104a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f20616464726573730000604482015260640161023d565b6104d96104d460017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610cb2565b829055565b50565b61050a61036c60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e00604482015260640161023d565b6105d16105cc60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b61063461036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b61071b6104d460017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610cb2565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b61079561036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b600061087b60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610cb2565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b60006108f561036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156109b2575060208210155b80156109be5750600081115b9450505050505b92915050565b60606109f08383604051806060016040528060278152602001610d8e602791396109f7565b9392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610a219190610d20565b600060405180830381855af49150503d8060008114610a5c576040519150601f19603f3d011682016040523d82523d6000602084013e610a61565b606091505b5091509150610a7286838387610a7c565b9695505050505050565b60608315610b12578251600003610b0b5773ffffffffffffffffffffffffffffffffffffffff85163b610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161023d565b5081610b1c565b610b1c8383610b24565b949350505050565b815115610b345781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023d9190610d3c565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b8c57600080fd5b919050565b60008083601f840112610ba357600080fd5b50813567ffffffffffffffff811115610bbb57600080fd5b602083019150836020828501011115610bd357600080fd5b9250929050565b600080600080600060608688031215610bf257600080fd5b610bfb86610b68565b9450602086013567ffffffffffffffff80821115610c1857600080fd5b610c2489838a01610b91565b90965094506040880135915080821115610c3d57600080fd5b50610c4a88828901610b91565b969995985093965092949392505050565b600060208284031215610c6d57600080fd5b6109f082610b68565b60008060408385031215610c8957600080fd5b610c9283610b68565b915060208301358015158114610ca757600080fd5b809150509250929050565b818103818111156109c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610d17578181015183820152602001610cff565b50506000910152565b60008251610d32818460208701610cfc565b9190910192915050565b6020815260008251806020840152610d5b816040850160208701610cfc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208597407084d37b9458e3377247e3f51cdbc73c4e375f93017889ad19f66d95ef64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0x47 PUSH2 0x42 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x81 JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x7A PUSH2 0x75 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x81 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP POP PUSH2 0xA8 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xA2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDEA DUP1 PUSH2 0xB7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xB7F9A748 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0x9F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH2 0x78 CALLDATASIZE PUSH1 0x4 PUSH2 0xBDA JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x33E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0x4DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x606 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0xC76 JUMP JUMPDEST PUSH2 0x767 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x8C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x160 PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1B0 DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x246 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6172676574000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x270 DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x8FA JUMP JUMPDEST PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP3 SWAP2 SWAP1 PUSH2 0xCEC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2DF 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 0x2E4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x332 ADDRESS DUP8 DUP8 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 0x9CB SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x370 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x429 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 PUSH2 0x23D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x4D9 PUSH2 0x4D4 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xCB2 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x50A PUSH2 0x36C PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x59E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x5D1 PUSH2 0x5CC PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x634 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6ED 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 PUSH2 0x23D JUMP JUMPDEST PUSH2 0x71B PUSH2 0x4D4 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x795 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x84E 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 PUSH2 0x23D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87B PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F5 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0x9B2 JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x9BE JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9F0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD8E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x9F7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xA21 SWAP2 SWAP1 PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA5C 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 0xA61 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xA72 DUP7 DUP4 DUP4 DUP8 PUSH2 0xA7C JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xB12 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xB0B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xB0B 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 0x23D JUMP JUMPDEST POP DUP2 PUSH2 0xB1C JUMP JUMPDEST PUSH2 0xB1C DUP4 DUP4 PUSH2 0xB24 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xB34 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0xD3C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xBD3 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 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBFB DUP7 PUSH2 0xB68 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC24 DUP10 DUP4 DUP11 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC4A DUP9 DUP3 DUP10 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F0 DUP3 PUSH2 0xB68 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC92 DUP4 PUSH2 0xB68 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9C5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0xD17 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCFF JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xD32 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xCFC 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 0xD5B DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCFC 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 0x70667358221220859740 PUSH17 0x84D37B9458E3377247E3F51CDBC73C4E37 0x5F SWAP4 ADD PUSH25 0x89AD19F66D95EF64736F6C6343000813003300000000000000 ","sourceMap":"584:1556:15:-:0;;;;;;;;;;;;-1:-1:-1;651:1:15;;8271:51:7;1069:42;1110:1;1077:29;1069:42;:::i;:::-;8312:9;12264:23;;12162:141;8271:51;8332:62;1243:48;1290:1;1251:35;1243:48;:::i;:::-;8379:14;12264:23;;12162:141;8332:62;8184:217;;584:1556:15;;14:225:17;81:9;;;102:11;;;99:134;;;155:10;150:3;146:20;143:1;136:31;190:4;187:1;180:15;218:4;215:1;208:15;99:134;14:225;;;;:::o;:::-;584:1556:15;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_1680":{"entryPoint":null,"id":1680,"parameterSlots":1,"returnSlots":1},"@_getValueBySlot_1690":{"entryPoint":null,"id":1690,"parameterSlots":1,"returnSlots":1},"@_msgSender_840":{"entryPoint":null,"id":840,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":2852,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1670":{"entryPoint":null,"id":1670,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_1597":{"entryPoint":1244,"id":1597,"parameterSlots":0,"returnSlots":0},"@firewallAdmin_1529":{"entryPoint":2245,"id":1529,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":2507,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":2551,"id":744,"parameterSlots":3,"returnSlots":1},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_1495":{"entryPoint":306,"id":1495,"parameterSlots":5,"returnSlots":0},"@setApprovedTarget_1517":{"entryPoint":1895,"id":1517,"parameterSlots":2,"returnSlots":0},"@setFirewallAdmin_1571":{"entryPoint":830,"id":1571,"parameterSlots":1,"returnSlots":0},"@setFirewall_1547":{"entryPoint":1542,"id":1547,"parameterSlots":1,"returnSlots":0},"@supportsERC165InterfaceUnchecked_1043":{"entryPoint":2298,"id":1043,"parameterSlots":2,"returnSlots":1},"@verifyCallResultFromTarget_783":{"entryPoint":2684,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":2920,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":2961,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3163,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3190,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":3034,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3308,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3360,"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_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__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":3388,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__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},"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":3250,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3324,"id":null,"parameterSlots":3,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:6554:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:147:17","statements":[{"nodeType":"YulAssignment","src":"73:29:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"95:6:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"82:12:17"},"nodeType":"YulFunctionCall","src":"82:20:17"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"73:5:17"}]},{"body":{"nodeType":"YulBlock","src":"188:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"197:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"200:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"190:6:17"},"nodeType":"YulFunctionCall","src":"190:12:17"},"nodeType":"YulExpressionStatement","src":"190:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"124:5:17"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"135:5:17"},{"kind":"number","nodeType":"YulLiteral","src":"142:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"131:3:17"},"nodeType":"YulFunctionCall","src":"131:54:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"121:2:17"},"nodeType":"YulFunctionCall","src":"121:65:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:17"},"nodeType":"YulFunctionCall","src":"114:73:17"},"nodeType":"YulIf","src":"111:93:17"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:17","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:17","type":""}],"src":"14:196:17"},{"body":{"nodeType":"YulBlock","src":"287:275:17","statements":[{"body":{"nodeType":"YulBlock","src":"336:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"345:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"348:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"338:6:17"},"nodeType":"YulFunctionCall","src":"338:12:17"},"nodeType":"YulExpressionStatement","src":"338:12:17"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"315:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"323:4:17","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"311:3:17"},"nodeType":"YulFunctionCall","src":"311:17:17"},{"name":"end","nodeType":"YulIdentifier","src":"330:3:17"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:17"},"nodeType":"YulFunctionCall","src":"307:27:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"300:6:17"},"nodeType":"YulFunctionCall","src":"300:35:17"},"nodeType":"YulIf","src":"297:55:17"},{"nodeType":"YulAssignment","src":"361:30:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"384:6:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"371:12:17"},"nodeType":"YulFunctionCall","src":"371:20:17"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"361:6:17"}]},{"body":{"nodeType":"YulBlock","src":"434:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"443:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"446:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"436:6:17"},"nodeType":"YulFunctionCall","src":"436:12:17"},"nodeType":"YulExpressionStatement","src":"436:12:17"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"406:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"414:18:17","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"403:2:17"},"nodeType":"YulFunctionCall","src":"403:30:17"},"nodeType":"YulIf","src":"400:50:17"},{"nodeType":"YulAssignment","src":"459:29:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"475:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"483:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"471:3:17"},"nodeType":"YulFunctionCall","src":"471:17:17"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"459:8:17"}]},{"body":{"nodeType":"YulBlock","src":"540:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"549:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"552:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"542:6:17"},"nodeType":"YulFunctionCall","src":"542:12:17"},"nodeType":"YulExpressionStatement","src":"542:12:17"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"511:6:17"},{"name":"length","nodeType":"YulIdentifier","src":"519:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"507:3:17"},"nodeType":"YulFunctionCall","src":"507:19:17"},{"kind":"number","nodeType":"YulLiteral","src":"528:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"503:3:17"},"nodeType":"YulFunctionCall","src":"503:30:17"},{"name":"end","nodeType":"YulIdentifier","src":"535:3:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"500:2:17"},"nodeType":"YulFunctionCall","src":"500:39:17"},"nodeType":"YulIf","src":"497:59:17"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"250:6:17","type":""},{"name":"end","nodeType":"YulTypedName","src":"258:3:17","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"266:8:17","type":""},{"name":"length","nodeType":"YulTypedName","src":"276:6:17","type":""}],"src":"215:347:17"},{"body":{"nodeType":"YulBlock","src":"709:649:17","statements":[{"body":{"nodeType":"YulBlock","src":"755:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"764:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"767:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"757:6:17"},"nodeType":"YulFunctionCall","src":"757:12:17"},"nodeType":"YulExpressionStatement","src":"757:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"730:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"739:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"726:3:17"},"nodeType":"YulFunctionCall","src":"726:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"751:2:17","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"722:3:17"},"nodeType":"YulFunctionCall","src":"722:32:17"},"nodeType":"YulIf","src":"719:52:17"},{"nodeType":"YulAssignment","src":"780:39:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"809:9:17"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"790:18:17"},"nodeType":"YulFunctionCall","src":"790:29:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"780:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"828:46:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"859:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"870:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"855:3:17"},"nodeType":"YulFunctionCall","src":"855:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"842:12:17"},"nodeType":"YulFunctionCall","src":"842:32:17"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"832:6:17","type":""}]},{"nodeType":"YulVariableDeclaration","src":"883:28:17","value":{"kind":"number","nodeType":"YulLiteral","src":"893:18:17","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"887:2:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"938:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"947:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"950:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"940:6:17"},"nodeType":"YulFunctionCall","src":"940:12:17"},"nodeType":"YulExpressionStatement","src":"940:12:17"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"926:6:17"},{"name":"_1","nodeType":"YulIdentifier","src":"934:2:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"923:2:17"},"nodeType":"YulFunctionCall","src":"923:14:17"},"nodeType":"YulIf","src":"920:34:17"},{"nodeType":"YulVariableDeclaration","src":"963:84:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1019:9:17"},{"name":"offset","nodeType":"YulIdentifier","src":"1030:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1015:3:17"},"nodeType":"YulFunctionCall","src":"1015:22:17"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1039:7:17"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"989:25:17"},"nodeType":"YulFunctionCall","src":"989:58:17"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"967:8:17","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"977:8:17","type":""}]},{"nodeType":"YulAssignment","src":"1056:18:17","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1066:8:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1056:6:17"}]},{"nodeType":"YulAssignment","src":"1083:18:17","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1093:8:17"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1083:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"1110:48:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1143:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1154:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1139:3:17"},"nodeType":"YulFunctionCall","src":"1139:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1126:12:17"},"nodeType":"YulFunctionCall","src":"1126:32:17"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1114:8:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"1187:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1196:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1199:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1189:6:17"},"nodeType":"YulFunctionCall","src":"1189:12:17"},"nodeType":"YulExpressionStatement","src":"1189:12:17"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1173:8:17"},{"name":"_1","nodeType":"YulIdentifier","src":"1183:2:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1170:2:17"},"nodeType":"YulFunctionCall","src":"1170:16:17"},"nodeType":"YulIf","src":"1167:36:17"},{"nodeType":"YulVariableDeclaration","src":"1212:86:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1268:9:17"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1279:8:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1264:3:17"},"nodeType":"YulFunctionCall","src":"1264:24:17"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1290:7:17"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1238:25:17"},"nodeType":"YulFunctionCall","src":"1238:60:17"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1216:8:17","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1226:8:17","type":""}]},{"nodeType":"YulAssignment","src":"1307:18:17","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1317:8:17"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1307:6:17"}]},{"nodeType":"YulAssignment","src":"1334:18:17","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1344:8:17"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1334:6:17"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"643:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"654:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"666:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"674:6:17","type":""},{"name":"value2","nodeType":"YulTypedName","src":"682:6:17","type":""},{"name":"value3","nodeType":"YulTypedName","src":"690:6:17","type":""},{"name":"value4","nodeType":"YulTypedName","src":"698:6:17","type":""}],"src":"567:791:17"},{"body":{"nodeType":"YulBlock","src":"1433:116:17","statements":[{"body":{"nodeType":"YulBlock","src":"1479:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1488:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1491:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1481:6:17"},"nodeType":"YulFunctionCall","src":"1481:12:17"},"nodeType":"YulExpressionStatement","src":"1481:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1454:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"1463:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1450:3:17"},"nodeType":"YulFunctionCall","src":"1450:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"1475:2:17","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1446:3:17"},"nodeType":"YulFunctionCall","src":"1446:32:17"},"nodeType":"YulIf","src":"1443:52:17"},{"nodeType":"YulAssignment","src":"1504:39:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1533:9:17"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1514:18:17"},"nodeType":"YulFunctionCall","src":"1514:29:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1504:6:17"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1399:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1410:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1422:6:17","type":""}],"src":"1363:186:17"},{"body":{"nodeType":"YulBlock","src":"1638:263:17","statements":[{"body":{"nodeType":"YulBlock","src":"1684:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1693:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1696:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1686:6:17"},"nodeType":"YulFunctionCall","src":"1686:12:17"},"nodeType":"YulExpressionStatement","src":"1686:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1659:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"1668:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1655:3:17"},"nodeType":"YulFunctionCall","src":"1655:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"1680:2:17","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1651:3:17"},"nodeType":"YulFunctionCall","src":"1651:32:17"},"nodeType":"YulIf","src":"1648:52:17"},{"nodeType":"YulAssignment","src":"1709:39:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1738:9:17"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1719:18:17"},"nodeType":"YulFunctionCall","src":"1719:29:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1709:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"1757:45:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1787:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1798:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1783:3:17"},"nodeType":"YulFunctionCall","src":"1783:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1770:12:17"},"nodeType":"YulFunctionCall","src":"1770:32:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1761:5:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"1855:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1864:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1867:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1857:6:17"},"nodeType":"YulFunctionCall","src":"1857:12:17"},"nodeType":"YulExpressionStatement","src":"1857:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1824:5:17"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1845:5:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1838:6:17"},"nodeType":"YulFunctionCall","src":"1838:13:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1831:6:17"},"nodeType":"YulFunctionCall","src":"1831:21:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1821:2:17"},"nodeType":"YulFunctionCall","src":"1821:32:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1814:6:17"},"nodeType":"YulFunctionCall","src":"1814:40:17"},"nodeType":"YulIf","src":"1811:60:17"},{"nodeType":"YulAssignment","src":"1880:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"1890:5:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1880:6:17"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1596:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1607:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1619:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1627:6:17","type":""}],"src":"1554:347:17"},{"body":{"nodeType":"YulBlock","src":"2007:125:17","statements":[{"nodeType":"YulAssignment","src":"2017:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2029:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2040:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2025:3:17"},"nodeType":"YulFunctionCall","src":"2025:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2017:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2059:9:17"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2074:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"2082:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2070:3:17"},"nodeType":"YulFunctionCall","src":"2070:55:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2052:6:17"},"nodeType":"YulFunctionCall","src":"2052:74:17"},"nodeType":"YulExpressionStatement","src":"2052:74:17"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1976:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1987:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1998:4:17","type":""}],"src":"1906:226:17"},{"body":{"nodeType":"YulBlock","src":"2186:233:17","statements":[{"nodeType":"YulAssignment","src":"2196:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2208:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"2211:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2204:3:17"},"nodeType":"YulFunctionCall","src":"2204:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2196:4:17"}]},{"body":{"nodeType":"YulBlock","src":"2245:168:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2266:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2269:77:17","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2259:6:17"},"nodeType":"YulFunctionCall","src":"2259:88:17"},"nodeType":"YulExpressionStatement","src":"2259:88:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2367:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2370:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2360:6:17"},"nodeType":"YulFunctionCall","src":"2360:15:17"},"nodeType":"YulExpressionStatement","src":"2360:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2395:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2398:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2388:6:17"},"nodeType":"YulFunctionCall","src":"2388:15:17"},"nodeType":"YulExpressionStatement","src":"2388:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2228:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"2234:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2225:2:17"},"nodeType":"YulFunctionCall","src":"2225:11:17"},"nodeType":"YulIf","src":"2222:191:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2168:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"2171:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2177:4:17","type":""}],"src":"2137:282:17"},{"body":{"nodeType":"YulBlock","src":"2553:168:17","statements":[{"nodeType":"YulAssignment","src":"2563:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2575:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2586:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2571:3:17"},"nodeType":"YulFunctionCall","src":"2571:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2563:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2605:9:17"},{"name":"value0","nodeType":"YulIdentifier","src":"2616:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2598:6:17"},"nodeType":"YulFunctionCall","src":"2598:25:17"},"nodeType":"YulExpressionStatement","src":"2598:25:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2643:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2654:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2639:3:17"},"nodeType":"YulFunctionCall","src":"2639:18:17"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2663:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"2671:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2659:3:17"},"nodeType":"YulFunctionCall","src":"2659:55:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2632:6:17"},"nodeType":"YulFunctionCall","src":"2632:83:17"},"nodeType":"YulExpressionStatement","src":"2632:83:17"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2514:9:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2525:6:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2533:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2544:4:17","type":""}],"src":"2424:297:17"},{"body":{"nodeType":"YulBlock","src":"2900:227:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2917:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2928:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2910:6:17"},"nodeType":"YulFunctionCall","src":"2910:21:17"},"nodeType":"YulExpressionStatement","src":"2910:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2951:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2962:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2947:3:17"},"nodeType":"YulFunctionCall","src":"2947:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"2967:2:17","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2940:6:17"},"nodeType":"YulFunctionCall","src":"2940:30:17"},"nodeType":"YulExpressionStatement","src":"2940:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2990:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3001:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2986:3:17"},"nodeType":"YulFunctionCall","src":"2986:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642074","kind":"string","nodeType":"YulLiteral","src":"3006:34:17","type":"","value":"FirewallConsumer: Not approved t"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2979:6:17"},"nodeType":"YulFunctionCall","src":"2979:62:17"},"nodeType":"YulExpressionStatement","src":"2979:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3061:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3072:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3057:3:17"},"nodeType":"YulFunctionCall","src":"3057:18:17"},{"hexValue":"6172676574","kind":"string","nodeType":"YulLiteral","src":"3077:7:17","type":"","value":"arget"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3050:6:17"},"nodeType":"YulFunctionCall","src":"3050:35:17"},"nodeType":"YulExpressionStatement","src":"3050:35:17"},{"nodeType":"YulAssignment","src":"3094:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3106:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3117:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3102:3:17"},"nodeType":"YulFunctionCall","src":"3102:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3094:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2877:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2891:4:17","type":""}],"src":"2726:401:17"},{"body":{"nodeType":"YulBlock","src":"3279:124:17","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3302:3:17"},{"name":"value0","nodeType":"YulIdentifier","src":"3307:6:17"},{"name":"value1","nodeType":"YulIdentifier","src":"3315:6:17"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3289:12:17"},"nodeType":"YulFunctionCall","src":"3289:33:17"},"nodeType":"YulExpressionStatement","src":"3289:33:17"},{"nodeType":"YulVariableDeclaration","src":"3331:26:17","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3345:3:17"},{"name":"value1","nodeType":"YulIdentifier","src":"3350:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3341:3:17"},"nodeType":"YulFunctionCall","src":"3341:16:17"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3335:2:17","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3373:2:17"},{"kind":"number","nodeType":"YulLiteral","src":"3377:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3366:6:17"},"nodeType":"YulFunctionCall","src":"3366:13:17"},"nodeType":"YulExpressionStatement","src":"3366:13:17"},{"nodeType":"YulAssignment","src":"3388:9:17","value":{"name":"_1","nodeType":"YulIdentifier","src":"3395:2:17"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3388:3:17"}]}]},"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":"3247:3:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3252:6:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3260:6:17","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3271:3:17","type":""}],"src":"3132:271:17"},{"body":{"nodeType":"YulBlock","src":"3582:228:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3599:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3610:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3592:6:17"},"nodeType":"YulFunctionCall","src":"3592:21:17"},"nodeType":"YulExpressionStatement","src":"3592:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3633:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3644:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3629:3:17"},"nodeType":"YulFunctionCall","src":"3629:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"3649:2:17","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3622:6:17"},"nodeType":"YulFunctionCall","src":"3622:30:17"},"nodeType":"YulExpressionStatement","src":"3622:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3672:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3683:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3668:3:17"},"nodeType":"YulFunctionCall","src":"3668:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f206d657461207472616e7361","kind":"string","nodeType":"YulLiteral","src":"3688:34:17","type":"","value":"FirewallConsumer: No meta transa"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3661:6:17"},"nodeType":"YulFunctionCall","src":"3661:62:17"},"nodeType":"YulExpressionStatement","src":"3661:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3743:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3754:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3739:3:17"},"nodeType":"YulFunctionCall","src":"3739:18:17"},{"hexValue":"6374696f6e73","kind":"string","nodeType":"YulLiteral","src":"3759:8:17","type":"","value":"ctions"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3732:6:17"},"nodeType":"YulFunctionCall","src":"3732:36:17"},"nodeType":"YulExpressionStatement","src":"3732:36:17"},{"nodeType":"YulAssignment","src":"3777:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3789:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3800:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3785:3:17"},"nodeType":"YulFunctionCall","src":"3785:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3777:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3559:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3573:4:17","type":""}],"src":"3408:402:17"},{"body":{"nodeType":"YulBlock","src":"3989:226:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4006:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4017:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3999:6:17"},"nodeType":"YulFunctionCall","src":"3999:21:17"},"nodeType":"YulExpressionStatement","src":"3999:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4040:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4051:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4036:3:17"},"nodeType":"YulFunctionCall","src":"4036:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4056:2:17","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4029:6:17"},"nodeType":"YulFunctionCall","src":"4029:30:17"},"nodeType":"YulExpressionStatement","src":"4029:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4079:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4090:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4075:3:17"},"nodeType":"YulFunctionCall","src":"4075:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"4095:34:17","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4068:6:17"},"nodeType":"YulFunctionCall","src":"4068:62:17"},"nodeType":"YulExpressionStatement","src":"4068:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4150:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4161:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4146:3:17"},"nodeType":"YulFunctionCall","src":"4146:18:17"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"4166:6:17","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4139:6:17"},"nodeType":"YulFunctionCall","src":"4139:34:17"},"nodeType":"YulExpressionStatement","src":"4139:34:17"},{"nodeType":"YulAssignment","src":"4182:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4194:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4205:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4190:3:17"},"nodeType":"YulFunctionCall","src":"4190:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4182:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3966:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3980:4:17","type":""}],"src":"3815:400:17"},{"body":{"nodeType":"YulBlock","src":"4394:180:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4411:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4422:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4404:6:17"},"nodeType":"YulFunctionCall","src":"4404:21:17"},"nodeType":"YulExpressionStatement","src":"4404:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4445:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4456:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4441:3:17"},"nodeType":"YulFunctionCall","src":"4441:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4461:2:17","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4434:6:17"},"nodeType":"YulFunctionCall","src":"4434:30:17"},"nodeType":"YulExpressionStatement","src":"4434:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4484:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4495:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4480:3:17"},"nodeType":"YulFunctionCall","src":"4480:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"4500:32:17","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4473:6:17"},"nodeType":"YulFunctionCall","src":"4473:60:17"},"nodeType":"YulExpressionStatement","src":"4473:60:17"},{"nodeType":"YulAssignment","src":"4542:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4554:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4565:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4550:3:17"},"nodeType":"YulFunctionCall","src":"4550:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4542:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4371:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4385:4:17","type":""}],"src":"4220:354:17"},{"body":{"nodeType":"YulBlock","src":"4753:181:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4770:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4781:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4763:6:17"},"nodeType":"YulFunctionCall","src":"4763:21:17"},"nodeType":"YulExpressionStatement","src":"4763:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4804:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4815:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4800:3:17"},"nodeType":"YulFunctionCall","src":"4800:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4820:2:17","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4793:6:17"},"nodeType":"YulFunctionCall","src":"4793:30:17"},"nodeType":"YulExpressionStatement","src":"4793:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4843:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4854:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4839:3:17"},"nodeType":"YulFunctionCall","src":"4839:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"4859:33:17","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4832:6:17"},"nodeType":"YulFunctionCall","src":"4832:61:17"},"nodeType":"YulExpressionStatement","src":"4832:61:17"},{"nodeType":"YulAssignment","src":"4902:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4914:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4925:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4910:3:17"},"nodeType":"YulFunctionCall","src":"4910:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4902:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4730:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4744:4:17","type":""}],"src":"4579:355:17"},{"body":{"nodeType":"YulBlock","src":"5038:149:17","statements":[{"nodeType":"YulAssignment","src":"5048:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5060:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5071:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5056:3:17"},"nodeType":"YulFunctionCall","src":"5056:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5048:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5090:9:17"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5105:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"5113:66:17","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5101:3:17"},"nodeType":"YulFunctionCall","src":"5101:79:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5083:6:17"},"nodeType":"YulFunctionCall","src":"5083:98:17"},"nodeType":"YulExpressionStatement","src":"5083:98:17"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5007:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5018:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5029:4:17","type":""}],"src":"4939:248:17"},{"body":{"nodeType":"YulBlock","src":"5258:184:17","statements":[{"nodeType":"YulVariableDeclaration","src":"5268:10:17","value":{"kind":"number","nodeType":"YulLiteral","src":"5277:1:17","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5272:1:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"5337:63:17","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5362:3:17"},{"name":"i","nodeType":"YulIdentifier","src":"5367:1:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5358:3:17"},"nodeType":"YulFunctionCall","src":"5358:11:17"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5381:3:17"},{"name":"i","nodeType":"YulIdentifier","src":"5386:1:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5377:3:17"},"nodeType":"YulFunctionCall","src":"5377:11:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5371:5:17"},"nodeType":"YulFunctionCall","src":"5371:18:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5351:6:17"},"nodeType":"YulFunctionCall","src":"5351:39:17"},"nodeType":"YulExpressionStatement","src":"5351:39:17"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5298:1:17"},{"name":"length","nodeType":"YulIdentifier","src":"5301:6:17"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5295:2:17"},"nodeType":"YulFunctionCall","src":"5295:13:17"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5309:19:17","statements":[{"nodeType":"YulAssignment","src":"5311:15:17","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5320:1:17"},{"kind":"number","nodeType":"YulLiteral","src":"5323:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5316:3:17"},"nodeType":"YulFunctionCall","src":"5316:10:17"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5311:1:17"}]}]},"pre":{"nodeType":"YulBlock","src":"5291:3:17","statements":[]},"src":"5287:113:17"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5420:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"5425:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5416:3:17"},"nodeType":"YulFunctionCall","src":"5416:16:17"},{"kind":"number","nodeType":"YulLiteral","src":"5434:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5409:6:17"},"nodeType":"YulFunctionCall","src":"5409:27:17"},"nodeType":"YulExpressionStatement","src":"5409:27:17"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"5236:3:17","type":""},{"name":"dst","nodeType":"YulTypedName","src":"5241:3:17","type":""},{"name":"length","nodeType":"YulTypedName","src":"5246:6:17","type":""}],"src":"5192:250:17"},{"body":{"nodeType":"YulBlock","src":"5584:150:17","statements":[{"nodeType":"YulVariableDeclaration","src":"5594:27:17","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5614:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5608:5:17"},"nodeType":"YulFunctionCall","src":"5608:13:17"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5598:6:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5669:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"5677:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5665:3:17"},"nodeType":"YulFunctionCall","src":"5665:17:17"},{"name":"pos","nodeType":"YulIdentifier","src":"5684:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"5689:6:17"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"5630:34:17"},"nodeType":"YulFunctionCall","src":"5630:66:17"},"nodeType":"YulExpressionStatement","src":"5630:66:17"},{"nodeType":"YulAssignment","src":"5705:23:17","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5716:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"5721:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5712:3:17"},"nodeType":"YulFunctionCall","src":"5712:16:17"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5705:3:17"}]}]},"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":"5560:3:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5565:6:17","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5576:3:17","type":""}],"src":"5447:287:17"},{"body":{"nodeType":"YulBlock","src":"5913:179:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5930:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5941:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5923:6:17"},"nodeType":"YulFunctionCall","src":"5923:21:17"},"nodeType":"YulExpressionStatement","src":"5923:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5964:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5975:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5960:3:17"},"nodeType":"YulFunctionCall","src":"5960:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"5980:2:17","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5953:6:17"},"nodeType":"YulFunctionCall","src":"5953:30:17"},"nodeType":"YulExpressionStatement","src":"5953:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6003:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6014:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5999:3:17"},"nodeType":"YulFunctionCall","src":"5999:18:17"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6019:31:17","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5992:6:17"},"nodeType":"YulFunctionCall","src":"5992:59:17"},"nodeType":"YulExpressionStatement","src":"5992:59:17"},{"nodeType":"YulAssignment","src":"6060:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6072:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6083:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6068:3:17"},"nodeType":"YulFunctionCall","src":"6068:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6060:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5890:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5904:4:17","type":""}],"src":"5739:353:17"},{"body":{"nodeType":"YulBlock","src":"6218:334:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6235:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6246:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6228:6:17"},"nodeType":"YulFunctionCall","src":"6228:21:17"},"nodeType":"YulExpressionStatement","src":"6228:21:17"},{"nodeType":"YulVariableDeclaration","src":"6258:27:17","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6278:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6272:5:17"},"nodeType":"YulFunctionCall","src":"6272:13:17"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6262:6:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6305:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6316:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6301:3:17"},"nodeType":"YulFunctionCall","src":"6301:18:17"},{"name":"length","nodeType":"YulIdentifier","src":"6321:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6294:6:17"},"nodeType":"YulFunctionCall","src":"6294:34:17"},"nodeType":"YulExpressionStatement","src":"6294:34:17"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6376:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"6384:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6372:3:17"},"nodeType":"YulFunctionCall","src":"6372:15:17"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6393:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6404:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6389:3:17"},"nodeType":"YulFunctionCall","src":"6389:18:17"},{"name":"length","nodeType":"YulIdentifier","src":"6409:6:17"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"6337:34:17"},"nodeType":"YulFunctionCall","src":"6337:79:17"},"nodeType":"YulExpressionStatement","src":"6337:79:17"},{"nodeType":"YulAssignment","src":"6425:121:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6441:9:17"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6460:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"6468:2:17","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6456:3:17"},"nodeType":"YulFunctionCall","src":"6456:15:17"},{"kind":"number","nodeType":"YulLiteral","src":"6473:66:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6452:3:17"},"nodeType":"YulFunctionCall","src":"6452:88:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6437:3:17"},"nodeType":"YulFunctionCall","src":"6437:104:17"},{"kind":"number","nodeType":"YulLiteral","src":"6543:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6433:3:17"},"nodeType":"YulFunctionCall","src":"6433:113:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6425:4:17"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6187:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6198:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6209:4:17","type":""}],"src":"6097:455:17"}]},"contents":"{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\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_addresst_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 := abi_decode_address(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_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function 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 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_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not approved t\")\n        mstore(add(headStart, 96), \"arget\")\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 abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"FirewallConsumer: No meta transa\")\n        mstore(add(headStart, 96), \"ctions\")\n        tail := add(headStart, 128)\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 abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\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":17,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100655760003560e01c80638c36d02d116100435780638c36d02d146100b4578063b7f9a748146100d4578063f05c8582146100f457600080fd5b80631a8828f41461006a578063734b71981461007f5780637c65c38b1461009f575b600080fd5b61007d610078366004610bda565b610132565b005b34801561008b57600080fd5b5061007d61009a366004610c5b565b61033e565b3480156100ab57600080fd5b5061007d6104dc565b3480156100c057600080fd5b5061007d6100cf366004610c5b565b610606565b3480156100e057600080fd5b5061007d6100ef366004610c76565b610767565b34801561010057600080fd5b506101096108c5565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061016060017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610cb2565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101b0835490565b1415905080610246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564207460448201527f617267657400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610270837f0c908cff000000000000000000000000000000000000000000000000000000006108fa565b61027957600080fd5b60008873ffffffffffffffffffffffffffffffffffffffff1688886040516102a2929190610cec565b6000604051808303816000865af19150503d80600081146102df576040519150601f19603f3d011682016040523d82523d6000602084013e6102e4565b606091505b50509050806102f257600080fd5b6103323087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109cb92505050565b50505050505050505050565b61037061036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610429576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b73ffffffffffffffffffffffffffffffffffffffff81166104a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f20616464726573730000604482015260640161023d565b6104d96104d460017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610cb2565b829055565b50565b61050a61036c60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e00604482015260640161023d565b6105d16105cc60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b61063461036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b61071b6104d460017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610cb2565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b61079561036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161023d565b600061087b60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610cb2565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b60006108f561036c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610cb2565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156109b2575060208210155b80156109be5750600081115b9450505050505b92915050565b60606109f08383604051806060016040528060278152602001610d8e602791396109f7565b9392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610a219190610d20565b600060405180830381855af49150503d8060008114610a5c576040519150601f19603f3d011682016040523d82523d6000602084013e610a61565b606091505b5091509150610a7286838387610a7c565b9695505050505050565b60608315610b12578251600003610b0b5773ffffffffffffffffffffffffffffffffffffffff85163b610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161023d565b5081610b1c565b610b1c8383610b24565b949350505050565b815115610b345781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023d9190610d3c565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b8c57600080fd5b919050565b60008083601f840112610ba357600080fd5b50813567ffffffffffffffff811115610bbb57600080fd5b602083019150836020828501011115610bd357600080fd5b9250929050565b600080600080600060608688031215610bf257600080fd5b610bfb86610b68565b9450602086013567ffffffffffffffff80821115610c1857600080fd5b610c2489838a01610b91565b90965094506040880135915080821115610c3d57600080fd5b50610c4a88828901610b91565b969995985093965092949392505050565b600060208284031215610c6d57600080fd5b6109f082610b68565b60008060408385031215610c8957600080fd5b610c9283610b68565b915060208301358015158114610ca757600080fd5b809150509250929050565b818103818111156109c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610d17578181015183820152602001610cff565b50506000910152565b60008251610d32818460208701610cfc565b9190910192915050565b6020815260008251806020840152610d5b816040850160208701610cfc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208597407084d37b9458e3377247e3f51cdbc73c4e375f93017889ad19f66d95ef64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xB7F9A748 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x7F JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0x9F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7D PUSH2 0x78 CALLDATASIZE PUSH1 0x4 PUSH2 0xBDA JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0x9A CALLDATASIZE PUSH1 0x4 PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x33E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0x4DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0xC5B JUMP JUMPDEST PUSH2 0x606 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0xC76 JUMP JUMPDEST PUSH2 0x767 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x8C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x160 PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1B0 DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x246 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6172676574000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x270 DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x8FA JUMP JUMPDEST PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2A2 SWAP3 SWAP2 SWAP1 PUSH2 0xCEC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2DF 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 0x2E4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x332 ADDRESS DUP8 DUP8 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 0x9CB SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x370 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x429 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 PUSH2 0x23D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x4D9 PUSH2 0x4D4 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xCB2 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x50A PUSH2 0x36C PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x59E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23D JUMP JUMPDEST PUSH2 0x5D1 PUSH2 0x5CC PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x634 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6ED 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 PUSH2 0x23D JUMP JUMPDEST PUSH2 0x71B PUSH2 0x4D4 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x795 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x84E 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 PUSH2 0x23D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87B PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xCB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8F5 PUSH2 0x36C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xCB2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0x9B2 JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x9BE JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9F0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD8E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x9F7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xA21 SWAP2 SWAP1 PUSH2 0xD20 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA5C 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 0xA61 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xA72 DUP7 DUP4 DUP4 DUP8 PUSH2 0xA7C JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xB12 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xB0B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xB0B 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 0x23D JUMP JUMPDEST POP DUP2 PUSH2 0xB1C JUMP JUMPDEST PUSH2 0xB1C DUP4 DUP4 PUSH2 0xB24 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xB34 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x23D SWAP2 SWAP1 PUSH2 0xD3C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xBA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xBD3 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 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBFB DUP7 PUSH2 0xB68 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC24 DUP10 DUP4 DUP11 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xC3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC4A DUP9 DUP3 DUP10 ADD PUSH2 0xB91 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9F0 DUP3 PUSH2 0xB68 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC92 DUP4 PUSH2 0xB68 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xCA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9C5 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0xD17 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCFF JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xD32 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xCFC 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 0xD5B DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xCFC 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 0x70667358221220859740 PUSH17 0x84D37B9458E3377247E3F51CDBC73C4E37 0x5F SWAP4 ADD PUSH25 0x89AD19F66D95EF64736F6C6343000813003300000000000000 ","sourceMap":"584:1556:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8869:401:7;;;;;;:::i;:::-;;:::i;:::-;;10543:241;;;;;;;;;;-1:-1:-1;10543:241:7;;;;;:::i;:::-;;:::i;10853:280::-;;;;;;;;;;;;;:::i;10201:176::-;;;;;;;;;;-1:-1:-1;10201:176:7;;;;;:::i;:::-;;:::i;9595:239::-;;;;;;;;;;-1:-1:-1;9595:239:7;;;;;:::i;:::-;;:::i;9905:136::-;;;;;;;;;;;;;:::i;:::-;;;2082:42:17;2070:55;;;2052:74;;2040:2;2025:18;9905:136:7;;;;;;;8869:401;9028:6;7439:13;1791:50;1840:1;1799:37;1791:50;:::i;:::-;7465:49;;;;;;2598:25:17;;;;2671:42;2659:55;;2639:18;;;2632:83;2571:18;;7465:49:7;;;;;;;;;;;;7455:60;;;;;;7439:76;;7525:21;7583:1;7575:10;;7549:22;7565:5;12928:12;;12806:150;7549:22;:36;;7525:60;;7603:16;7595:66;;;;;;;2928:2:17;7595:66:7;;;2910:21:17;2967:2;2947:18;;;2940:30;3006:34;2986:18;;;2979:62;3077:7;3057:18;;;3050:35;3102:19;;7595:66:7;;;;;;;;;7679:99;7726:6;1582:18;7679:46;:99::i;:::-;7671:108;;;;;;9047:12:::1;9065:6;:11;;9077:13;;9065:26;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9046:45;;;9109:7;9101:16;;;::::0;::::1;;9214:49;9251:4;9258;;9214:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;9214:28:7::1;::::0;-1:-1:-1;;;9214:49:7:i:1;:::-;;9036:234;7159:638:::0;;8869:401;;;;;;:::o;10543:241::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;:::-;12928:12;;12806:150;7951:46;7937:60;;:10;:60;;;7929:109;;;;;;;4017:2:17;7929:109:7;;;3999:21:17;4056:2;4036:18;;;4029:30;4095:34;4075:18;;;4068:62;4166:6;4146:18;;;4139:34;4190:19;;7929:109:7;3815:400:17;7929:109:7;10638:28:::1;::::0;::::1;10630:71;;;::::0;::::1;::::0;;4422:2:17;10630:71:7::1;::::0;::::1;4404:21:17::0;4461:2;4441:18;;;4434:30;4500:32;4480:18;;;4473:60;4550:18;;10630:71:7::1;4220:354:17::0;10630:71:7::1;10711:66;1453:52;1504:1;1461:39;1453:52;:::i;:::-;10762:14:::0;12264:23;;12162:141;10711:66:::1;10543:241:::0;:::o;10853:280::-;10925:50;1453:52;1504:1;1461:39;1453:52;:::i;10925:50::-;10911:64;;:10;:64;;;10903:108;;;;;;;4781:2:17;10903:108:7;;;4763:21:17;4820:2;4800:18;;;4793:30;4859:33;4839:18;;;4832:61;4910:18;;10903:108:7;4579:355:17;10903:108:7;11021:58;1243:48;1290:1;1251:35;1243:48;:::i;:::-;11068:10;12264:23;;12162:141;11021:58;11094:32;;11115:10;2052:74:17;;11094:32:7;;2040:2:17;2025:18;11094:32:7;;;;;;;10853:280::o;10201:176::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;7951:46::-;7937:60;;:10;:60;;;7929:109;;;;;;;4017:2:17;7929:109:7;;;3999:21:17;4056:2;4036:18;;;4029:30;4095:34;4075:18;;;4068:62;4166:6;4146:18;;;4139:34;4190:19;;7929:109:7;3815:400:17;7929:109:7;10278:51:::1;1069:42;1110:1;1077:29;1069:42;:::i;10278:51::-;10344:26;::::0;2082:42:17;2070:55;;2052:74;;10344:26:7::1;::::0;2040:2:17;2025:18;10344:26:7::1;;;;;;;10201:176:::0;:::o;9595:239::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;7951:46::-;7937:60;;:10;:60;;;7929:109;;;;;;;4017:2:17;7929:109:7;;;3999:21:17;4056:2;4036:18;;;4029:30;4095:34;4075:18;;;4068:62;4166:6;4146:18;;;4139:34;4190:19;;7929:109:7;3815:400:17;7929:109:7;9688:13:::1;1791:50;1840:1;1799:37;1791:50;:::i;:::-;9714:49;::::0;;::::1;::::0;::::1;2598:25:17::0;;;;2671:42;2659:55;;2639:18;;;2632:83;2571:18;;9714:49:7::1;;;;;;;;;;;;9704:60;;;;;;9688:76;;9811:6;9804:5;9797:21;9783:45;9595:239:::0;;:::o;9905:136::-;9962:7;9988:46;1243:48;1290:1;1251:35;1243:48;:::i;9988:46::-;9981:53;;9905:136;:::o;4421:647:4:-;4592:71;;;5113:66:17;5101:79;;4592:71:4;;;;5083:98:17;;;;4592:71:4;;;;;;;;;;5056:18:17;;;;4592:71:4;;;;;;;;;;;4615:34;4592:71;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;;:::o;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:2: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;;;;;;;5941:2:17;8113:60:2;;;5923:21:17;5980:2;5960:18;;;5953:30;6019:31;5999:18;;;5992:59;6068:18;;8113:60:2;5739:353:17;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:196:17:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:347::-;266:8;276:6;330:3;323:4;315:6;311:17;307:27;297:55;;348:1;345;338:12;297:55;-1:-1:-1;371:20:17;;414:18;403:30;;400:50;;;446:1;443;436:12;400:50;483:4;475:6;471:17;459:29;;535:3;528:4;519:6;511;507:19;503:30;500:39;497:59;;;552:1;549;542:12;497:59;215:347;;;;;:::o;567:791::-;666:6;674;682;690;698;751:2;739:9;730:7;726:23;722:32;719:52;;;767:1;764;757:12;719:52;790:29;809:9;790:29;:::i;:::-;780:39;;870:2;859:9;855:18;842:32;893:18;934:2;926:6;923:14;920:34;;;950:1;947;940:12;920:34;989:58;1039:7;1030:6;1019:9;1015:22;989:58;:::i;:::-;1066:8;;-1:-1:-1;963:84:17;-1:-1:-1;1154:2:17;1139:18;;1126:32;;-1:-1:-1;1170:16:17;;;1167:36;;;1199:1;1196;1189:12;1167:36;;1238:60;1290:7;1279:8;1268:9;1264:24;1238:60;:::i;:::-;567:791;;;;-1:-1:-1;567:791:17;;-1:-1:-1;1317:8:17;;1212:86;567:791;-1:-1:-1;;;567:791:17:o;1363:186::-;1422:6;1475:2;1463:9;1454:7;1450:23;1446:32;1443:52;;;1491:1;1488;1481:12;1443:52;1514:29;1533:9;1514:29;:::i;1554:347::-;1619:6;1627;1680:2;1668:9;1659:7;1655:23;1651:32;1648:52;;;1696:1;1693;1686:12;1648:52;1719:29;1738:9;1719:29;:::i;:::-;1709:39;;1798:2;1787:9;1783:18;1770:32;1845:5;1838:13;1831:21;1824:5;1821:32;1811:60;;1867:1;1864;1857:12;1811:60;1890:5;1880:15;;;1554:347;;;;;:::o;2137:282::-;2204:9;;;2225:11;;;2222:191;;;2269:77;2266:1;2259:88;2370:4;2367:1;2360:15;2398:4;2395:1;2388:15;3132:271;3315:6;3307;3302:3;3289:33;3271:3;3341:16;;3366:13;;;3341:16;3132:271;-1:-1:-1;3132:271:17:o;5192:250::-;5277:1;5287:113;5301:6;5298:1;5295:13;5287:113;;;5377:11;;;5371:18;5358:11;;;5351:39;5323:2;5316:10;5287:113;;;-1:-1:-1;;5434:1:17;5416:16;;5409:27;5192:250::o;5447:287::-;5576:3;5614:6;5608:13;5630:66;5689:6;5684:3;5677:4;5669:6;5665:17;5630:66;:::i;:::-;5712:16;;;;;5447:287;-1:-1:-1;;5447:287:17:o;6097:455::-;6246:2;6235:9;6228:21;6209:4;6278:6;6272:13;6321:6;6316:2;6305:9;6301:18;6294:34;6337:79;6409:6;6404:2;6393:9;6389:18;6384:2;6376:6;6372:15;6337:79;:::i;:::-;6468:2;6456:15;6473:66;6452:88;6437:104;;;;6543:2;6433:113;;6097:455;-1:-1:-1;;6097:455:17:o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","firewallAdmin()":"f05c8582","safeFunctionCall(address,bytes,bytes)":"1a8828f4","setApprovedTarget(address,bool)":"b7f9a748","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"targetPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setApprovedTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"safeFunctionCall(address,bytes,bytes)\":{\"details\":\"Allows calling an approved external target 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.\",\"params\":{\"data\":\"data to be executed after the target call\",\"target\":\"address of the target\",\"targetPayload\":\"payload to be sent to the target\"}},\"setApprovedTarget(address,bool)\":{\"details\":\"Allows firewall admin to set approved targets. IMPORTANT: Only set approved target if you know what you're doing. Anyone can cause this contract to send any data to an approved target.\",\"params\":{\"status\":\"status of the target\",\"target\":\"address of the target\"}},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}}},\"title\":\"BeaconProxyFirewallConsumer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"this extension allows the Beacon Proxy Owner to initialize the firewall admin even if the contract was originally deployed with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/proxies/ProxyFirewallConsumerBase.sol\":\"ProxyFirewallConsumerBase\"},\"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\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/FirewallConsumerBase.sol\":{\"keccak256\":\"0x4da0867b995c7a8e0f21ac356af4eee72432ed37633b8ba51ed847d70d29a2d5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6d9749043bb16a28fa0058ff2b303408174e01e18dfb29bc229fc7778c6610eb\",\"dweb:/ipfs/QmfDcQEhe4aAVS6aUULY8aKGUXAdLiHdPNQQsiFjf6LP2x\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0xb9ee7c4bd6e08fd9a5b7945d405604c563b7aa91f06ed46f8eedeae8c5156898\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://858fb99b602da6e34e51e1a40ee945921006c84c08454f22495b224c3abd0ec3\",\"dweb:/ipfs/QmWDFoDrTX2FFjcyY3aooeZxo5TX7sxmoQ3UhcZo7ccGsx\"]},\"contracts/interfaces/IOwnable.sol\":{\"keccak256\":\"0x45b2b806b3c3f90bf684380d722f23d9de67651f3fb6715d1dc2c36812e36768\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fd01f222df5446d79f2438f2c310dbdf96db0783164248b2bab5dfaa078e068\",\"dweb:/ipfs/QmYuDWuE1Ke1oiaErbeBhiqFptinyKWt9GhJtstwhiw8dt\"]},\"contracts/proxies/ProxyFirewallConsumerBase.sol\":{\"keccak256\":\"0x37ee68fa975fba14161dfc225c468236d25d927dcbe25271b6e3f86ca1357d49\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ec8807ff82d2eb410e0079e41bc7566cb220183f759a2eef438dae3e201fffa8\",\"dweb:/ipfs/QmZnM8kCF8yCvVS8uMoz8zyitV11t5LEwD1ypi65E4wj8P\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/proxies/TransparentProxyFirewallConsumer.sol":{"TransparentProxyFirewallConsumer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"initializeFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"targetPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setApprovedTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1451":{"entryPoint":null,"id":1451,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1670":{"entryPoint":null,"id":1670,"parameterSlots":2,"returnSlots":0},"checked_sub_t_uint256":{"entryPoint":129,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:241:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:176:17","statements":[{"nodeType":"YulAssignment","src":"73:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"85:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"88:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"81:3:17"},"nodeType":"YulFunctionCall","src":"81:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"73:4:17"}]},{"body":{"nodeType":"YulBlock","src":"122:111:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"143:1:17","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:3:17","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"155:10:17","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"146:3:17"},"nodeType":"YulFunctionCall","src":"146:20:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"136:6:17"},"nodeType":"YulFunctionCall","src":"136:31:17"},"nodeType":"YulExpressionStatement","src":"136:31:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"187:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"190:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"180:6:17"},"nodeType":"YulFunctionCall","src":"180:15:17"},"nodeType":"YulExpressionStatement","src":"180:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"215:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"218:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"208:6:17"},"nodeType":"YulFunctionCall","src":"208:15:17"},"nodeType":"YulExpressionStatement","src":"208:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"105:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"111:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"102:2:17"},"nodeType":"YulFunctionCall","src":"102:11:17"},"nodeType":"YulIf","src":"99:134:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"45:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"48:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"54:4:17","type":""}],"src":"14:225:17"}]},"contents":"{\n    { }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":17,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060008061004761004260017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610081565b839055565b61007a61007560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610081565b829055565b50506100a8565b818103818111156100a257634e487b7160e01b600052601160045260246000fd5b92915050565b6110fb806100b76000396000f3fe6080604052600436106100705760003560e01c80637eba94711161004e5780637eba9471146100bf5780638c36d02d146100df578063b7f9a748146100ff578063f05c85821461011f57600080fd5b80631a8828f414610075578063734b71981461008a5780637c65c38b146100aa575b600080fd5b610088610083366004610ec8565b61015d565b005b34801561009657600080fd5b506100886100a5366004610f4b565b610369565b3480156100b657600080fd5b50610088610507565b3480156100cb57600080fd5b506100886100da366004610f4b565b610631565b3480156100eb57600080fd5b506100886100fa366004610f4b565b610785565b34801561010b57600080fd5b5061008861011a366004610f68565b6108e6565b34801561012b57600080fd5b50610134610a44565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061018b60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610fa6565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101db835490565b1415905080610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564207460448201527f617267657400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61029b837f0c908cff00000000000000000000000000000000000000000000000000000000610a79565b6102a457600080fd5b60008873ffffffffffffffffffffffffffffffffffffffff1688886040516102cd929190610fe0565b6000604051808303816000865af19150503d806000811461030a576040519150601f19603f3d011682016040523d82523d6000602084013e61030f565b606091505b505090508061031d57600080fd5b61035d3087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b4a92505050565b50505050505050505050565b61039b61039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610454576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b73ffffffffffffffffffffffffffffffffffffffff81166104d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610268565b6105046104ff60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610fa6565b829055565b50565b61053561039760017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610fa6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610268565b6105fc6105f760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103600061065c825490565b905060008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cf9190610ff0565b90503373ffffffffffffffffffffffffffffffffffffffff821614610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2073656e646560448201527f72206973206e6f7420616c6c6f776564000000000000000000000000000000006064820152608401610268565b61077f84610b76565b50505050565b6107b361039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b61089a6104ff60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610fa6565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b61091461039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b60006109fa60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610fa6565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610a7461039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610b31575060208210155b8015610b3d5750600081115b9450505050505b92915050565b6060610b6f838360405180606001604052806027815260200161109f60279139610cec565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f2060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152608401610268565b6000610c4961039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b73ffffffffffffffffffffffffffffffffffffffff16146104d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e60448201527f20616c72656164792073657400000000000000000000000000000000000000006064820152608401610268565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610d169190611031565b600060405180830381855af49150503d8060008114610d51576040519150601f19603f3d011682016040523d82523d6000602084013e610d56565b606091505b5091509150610d6786838387610d71565b9695505050505050565b60608315610e07578251600003610e005773ffffffffffffffffffffffffffffffffffffffff85163b610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610268565b5081610e11565b610e118383610e19565b949350505050565b815115610e295781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610268919061104d565b73ffffffffffffffffffffffffffffffffffffffff8116811461050457600080fd5b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060608688031215610ee057600080fd5b8535610eeb81610e5d565b9450602086013567ffffffffffffffff80821115610f0857600080fd5b610f1489838a01610e7f565b90965094506040880135915080821115610f2d57600080fd5b50610f3a88828901610e7f565b969995985093965092949392505050565b600060208284031215610f5d57600080fd5b8135610b6f81610e5d565b60008060408385031215610f7b57600080fd5b8235610f8681610e5d565b915060208301358015158114610f9b57600080fd5b809150509250929050565b81810381811115610b44577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60006020828403121561100257600080fd5b8151610b6f81610e5d565b60005b83811015611028578181015183820152602001611010565b50506000910152565b6000825161104381846020870161100d565b9190910192915050565b602081526000825180602084015261106c81604085016020870161100d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202bb6d4f1263f38c3059dabbd8e28362d8704913aa7265ae6a3cce0ebf73680ec64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0x47 PUSH2 0x42 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x81 JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x7A PUSH2 0x75 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x81 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP POP PUSH2 0xA8 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xA2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x10FB DUP1 PUSH2 0xB7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7EBA9471 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x7EBA9471 EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xB7F9A748 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x369 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x507 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x631 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x785 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0xF68 JUMP JUMPDEST PUSH2 0x8E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x134 PUSH2 0xA44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x18B PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xFA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1DB DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6172676574000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29B DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xA79 JUMP JUMPDEST PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2CD SWAP3 SWAP2 SWAP1 PUSH2 0xFE0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x30A 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 0x30F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x35D ADDRESS DUP8 DUP8 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 0xB4A SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x39B PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x454 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 PUSH2 0x268 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x504 PUSH2 0x4FF PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xFA6 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x535 PUSH2 0x397 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x5FC PUSH2 0x5F7 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 PUSH1 0x0 PUSH2 0x65C DUP3 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B 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 0x6AB 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 0x6CF SWAP2 SWAP1 PUSH2 0xFF0 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x776 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2073656E6465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206973206E6F7420616C6C6F77656400000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x77F DUP5 PUSH2 0xB76 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x7B3 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x86C 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 PUSH2 0x268 JUMP JUMPDEST PUSH2 0x89A PUSH2 0x4FF PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xFA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x914 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9CD 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 PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9FA PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xFA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA74 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xB31 JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xB3D JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xB6F DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x109F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCEC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xC19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A207A65726F20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6164647265737300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC49 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2061646D696E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20616C7265616479207365740000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xD16 SWAP2 SWAP1 PUSH2 0x1031 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD51 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 0xD56 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD67 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD71 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xE07 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xE00 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xE00 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 0x268 JUMP JUMPDEST POP DUP2 PUSH2 0xE11 JUMP JUMPDEST PUSH2 0xE11 DUP4 DUP4 PUSH2 0xE19 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xE29 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x104D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xE91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xEC1 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 0xEE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xEEB DUP2 PUSH2 0xE5D JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF14 DUP10 DUP4 DUP11 ADD PUSH2 0xE7F JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3A DUP9 DUP3 DUP10 ADD PUSH2 0xE7F JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB6F DUP2 PUSH2 0xE5D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF86 DUP2 PUSH2 0xE5D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xB44 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1002 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB6F DUP2 PUSH2 0xE5D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1028 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1010 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1043 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x100D 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 0x106C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x100D 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 0x706673582212202BB6D4 CALL 0x26 EXTCODEHASH CODESIZE 0xC3 SDIV SWAP14 0xAB 0xBD DUP15 0x28 CALLDATASIZE 0x2D DUP8 DIV SWAP2 GASPRICE 0xA7 0x26 GAS 0xE6 LOG3 0xCC 0xE0 0xEB 0xF7 CALLDATASIZE DUP1 0xEC PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"595:852:16:-:0;;;;;;;;;;;;-1:-1:-1;651:1:15;;8271:51:7;1069:42;1110:1;1077:29;1069:42;:::i;:::-;8312:9;12264:23;;12162:141;8271:51;8332:62;1243:48;1290:1;1251:35;1243:48;:::i;:::-;8379:14;12264:23;;12162:141;8332:62;8184:217;;595:852:16;;14:225:17;81:9;;;102:11;;;99:134;;;155:10;150:3;146:20;143:1;136:31;190:4;187:1;180:15;218:4;215:1;208:15;99:134;14:225;;;;:::o;:::-;595:852:16;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_1680":{"entryPoint":null,"id":1680,"parameterSlots":1,"returnSlots":1},"@_getValueBySlot_1690":{"entryPoint":null,"id":1690,"parameterSlots":1,"returnSlots":1},"@_initializeFirewallAdmin_2450":{"entryPoint":2934,"id":2450,"parameterSlots":1,"returnSlots":0},"@_msgSender_840":{"entryPoint":null,"id":840,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":3609,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1670":{"entryPoint":null,"id":1670,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_1597":{"entryPoint":1287,"id":1597,"parameterSlots":0,"returnSlots":0},"@firewallAdmin_1529":{"entryPoint":2628,"id":1529,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":2890,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":3308,"id":744,"parameterSlots":3,"returnSlots":1},"@initializeFirewallAdmin_2475":{"entryPoint":1585,"id":2475,"parameterSlots":1,"returnSlots":0},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_1495":{"entryPoint":349,"id":1495,"parameterSlots":5,"returnSlots":0},"@setApprovedTarget_1517":{"entryPoint":2278,"id":1517,"parameterSlots":2,"returnSlots":0},"@setFirewallAdmin_1571":{"entryPoint":873,"id":1571,"parameterSlots":1,"returnSlots":0},"@setFirewall_1547":{"entryPoint":1925,"id":1547,"parameterSlots":1,"returnSlots":0},"@supportsERC165InterfaceUnchecked_1043":{"entryPoint":2681,"id":1043,"parameterSlots":2,"returnSlots":1},"@verifyCallResultFromTarget_783":{"entryPoint":3441,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3711,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3915,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":4080,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3944,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":3784,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4064,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4145,"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_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__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":4173,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__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_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47__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},"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":4006,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4109,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_address":{"entryPoint":3677,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8197:17","statements":[{"nodeType":"YulBlock","src":"6:3:17","statements":[]},{"body":{"nodeType":"YulBlock","src":"59:109:17","statements":[{"body":{"nodeType":"YulBlock","src":"146:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"155:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"158:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"148:6:17"},"nodeType":"YulFunctionCall","src":"148:12:17"},"nodeType":"YulExpressionStatement","src":"148:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"82:5:17"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"93:5:17"},{"kind":"number","nodeType":"YulLiteral","src":"100:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"89:3:17"},"nodeType":"YulFunctionCall","src":"89:54:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"79:2:17"},"nodeType":"YulFunctionCall","src":"79:65:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"72:6:17"},"nodeType":"YulFunctionCall","src":"72:73:17"},"nodeType":"YulIf","src":"69:93:17"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"48:5:17","type":""}],"src":"14:154:17"},{"body":{"nodeType":"YulBlock","src":"245:275:17","statements":[{"body":{"nodeType":"YulBlock","src":"294:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"303:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"306:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"296:6:17"},"nodeType":"YulFunctionCall","src":"296:12:17"},"nodeType":"YulExpressionStatement","src":"296:12:17"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"273:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"281:4:17","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"269:3:17"},"nodeType":"YulFunctionCall","src":"269:17:17"},{"name":"end","nodeType":"YulIdentifier","src":"288:3:17"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"265:3:17"},"nodeType":"YulFunctionCall","src":"265:27:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"258:6:17"},"nodeType":"YulFunctionCall","src":"258:35:17"},"nodeType":"YulIf","src":"255:55:17"},{"nodeType":"YulAssignment","src":"319:30:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"342:6:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"329:12:17"},"nodeType":"YulFunctionCall","src":"329:20:17"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"319:6:17"}]},{"body":{"nodeType":"YulBlock","src":"392:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"401:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"404:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"394:6:17"},"nodeType":"YulFunctionCall","src":"394:12:17"},"nodeType":"YulExpressionStatement","src":"394:12:17"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"364:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"372:18:17","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"361:2:17"},"nodeType":"YulFunctionCall","src":"361:30:17"},"nodeType":"YulIf","src":"358:50:17"},{"nodeType":"YulAssignment","src":"417:29:17","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"433:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"441:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"429:3:17"},"nodeType":"YulFunctionCall","src":"429:17:17"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"417:8:17"}]},{"body":{"nodeType":"YulBlock","src":"498:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"507:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"510:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"500:6:17"},"nodeType":"YulFunctionCall","src":"500:12:17"},"nodeType":"YulExpressionStatement","src":"500:12:17"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"469:6:17"},{"name":"length","nodeType":"YulIdentifier","src":"477:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"465:3:17"},"nodeType":"YulFunctionCall","src":"465:19:17"},{"kind":"number","nodeType":"YulLiteral","src":"486:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"461:3:17"},"nodeType":"YulFunctionCall","src":"461:30:17"},{"name":"end","nodeType":"YulIdentifier","src":"493:3:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"458:2:17"},"nodeType":"YulFunctionCall","src":"458:39:17"},"nodeType":"YulIf","src":"455:59:17"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"208:6:17","type":""},{"name":"end","nodeType":"YulTypedName","src":"216:3:17","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"224:8:17","type":""},{"name":"length","nodeType":"YulTypedName","src":"234:6:17","type":""}],"src":"173:347:17"},{"body":{"nodeType":"YulBlock","src":"667:710:17","statements":[{"body":{"nodeType":"YulBlock","src":"713:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"722:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"725:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"715:6:17"},"nodeType":"YulFunctionCall","src":"715:12:17"},"nodeType":"YulExpressionStatement","src":"715:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"688:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"697:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"684:3:17"},"nodeType":"YulFunctionCall","src":"684:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"709:2:17","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"680:3:17"},"nodeType":"YulFunctionCall","src":"680:32:17"},"nodeType":"YulIf","src":"677:52:17"},{"nodeType":"YulVariableDeclaration","src":"738:36:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"764:9:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"751:12:17"},"nodeType":"YulFunctionCall","src":"751:23:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"742:5:17","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"808:5:17"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"783:24:17"},"nodeType":"YulFunctionCall","src":"783:31:17"},"nodeType":"YulExpressionStatement","src":"783:31:17"},{"nodeType":"YulAssignment","src":"823:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"833:5:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"823:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"847:46:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"878:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"889:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"874:3:17"},"nodeType":"YulFunctionCall","src":"874:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"861:12:17"},"nodeType":"YulFunctionCall","src":"861:32:17"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"851:6:17","type":""}]},{"nodeType":"YulVariableDeclaration","src":"902:28:17","value":{"kind":"number","nodeType":"YulLiteral","src":"912:18:17","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"906:2:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"957:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"966:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"969:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"959:6:17"},"nodeType":"YulFunctionCall","src":"959:12:17"},"nodeType":"YulExpressionStatement","src":"959:12:17"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"945:6:17"},{"name":"_1","nodeType":"YulIdentifier","src":"953:2:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"942:2:17"},"nodeType":"YulFunctionCall","src":"942:14:17"},"nodeType":"YulIf","src":"939:34:17"},{"nodeType":"YulVariableDeclaration","src":"982:84:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1038:9:17"},{"name":"offset","nodeType":"YulIdentifier","src":"1049:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1034:3:17"},"nodeType":"YulFunctionCall","src":"1034:22:17"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1058:7:17"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1008:25:17"},"nodeType":"YulFunctionCall","src":"1008:58:17"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"986:8:17","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"996:8:17","type":""}]},{"nodeType":"YulAssignment","src":"1075:18:17","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1085:8:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1075:6:17"}]},{"nodeType":"YulAssignment","src":"1102:18:17","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1112:8:17"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1102:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"1129:48:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1162:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1173:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1158:3:17"},"nodeType":"YulFunctionCall","src":"1158:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1145:12:17"},"nodeType":"YulFunctionCall","src":"1145:32:17"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1133:8:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"1206:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1215:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1218:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1208:6:17"},"nodeType":"YulFunctionCall","src":"1208:12:17"},"nodeType":"YulExpressionStatement","src":"1208:12:17"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1192:8:17"},{"name":"_1","nodeType":"YulIdentifier","src":"1202:2:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1189:2:17"},"nodeType":"YulFunctionCall","src":"1189:16:17"},"nodeType":"YulIf","src":"1186:36:17"},{"nodeType":"YulVariableDeclaration","src":"1231:86:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1287:9:17"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1298:8:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1283:3:17"},"nodeType":"YulFunctionCall","src":"1283:24:17"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1309:7:17"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1257:25:17"},"nodeType":"YulFunctionCall","src":"1257:60:17"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1235:8:17","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1245:8:17","type":""}]},{"nodeType":"YulAssignment","src":"1326:18:17","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1336:8:17"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1326:6:17"}]},{"nodeType":"YulAssignment","src":"1353:18:17","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1363:8:17"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1353:6:17"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"601:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"612:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"624:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"632:6:17","type":""},{"name":"value2","nodeType":"YulTypedName","src":"640:6:17","type":""},{"name":"value3","nodeType":"YulTypedName","src":"648:6:17","type":""},{"name":"value4","nodeType":"YulTypedName","src":"656:6:17","type":""}],"src":"525:852:17"},{"body":{"nodeType":"YulBlock","src":"1452:177:17","statements":[{"body":{"nodeType":"YulBlock","src":"1498:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1507:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1510:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1500:6:17"},"nodeType":"YulFunctionCall","src":"1500:12:17"},"nodeType":"YulExpressionStatement","src":"1500:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1473:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"1482:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1469:3:17"},"nodeType":"YulFunctionCall","src":"1469:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"1494:2:17","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1465:3:17"},"nodeType":"YulFunctionCall","src":"1465:32:17"},"nodeType":"YulIf","src":"1462:52:17"},{"nodeType":"YulVariableDeclaration","src":"1523:36:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1549:9:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1536:12:17"},"nodeType":"YulFunctionCall","src":"1536:23:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1527:5:17","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1593:5:17"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1568:24:17"},"nodeType":"YulFunctionCall","src":"1568:31:17"},"nodeType":"YulExpressionStatement","src":"1568:31:17"},{"nodeType":"YulAssignment","src":"1608:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"1618:5:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1608:6:17"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1418:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1429:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1441:6:17","type":""}],"src":"1382:247:17"},{"body":{"nodeType":"YulBlock","src":"1718:332:17","statements":[{"body":{"nodeType":"YulBlock","src":"1764:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1773:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1776:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1766:6:17"},"nodeType":"YulFunctionCall","src":"1766:12:17"},"nodeType":"YulExpressionStatement","src":"1766:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1739:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"1748:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1735:3:17"},"nodeType":"YulFunctionCall","src":"1735:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"1760:2:17","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1731:3:17"},"nodeType":"YulFunctionCall","src":"1731:32:17"},"nodeType":"YulIf","src":"1728:52:17"},{"nodeType":"YulVariableDeclaration","src":"1789:36:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1815:9:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1802:12:17"},"nodeType":"YulFunctionCall","src":"1802:23:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1793:5:17","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1859:5:17"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1834:24:17"},"nodeType":"YulFunctionCall","src":"1834:31:17"},"nodeType":"YulExpressionStatement","src":"1834:31:17"},{"nodeType":"YulAssignment","src":"1874:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"1884:5:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1874:6:17"}]},{"nodeType":"YulVariableDeclaration","src":"1898:47:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1930:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"1941:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1926:3:17"},"nodeType":"YulFunctionCall","src":"1926:18:17"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1913:12:17"},"nodeType":"YulFunctionCall","src":"1913:32:17"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"1902:7:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"2002:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2011:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2014:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2004:6:17"},"nodeType":"YulFunctionCall","src":"2004:12:17"},"nodeType":"YulExpressionStatement","src":"2004:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1967:7:17"},{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"1990:7:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1983:6:17"},"nodeType":"YulFunctionCall","src":"1983:15:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1976:6:17"},"nodeType":"YulFunctionCall","src":"1976:23:17"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1964:2:17"},"nodeType":"YulFunctionCall","src":"1964:36:17"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1957:6:17"},"nodeType":"YulFunctionCall","src":"1957:44:17"},"nodeType":"YulIf","src":"1954:64:17"},{"nodeType":"YulAssignment","src":"2027:17:17","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2037:7:17"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2027:6:17"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1676:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1687:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1699:6:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1707:6:17","type":""}],"src":"1634:416:17"},{"body":{"nodeType":"YulBlock","src":"2156:125:17","statements":[{"nodeType":"YulAssignment","src":"2166:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2178:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2189:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2174:3:17"},"nodeType":"YulFunctionCall","src":"2174:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2166:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2208:9:17"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2223:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"2231:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2219:3:17"},"nodeType":"YulFunctionCall","src":"2219:55:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2201:6:17"},"nodeType":"YulFunctionCall","src":"2201:74:17"},"nodeType":"YulExpressionStatement","src":"2201:74:17"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2125:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2136:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2147:4:17","type":""}],"src":"2055:226:17"},{"body":{"nodeType":"YulBlock","src":"2335:233:17","statements":[{"nodeType":"YulAssignment","src":"2345:17:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2357:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"2360:1:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2353:3:17"},"nodeType":"YulFunctionCall","src":"2353:9:17"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2345:4:17"}]},{"body":{"nodeType":"YulBlock","src":"2394:168:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2415:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2418:77:17","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2408:6:17"},"nodeType":"YulFunctionCall","src":"2408:88:17"},"nodeType":"YulExpressionStatement","src":"2408:88:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2516:1:17","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2519:4:17","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2509:6:17"},"nodeType":"YulFunctionCall","src":"2509:15:17"},"nodeType":"YulExpressionStatement","src":"2509:15:17"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2544:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2547:4:17","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2537:6:17"},"nodeType":"YulFunctionCall","src":"2537:15:17"},"nodeType":"YulExpressionStatement","src":"2537:15:17"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2377:4:17"},{"name":"x","nodeType":"YulIdentifier","src":"2383:1:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2374:2:17"},"nodeType":"YulFunctionCall","src":"2374:11:17"},"nodeType":"YulIf","src":"2371:191:17"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2317:1:17","type":""},{"name":"y","nodeType":"YulTypedName","src":"2320:1:17","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2326:4:17","type":""}],"src":"2286:282:17"},{"body":{"nodeType":"YulBlock","src":"2702:168:17","statements":[{"nodeType":"YulAssignment","src":"2712:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2724:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2735:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2720:3:17"},"nodeType":"YulFunctionCall","src":"2720:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2712:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2754:9:17"},{"name":"value0","nodeType":"YulIdentifier","src":"2765:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2747:6:17"},"nodeType":"YulFunctionCall","src":"2747:25:17"},"nodeType":"YulExpressionStatement","src":"2747:25:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2792:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"2803:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2788:3:17"},"nodeType":"YulFunctionCall","src":"2788:18:17"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2812:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"2820:42:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2808:3:17"},"nodeType":"YulFunctionCall","src":"2808:55:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2781:6:17"},"nodeType":"YulFunctionCall","src":"2781:83:17"},"nodeType":"YulExpressionStatement","src":"2781:83:17"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2663:9:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2674:6:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2682:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2693:4:17","type":""}],"src":"2573:297:17"},{"body":{"nodeType":"YulBlock","src":"3049:227:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3066:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3077:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3059:6:17"},"nodeType":"YulFunctionCall","src":"3059:21:17"},"nodeType":"YulExpressionStatement","src":"3059:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3100:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3111:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3096:3:17"},"nodeType":"YulFunctionCall","src":"3096:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"3116:2:17","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3089:6:17"},"nodeType":"YulFunctionCall","src":"3089:30:17"},"nodeType":"YulExpressionStatement","src":"3089:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3139:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3150:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3135:3:17"},"nodeType":"YulFunctionCall","src":"3135:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642074","kind":"string","nodeType":"YulLiteral","src":"3155:34:17","type":"","value":"FirewallConsumer: Not approved t"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3128:6:17"},"nodeType":"YulFunctionCall","src":"3128:62:17"},"nodeType":"YulExpressionStatement","src":"3128:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3210:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3221:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3206:3:17"},"nodeType":"YulFunctionCall","src":"3206:18:17"},{"hexValue":"6172676574","kind":"string","nodeType":"YulLiteral","src":"3226:7:17","type":"","value":"arget"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3199:6:17"},"nodeType":"YulFunctionCall","src":"3199:35:17"},"nodeType":"YulExpressionStatement","src":"3199:35:17"},{"nodeType":"YulAssignment","src":"3243:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3255:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3266:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3251:3:17"},"nodeType":"YulFunctionCall","src":"3251:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3243:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3026:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3040:4:17","type":""}],"src":"2875:401:17"},{"body":{"nodeType":"YulBlock","src":"3428:124:17","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3451:3:17"},{"name":"value0","nodeType":"YulIdentifier","src":"3456:6:17"},{"name":"value1","nodeType":"YulIdentifier","src":"3464:6:17"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3438:12:17"},"nodeType":"YulFunctionCall","src":"3438:33:17"},"nodeType":"YulExpressionStatement","src":"3438:33:17"},{"nodeType":"YulVariableDeclaration","src":"3480:26:17","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3494:3:17"},{"name":"value1","nodeType":"YulIdentifier","src":"3499:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3490:3:17"},"nodeType":"YulFunctionCall","src":"3490:16:17"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3484:2:17","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3522:2:17"},{"kind":"number","nodeType":"YulLiteral","src":"3526:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3515:6:17"},"nodeType":"YulFunctionCall","src":"3515:13:17"},"nodeType":"YulExpressionStatement","src":"3515:13:17"},{"nodeType":"YulAssignment","src":"3537:9:17","value":{"name":"_1","nodeType":"YulIdentifier","src":"3544:2:17"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3537:3:17"}]}]},"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":"3396:3:17","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3401:6:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3409:6:17","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3420:3:17","type":""}],"src":"3281:271:17"},{"body":{"nodeType":"YulBlock","src":"3731:228:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3748:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3759:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3741:6:17"},"nodeType":"YulFunctionCall","src":"3741:21:17"},"nodeType":"YulExpressionStatement","src":"3741:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3782:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3793:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3778:3:17"},"nodeType":"YulFunctionCall","src":"3778:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"3798:2:17","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3771:6:17"},"nodeType":"YulFunctionCall","src":"3771:30:17"},"nodeType":"YulExpressionStatement","src":"3771:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3821:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3832:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3817:3:17"},"nodeType":"YulFunctionCall","src":"3817:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f206d657461207472616e7361","kind":"string","nodeType":"YulLiteral","src":"3837:34:17","type":"","value":"FirewallConsumer: No meta transa"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3810:6:17"},"nodeType":"YulFunctionCall","src":"3810:62:17"},"nodeType":"YulExpressionStatement","src":"3810:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3892:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3903:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3888:3:17"},"nodeType":"YulFunctionCall","src":"3888:18:17"},{"hexValue":"6374696f6e73","kind":"string","nodeType":"YulLiteral","src":"3908:8:17","type":"","value":"ctions"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3881:6:17"},"nodeType":"YulFunctionCall","src":"3881:36:17"},"nodeType":"YulExpressionStatement","src":"3881:36:17"},{"nodeType":"YulAssignment","src":"3926:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3938:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"3949:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3934:3:17"},"nodeType":"YulFunctionCall","src":"3934:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3926:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3708:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3722:4:17","type":""}],"src":"3557:402:17"},{"body":{"nodeType":"YulBlock","src":"4138:226:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4155:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4166:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4148:6:17"},"nodeType":"YulFunctionCall","src":"4148:21:17"},"nodeType":"YulExpressionStatement","src":"4148:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4189:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4200:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4185:3:17"},"nodeType":"YulFunctionCall","src":"4185:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4205:2:17","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4178:6:17"},"nodeType":"YulFunctionCall","src":"4178:30:17"},"nodeType":"YulExpressionStatement","src":"4178:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4228:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4239:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4224:3:17"},"nodeType":"YulFunctionCall","src":"4224:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"4244:34:17","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4217:6:17"},"nodeType":"YulFunctionCall","src":"4217:62:17"},"nodeType":"YulExpressionStatement","src":"4217:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4299:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4310:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4295:3:17"},"nodeType":"YulFunctionCall","src":"4295:18:17"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"4315:6:17","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4288:6:17"},"nodeType":"YulFunctionCall","src":"4288:34:17"},"nodeType":"YulExpressionStatement","src":"4288:34:17"},{"nodeType":"YulAssignment","src":"4331:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4343:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4354:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4339:3:17"},"nodeType":"YulFunctionCall","src":"4339:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4331:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4115:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4129:4:17","type":""}],"src":"3964:400:17"},{"body":{"nodeType":"YulBlock","src":"4543:180:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4560:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4571:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4553:6:17"},"nodeType":"YulFunctionCall","src":"4553:21:17"},"nodeType":"YulExpressionStatement","src":"4553:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4594:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4605:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4590:3:17"},"nodeType":"YulFunctionCall","src":"4590:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4610:2:17","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4583:6:17"},"nodeType":"YulFunctionCall","src":"4583:30:17"},"nodeType":"YulExpressionStatement","src":"4583:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4633:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4644:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4629:3:17"},"nodeType":"YulFunctionCall","src":"4629:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"4649:32:17","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4622:6:17"},"nodeType":"YulFunctionCall","src":"4622:60:17"},"nodeType":"YulExpressionStatement","src":"4622:60:17"},{"nodeType":"YulAssignment","src":"4691:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4703:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4714:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4699:3:17"},"nodeType":"YulFunctionCall","src":"4699:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4691:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4520:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4534:4:17","type":""}],"src":"4369:354:17"},{"body":{"nodeType":"YulBlock","src":"4902:181:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4919:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4930:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4912:6:17"},"nodeType":"YulFunctionCall","src":"4912:21:17"},"nodeType":"YulExpressionStatement","src":"4912:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4953:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"4964:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4949:3:17"},"nodeType":"YulFunctionCall","src":"4949:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"4969:2:17","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4942:6:17"},"nodeType":"YulFunctionCall","src":"4942:30:17"},"nodeType":"YulExpressionStatement","src":"4942:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4992:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5003:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4988:3:17"},"nodeType":"YulFunctionCall","src":"4988:18:17"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"5008:33:17","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4981:6:17"},"nodeType":"YulFunctionCall","src":"4981:61:17"},"nodeType":"YulExpressionStatement","src":"4981:61:17"},{"nodeType":"YulAssignment","src":"5051:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5063:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5074:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5059:3:17"},"nodeType":"YulFunctionCall","src":"5059:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5051:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4879:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4893:4:17","type":""}],"src":"4728:355:17"},{"body":{"nodeType":"YulBlock","src":"5169:170:17","statements":[{"body":{"nodeType":"YulBlock","src":"5215:16:17","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5224:1:17","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5227:1:17","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5217:6:17"},"nodeType":"YulFunctionCall","src":"5217:12:17"},"nodeType":"YulExpressionStatement","src":"5217:12:17"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5190:7:17"},{"name":"headStart","nodeType":"YulIdentifier","src":"5199:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5186:3:17"},"nodeType":"YulFunctionCall","src":"5186:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"5211:2:17","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5182:3:17"},"nodeType":"YulFunctionCall","src":"5182:32:17"},"nodeType":"YulIf","src":"5179:52:17"},{"nodeType":"YulVariableDeclaration","src":"5240:29:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5259:9:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5253:5:17"},"nodeType":"YulFunctionCall","src":"5253:16:17"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5244:5:17","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5303:5:17"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"5278:24:17"},"nodeType":"YulFunctionCall","src":"5278:31:17"},"nodeType":"YulExpressionStatement","src":"5278:31:17"},{"nodeType":"YulAssignment","src":"5318:15:17","value":{"name":"value","nodeType":"YulIdentifier","src":"5328:5:17"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5318:6:17"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5135:9:17","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5146:7:17","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5158:6:17","type":""}],"src":"5088:251:17"},{"body":{"nodeType":"YulBlock","src":"5518:238:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5535:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5546:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5528:6:17"},"nodeType":"YulFunctionCall","src":"5528:21:17"},"nodeType":"YulExpressionStatement","src":"5528:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5569:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5580:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5565:3:17"},"nodeType":"YulFunctionCall","src":"5565:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"5585:2:17","type":"","value":"48"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5558:6:17"},"nodeType":"YulFunctionCall","src":"5558:30:17"},"nodeType":"YulExpressionStatement","src":"5558:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5608:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5619:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5604:3:17"},"nodeType":"YulFunctionCall","src":"5604:18:17"},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a2073656e6465","kind":"string","nodeType":"YulLiteral","src":"5624:34:17","type":"","value":"ProxyFirewallConsumerBase: sende"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5597:6:17"},"nodeType":"YulFunctionCall","src":"5597:62:17"},"nodeType":"YulExpressionStatement","src":"5597:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5679:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5690:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5675:3:17"},"nodeType":"YulFunctionCall","src":"5675:18:17"},{"hexValue":"72206973206e6f7420616c6c6f776564","kind":"string","nodeType":"YulLiteral","src":"5695:18:17","type":"","value":"r is not allowed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5668:6:17"},"nodeType":"YulFunctionCall","src":"5668:46:17"},"nodeType":"YulExpressionStatement","src":"5668:46:17"},{"nodeType":"YulAssignment","src":"5723:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5735:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5746:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5731:3:17"},"nodeType":"YulFunctionCall","src":"5731:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5723:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5495:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5509:4:17","type":""}],"src":"5344:412:17"},{"body":{"nodeType":"YulBlock","src":"5860:149:17","statements":[{"nodeType":"YulAssignment","src":"5870:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5882:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"5893:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5878:3:17"},"nodeType":"YulFunctionCall","src":"5878:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5870:4:17"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5912:9:17"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5927:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"5935:66:17","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5923:3:17"},"nodeType":"YulFunctionCall","src":"5923:79:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5905:6:17"},"nodeType":"YulFunctionCall","src":"5905:98:17"},"nodeType":"YulExpressionStatement","src":"5905:98:17"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5829:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5840:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5851:4:17","type":""}],"src":"5761:248:17"},{"body":{"nodeType":"YulBlock","src":"6188:229:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6205:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6216:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6198:6:17"},"nodeType":"YulFunctionCall","src":"6198:21:17"},"nodeType":"YulExpressionStatement","src":"6198:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6239:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6250:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6235:3:17"},"nodeType":"YulFunctionCall","src":"6235:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"6255:2:17","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6228:6:17"},"nodeType":"YulFunctionCall","src":"6228:30:17"},"nodeType":"YulExpressionStatement","src":"6228:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6278:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6289:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6274:3:17"},"nodeType":"YulFunctionCall","src":"6274:18:17"},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f20","kind":"string","nodeType":"YulLiteral","src":"6294:34:17","type":"","value":"ProxyFirewallConsumerBase: zero "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6267:6:17"},"nodeType":"YulFunctionCall","src":"6267:62:17"},"nodeType":"YulExpressionStatement","src":"6267:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6349:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6360:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6345:3:17"},"nodeType":"YulFunctionCall","src":"6345:18:17"},{"hexValue":"61646472657373","kind":"string","nodeType":"YulLiteral","src":"6365:9:17","type":"","value":"address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6338:6:17"},"nodeType":"YulFunctionCall","src":"6338:37:17"},"nodeType":"YulExpressionStatement","src":"6338:37:17"},{"nodeType":"YulAssignment","src":"6384:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6396:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6407:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6392:3:17"},"nodeType":"YulFunctionCall","src":"6392:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6384:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6165:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6179:4:17","type":""}],"src":"6014:403:17"},{"body":{"nodeType":"YulBlock","src":"6596:234:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6613:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6624:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6606:6:17"},"nodeType":"YulFunctionCall","src":"6606:21:17"},"nodeType":"YulExpressionStatement","src":"6606:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6647:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6658:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:17"},"nodeType":"YulFunctionCall","src":"6643:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"6663:2:17","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6636:6:17"},"nodeType":"YulFunctionCall","src":"6636:30:17"},"nodeType":"YulExpressionStatement","src":"6636:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6686:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6697:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6682:3:17"},"nodeType":"YulFunctionCall","src":"6682:18:17"},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e","kind":"string","nodeType":"YulLiteral","src":"6702:34:17","type":"","value":"ProxyFirewallConsumerBase: admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6675:6:17"},"nodeType":"YulFunctionCall","src":"6675:62:17"},"nodeType":"YulExpressionStatement","src":"6675:62:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6757:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6768:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6753:3:17"},"nodeType":"YulFunctionCall","src":"6753:18:17"},{"hexValue":"20616c726561647920736574","kind":"string","nodeType":"YulLiteral","src":"6773:14:17","type":"","value":" already set"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6746:6:17"},"nodeType":"YulFunctionCall","src":"6746:42:17"},"nodeType":"YulExpressionStatement","src":"6746:42:17"},{"nodeType":"YulAssignment","src":"6797:27:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6809:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"6820:3:17","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6805:3:17"},"nodeType":"YulFunctionCall","src":"6805:19:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6797:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6573:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6587:4:17","type":""}],"src":"6422:408:17"},{"body":{"nodeType":"YulBlock","src":"6901:184:17","statements":[{"nodeType":"YulVariableDeclaration","src":"6911:10:17","value":{"kind":"number","nodeType":"YulLiteral","src":"6920:1:17","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"6915:1:17","type":""}]},{"body":{"nodeType":"YulBlock","src":"6980:63:17","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7005:3:17"},{"name":"i","nodeType":"YulIdentifier","src":"7010:1:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7001:3:17"},"nodeType":"YulFunctionCall","src":"7001:11:17"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7024:3:17"},{"name":"i","nodeType":"YulIdentifier","src":"7029:1:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7020:3:17"},"nodeType":"YulFunctionCall","src":"7020:11:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7014:5:17"},"nodeType":"YulFunctionCall","src":"7014:18:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6994:6:17"},"nodeType":"YulFunctionCall","src":"6994:39:17"},"nodeType":"YulExpressionStatement","src":"6994:39:17"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6941:1:17"},{"name":"length","nodeType":"YulIdentifier","src":"6944:6:17"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6938:2:17"},"nodeType":"YulFunctionCall","src":"6938:13:17"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6952:19:17","statements":[{"nodeType":"YulAssignment","src":"6954:15:17","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6963:1:17"},{"kind":"number","nodeType":"YulLiteral","src":"6966:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6959:3:17"},"nodeType":"YulFunctionCall","src":"6959:10:17"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6954:1:17"}]}]},"pre":{"nodeType":"YulBlock","src":"6934:3:17","statements":[]},"src":"6930:113:17"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7063:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"7068:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7059:3:17"},"nodeType":"YulFunctionCall","src":"7059:16:17"},{"kind":"number","nodeType":"YulLiteral","src":"7077:1:17","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7052:6:17"},"nodeType":"YulFunctionCall","src":"7052:27:17"},"nodeType":"YulExpressionStatement","src":"7052:27:17"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"6879:3:17","type":""},{"name":"dst","nodeType":"YulTypedName","src":"6884:3:17","type":""},{"name":"length","nodeType":"YulTypedName","src":"6889:6:17","type":""}],"src":"6835:250:17"},{"body":{"nodeType":"YulBlock","src":"7227:150:17","statements":[{"nodeType":"YulVariableDeclaration","src":"7237:27:17","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7257:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7251:5:17"},"nodeType":"YulFunctionCall","src":"7251:13:17"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7241:6:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7312:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"7320:4:17","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7308:3:17"},"nodeType":"YulFunctionCall","src":"7308:17:17"},{"name":"pos","nodeType":"YulIdentifier","src":"7327:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"7332:6:17"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7273:34:17"},"nodeType":"YulFunctionCall","src":"7273:66:17"},"nodeType":"YulExpressionStatement","src":"7273:66:17"},{"nodeType":"YulAssignment","src":"7348:23:17","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7359:3:17"},{"name":"length","nodeType":"YulIdentifier","src":"7364:6:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7355:3:17"},"nodeType":"YulFunctionCall","src":"7355:16:17"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7348:3:17"}]}]},"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":"7203:3:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7208:6:17","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7219:3:17","type":""}],"src":"7090:287:17"},{"body":{"nodeType":"YulBlock","src":"7556:179:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7573:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"7584:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7566:6:17"},"nodeType":"YulFunctionCall","src":"7566:21:17"},"nodeType":"YulExpressionStatement","src":"7566:21:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7607:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"7618:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7603:3:17"},"nodeType":"YulFunctionCall","src":"7603:18:17"},{"kind":"number","nodeType":"YulLiteral","src":"7623:2:17","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7596:6:17"},"nodeType":"YulFunctionCall","src":"7596:30:17"},"nodeType":"YulExpressionStatement","src":"7596:30:17"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7646:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"7657:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7642:3:17"},"nodeType":"YulFunctionCall","src":"7642:18:17"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"7662:31:17","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7635:6:17"},"nodeType":"YulFunctionCall","src":"7635:59:17"},"nodeType":"YulExpressionStatement","src":"7635:59:17"},{"nodeType":"YulAssignment","src":"7703:26:17","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7715:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"7726:2:17","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7711:3:17"},"nodeType":"YulFunctionCall","src":"7711:18:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7703:4:17"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7533:9:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7547:4:17","type":""}],"src":"7382:353:17"},{"body":{"nodeType":"YulBlock","src":"7861:334:17","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7878:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"7889:2:17","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7871:6:17"},"nodeType":"YulFunctionCall","src":"7871:21:17"},"nodeType":"YulExpressionStatement","src":"7871:21:17"},{"nodeType":"YulVariableDeclaration","src":"7901:27:17","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7921:6:17"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7915:5:17"},"nodeType":"YulFunctionCall","src":"7915:13:17"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7905:6:17","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7948:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"7959:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7944:3:17"},"nodeType":"YulFunctionCall","src":"7944:18:17"},{"name":"length","nodeType":"YulIdentifier","src":"7964:6:17"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7937:6:17"},"nodeType":"YulFunctionCall","src":"7937:34:17"},"nodeType":"YulExpressionStatement","src":"7937:34:17"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8019:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"8027:2:17","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8015:3:17"},"nodeType":"YulFunctionCall","src":"8015:15:17"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8036:9:17"},{"kind":"number","nodeType":"YulLiteral","src":"8047:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8032:3:17"},"nodeType":"YulFunctionCall","src":"8032:18:17"},{"name":"length","nodeType":"YulIdentifier","src":"8052:6:17"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7980:34:17"},"nodeType":"YulFunctionCall","src":"7980:79:17"},"nodeType":"YulExpressionStatement","src":"7980:79:17"},{"nodeType":"YulAssignment","src":"8068:121:17","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8084:9:17"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8103:6:17"},{"kind":"number","nodeType":"YulLiteral","src":"8111:2:17","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8099:3:17"},"nodeType":"YulFunctionCall","src":"8099:15:17"},{"kind":"number","nodeType":"YulLiteral","src":"8116:66:17","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8095:3:17"},"nodeType":"YulFunctionCall","src":"8095:88:17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8080:3:17"},"nodeType":"YulFunctionCall","src":"8080:104:17"},{"kind":"number","nodeType":"YulLiteral","src":"8186:2:17","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8076:3:17"},"nodeType":"YulFunctionCall","src":"8076:113:17"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8068:4:17"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7830:9:17","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7841:6:17","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7852:4:17","type":""}],"src":"7740:455:17"}]},"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_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_addresst_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        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\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_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_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_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 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_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_ff756868ad8fbc347a4c04b1d2aa20e7bd753fa1d6e20830760611b5d2930686__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not approved t\")\n        mstore(add(headStart, 96), \"arget\")\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 abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"FirewallConsumer: No meta transa\")\n        mstore(add(headStart, 96), \"ctions\")\n        tail := add(headStart, 128)\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 abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\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_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"ProxyFirewallConsumerBase: sende\")\n        mstore(add(headStart, 96), \"r is not allowed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_encode_tuple_t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"ProxyFirewallConsumerBase: zero \")\n        mstore(add(headStart, 96), \"address\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ProxyFirewallConsumerBase: admin\")\n        mstore(add(headStart, 96), \" already set\")\n        tail := add(headStart, 128)\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":17,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100705760003560e01c80637eba94711161004e5780637eba9471146100bf5780638c36d02d146100df578063b7f9a748146100ff578063f05c85821461011f57600080fd5b80631a8828f414610075578063734b71981461008a5780637c65c38b146100aa575b600080fd5b610088610083366004610ec8565b61015d565b005b34801561009657600080fd5b506100886100a5366004610f4b565b610369565b3480156100b657600080fd5b50610088610507565b3480156100cb57600080fd5b506100886100da366004610f4b565b610631565b3480156100eb57600080fd5b506100886100fa366004610f4b565b610785565b34801561010b57600080fd5b5061008861011a366004610f68565b6108e6565b34801561012b57600080fd5b50610134610a44565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061018b60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610fa6565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101db835490565b1415905080610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564207460448201527f617267657400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61029b837f0c908cff00000000000000000000000000000000000000000000000000000000610a79565b6102a457600080fd5b60008873ffffffffffffffffffffffffffffffffffffffff1688886040516102cd929190610fe0565b6000604051808303816000865af19150503d806000811461030a576040519150601f19603f3d011682016040523d82523d6000602084013e61030f565b606091505b505090508061031d57600080fd5b61035d3087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b4a92505050565b50505050505050505050565b61039b61039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610454576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b73ffffffffffffffffffffffffffffffffffffffff81166104d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610268565b6105046104ff60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610fa6565b829055565b50565b61053561039760017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610fa6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610268565b6105fc6105f760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103600061065c825490565b905060008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cf9190610ff0565b90503373ffffffffffffffffffffffffffffffffffffffff821614610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2073656e646560448201527f72206973206e6f7420616c6c6f776564000000000000000000000000000000006064820152608401610268565b61077f84610b76565b50505050565b6107b361039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b61089a6104ff60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610fa6565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b61091461039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b60006109fa60017fbee718c342db2a725c831b0c655757cef911f31a4454aacc1b8b75f39bda09a9610fa6565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610a7461039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610b31575060208210155b8015610b3d5750600081115b9450505050505b92915050565b6060610b6f838360405180606001604052806027815260200161109f60279139610cec565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f2060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152608401610268565b6000610c4961039760017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610fa6565b73ffffffffffffffffffffffffffffffffffffffff16146104d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e60448201527f20616c72656164792073657400000000000000000000000000000000000000006064820152608401610268565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610d169190611031565b600060405180830381855af49150503d8060008114610d51576040519150601f19603f3d011682016040523d82523d6000602084013e610d56565b606091505b5091509150610d6786838387610d71565b9695505050505050565b60608315610e07578251600003610e005773ffffffffffffffffffffffffffffffffffffffff85163b610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610268565b5081610e11565b610e118383610e19565b949350505050565b815115610e295781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610268919061104d565b73ffffffffffffffffffffffffffffffffffffffff8116811461050457600080fd5b60008083601f840112610e9157600080fd5b50813567ffffffffffffffff811115610ea957600080fd5b602083019150836020828501011115610ec157600080fd5b9250929050565b600080600080600060608688031215610ee057600080fd5b8535610eeb81610e5d565b9450602086013567ffffffffffffffff80821115610f0857600080fd5b610f1489838a01610e7f565b90965094506040880135915080821115610f2d57600080fd5b50610f3a88828901610e7f565b969995985093965092949392505050565b600060208284031215610f5d57600080fd5b8135610b6f81610e5d565b60008060408385031215610f7b57600080fd5b8235610f8681610e5d565b915060208301358015158114610f9b57600080fd5b809150509250929050565b81810381811115610b44577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60006020828403121561100257600080fd5b8151610b6f81610e5d565b60005b83811015611028578181015183820152602001611010565b50506000910152565b6000825161104381846020870161100d565b9190910192915050565b602081526000825180602084015261106c81604085016020870161100d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202bb6d4f1263f38c3059dabbd8e28362d8704913aa7265ae6a3cce0ebf73680ec64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7EBA9471 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x7EBA9471 EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xB7F9A748 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0xEC8 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x369 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x507 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x631 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xF4B JUMP JUMPDEST PUSH2 0x785 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0xF68 JUMP JUMPDEST PUSH2 0x8E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x134 PUSH2 0xA44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x18B PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xFA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1DB DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642074 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6172676574000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29B DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xA79 JUMP JUMPDEST PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x2CD SWAP3 SWAP2 SWAP1 PUSH2 0xFE0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x30A 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 0x30F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x35D ADDRESS DUP8 DUP8 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 0xB4A SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x39B PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x454 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 PUSH2 0x268 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x504 PUSH2 0x4FF PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xFA6 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x535 PUSH2 0x397 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x5FC PUSH2 0x5F7 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 PUSH1 0x0 PUSH2 0x65C DUP3 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B 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 0x6AB 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 0x6CF SWAP2 SWAP1 PUSH2 0xFF0 JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x776 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2073656E6465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206973206E6F7420616C6C6F77656400000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x77F DUP5 PUSH2 0xB76 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x7B3 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x86C 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 PUSH2 0x268 JUMP JUMPDEST PUSH2 0x89A PUSH2 0x4FF PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xFA6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x914 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9CD 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 PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9FA PUSH1 0x1 PUSH32 0xBEE718C342DB2A725C831B0C655757CEF911F31A4454AACC1B8B75F39BDA09A9 PUSH2 0xFA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA74 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xB31 JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xB3D JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xB6F DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x109F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCEC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xC19 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A207A65726F20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6164647265737300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC49 PUSH2 0x397 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xFA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2061646D696E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20616C7265616479207365740000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xD16 SWAP2 SWAP1 PUSH2 0x1031 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD51 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 0xD56 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD67 DUP7 DUP4 DUP4 DUP8 PUSH2 0xD71 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xE07 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xE00 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xE00 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 0x268 JUMP JUMPDEST POP DUP2 PUSH2 0xE11 JUMP JUMPDEST PUSH2 0xE11 DUP4 DUP4 PUSH2 0xE19 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xE29 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x104D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xE91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xEA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xEC1 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 0xEE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xEEB DUP2 PUSH2 0xE5D JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF14 DUP10 DUP4 DUP11 ADD PUSH2 0xE7F JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF3A DUP9 DUP3 DUP10 ADD PUSH2 0xE7F JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB6F DUP2 PUSH2 0xE5D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xF86 DUP2 PUSH2 0xE5D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xB44 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1002 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB6F DUP2 PUSH2 0xE5D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1028 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1010 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1043 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x100D 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 0x106C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x100D 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 0x706673582212202BB6D4 CALL 0x26 EXTCODEHASH CODESIZE 0xC3 SDIV SWAP14 0xAB 0xBD DUP15 0x28 CALLDATASIZE 0x2D DUP8 DIV SWAP2 GASPRICE 0xA7 0x26 GAS 0xE6 LOG3 0xCC 0xE0 0xEB 0xF7 CALLDATASIZE DUP1 0xEC PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"595:852:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8869:401:7;;;;;;:::i;:::-;;:::i;:::-;;10543:241;;;;;;;;;;-1:-1:-1;10543:241:7;;;;;:::i;:::-;;:::i;10853:280::-;;;;;;;;;;;;;:::i;1283:162:16:-;;;;;;;;;;-1:-1:-1;1283:162:16;;;;;:::i;:::-;;:::i;10201:176:7:-;;;;;;;;;;-1:-1:-1;10201:176:7;;;;;:::i;:::-;;:::i;9595:239::-;;;;;;;;;;-1:-1:-1;9595:239:7;;;;;:::i;:::-;;:::i;9905:136::-;;;;;;;;;;;;;:::i;:::-;;;2231:42:17;2219:55;;;2201:74;;2189:2;2174:18;9905:136:7;;;;;;;8869:401;9028:6;7439:13;1791:50;1840:1;1799:37;1791:50;:::i;:::-;7465:49;;;;;;2747:25:17;;;;2820:42;2808:55;;2788:18;;;2781:83;2720:18;;7465:49:7;;;;;;;;;;;;7455:60;;;;;;7439:76;;7525:21;7583:1;7575:10;;7549:22;7565:5;12928:12;;12806:150;7549:22;:36;;7525:60;;7603:16;7595:66;;;;;;;3077:2:17;7595:66:7;;;3059:21:17;3116:2;3096:18;;;3089:30;3155:34;3135:18;;;3128:62;3226:7;3206:18;;;3199:35;3251:19;;7595:66:7;;;;;;;;;7679:99;7726:6;1582:18;7679:46;:99::i;:::-;7671:108;;;;;;9047:12:::1;9065:6;:11;;9077:13;;9065:26;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9046:45;;;9109:7;9101:16;;;::::0;::::1;;9214:49;9251:4;9258;;9214:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;9214:28:7::1;::::0;-1:-1:-1;;;9214:49:7:i:1;:::-;;9036:234;7159:638:::0;;8869:401;;;;;;:::o;10543:241::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;:::-;12928:12;;12806:150;7951:46;7937:60;;:10;:60;;;7929:109;;;;;;;4166:2:17;7929:109:7;;;4148:21:17;4205:2;4185:18;;;4178:30;4244:34;4224:18;;;4217:62;4315:6;4295:18;;;4288:34;4339:19;;7929:109:7;3964:400:17;7929:109:7;10638:28:::1;::::0;::::1;10630:71;;;::::0;::::1;::::0;;4571:2:17;10630:71:7::1;::::0;::::1;4553:21:17::0;4610:2;4590:18;;;4583:30;4649:32;4629:18;;;4622:60;4699:18;;10630:71:7::1;4369:354:17::0;10630:71:7::1;10711:66;1453:52;1504:1;1461:39;1453:52;:::i;:::-;10762:14:::0;12264:23;;12162:141;10711:66:::1;10543:241:::0;:::o;10853:280::-;10925:50;1453:52;1504:1;1461:39;1453:52;:::i;10925:50::-;10911:64;;:10;:64;;;10903:108;;;;;;;4930:2:17;10903:108:7;;;4912:21:17;4969:2;4949:18;;;4942:30;5008:33;4988:18;;;4981:61;5059:18;;10903:108:7;4728:355:17;10903:108:7;11021:58;1243:48;1290:1;1251:35;1243:48;:::i;:::-;11068:10;12264:23;;12162:141;11021:58;11094:32;;11115:10;2201:74:17;;11094:32:7;;2189:2:17;2174:18;11094:32:7;;;;;;;10853:280::o;1283:162:16:-;792:66;1361:16;1103:37:15;792:66:16;12928:12:7;;12806:150;1103:37:15;1074:66;;1150:24;1186:18;1177:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1150:63;-1:-1:-1;1231:10:15;:30;;;;1223:91;;;;;;;5546:2:17;1223:91:15;;;5528:21:17;5585:2;5565:18;;;5558:30;5624:34;5604:18;;;5597:62;5695:18;5675;;;5668:46;5731:19;;1223:91:15;5344:412:17;1223:91:15;1398:40:16::1;1423:14;1398:24;:40::i;:::-;1064:268:15::0;;1283:162:16;;:::o;10201:176:7:-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;7951:46::-;7937:60;;:10;:60;;;7929:109;;;;;;;4166:2:17;7929:109:7;;;4148:21:17;4205:2;4185:18;;;4178:30;4244:34;4224:18;;;4217:62;4315:6;4295:18;;;4288:34;4339:19;;7929:109:7;3964:400:17;7929:109:7;10278:51:::1;1069:42;1110:1;1077:29;1069:42;:::i;10278:51::-;10344:26;::::0;2231:42:17;2219:55;;2201:74;;10344:26:7::1;::::0;2189:2:17;2174:18;10344:26:7::1;;;;;;;10201:176:::0;:::o;9595:239::-;7951:46;1243:48;1290:1;1251:35;1243:48;:::i;7951:46::-;7937:60;;:10;:60;;;7929:109;;;;;;;4166:2:17;7929:109:7;;;4148:21:17;4205:2;4185:18;;;4178:30;4244:34;4224:18;;;4217:62;4315:6;4295:18;;;4288:34;4339:19;;7929:109:7;3964:400:17;7929:109:7;9688:13:::1;1791:50;1840:1;1799:37;1791:50;:::i;:::-;9714:49;::::0;;::::1;::::0;::::1;2747:25:17::0;;;;2820:42;2808:55;;2788:18;;;2781:83;2720:18;;9714:49:7::1;;;;;;;;;;;;9704:60;;;;;;9688:76;;9811:6;9804:5;9797:21;9783:45;9595:239:::0;;:::o;9905:136::-;9962:7;9988:46;1243:48;1290:1;1251:35;1243:48;:::i;9988:46::-;9981:53;;9905:136;:::o;4421:647:4:-;4592:71;;;5935:66:17;5923:79;;4592:71:4;;;;5905:98:17;;;;4592:71:4;;;;;;;;;;5878:18:17;;;;4592:71:4;;;;;;;;;;;4615:34;4592:71;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;;:::o;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:2:o;1770:368:15:-;1855:28;;;1847:80;;;;;;;6216:2:17;1847:80:15;;;6198:21:17;6255:2;6235:18;;;6228:30;6294:34;6274:18;;;6267:62;6365:9;6345:18;;;6338:37;6392:19;;1847:80:15;6014:403:17;1847:80:15;2003:1;1945:46;736:48;783:1;744:35;736:48;:::i;1945:46::-;:60;;;1937:117;;;;;;;6624:2:17;1937:117:15;;;6606:21:17;6663:2;6643:18;;;6636:30;6702:34;6682:18;;;6675:62;6773:14;6753:18;;;6746:42;6805:19;;1937:117:15;6422:408:17;7058:325:2;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;;;;;;;7584:2:17;8113:60:2;;;7566:21:17;7623:2;7603:18;;;7596:30;7662:31;7642:18;;;7635:59;7711:18;;8113:60:2;7382:353:17;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:17:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:347;224:8;234:6;288:3;281:4;273:6;269:17;265:27;255:55;;306:1;303;296:12;255:55;-1:-1:-1;329:20:17;;372:18;361:30;;358:50;;;404:1;401;394:12;358:50;441:4;433:6;429:17;417:29;;493:3;486:4;477:6;469;465:19;461:30;458:39;455:59;;;510:1;507;500:12;455:59;173:347;;;;;:::o;525:852::-;624:6;632;640;648;656;709:2;697:9;688:7;684:23;680:32;677:52;;;725:1;722;715:12;677:52;764:9;751:23;783:31;808:5;783:31;:::i;:::-;833:5;-1:-1:-1;889:2:17;874:18;;861:32;912:18;942:14;;;939:34;;;969:1;966;959:12;939:34;1008:58;1058:7;1049:6;1038:9;1034:22;1008:58;:::i;:::-;1085:8;;-1:-1:-1;982:84:17;-1:-1:-1;1173:2:17;1158:18;;1145:32;;-1:-1:-1;1189:16:17;;;1186:36;;;1218:1;1215;1208:12;1186:36;;1257:60;1309:7;1298:8;1287:9;1283:24;1257:60;:::i;:::-;525:852;;;;-1:-1:-1;525:852:17;;-1:-1:-1;1336:8:17;;1231:86;525:852;-1:-1:-1;;;525:852:17:o;1382:247::-;1441:6;1494:2;1482:9;1473:7;1469:23;1465:32;1462:52;;;1510:1;1507;1500:12;1462:52;1549:9;1536:23;1568:31;1593:5;1568:31;:::i;1634:416::-;1699:6;1707;1760:2;1748:9;1739:7;1735:23;1731:32;1728:52;;;1776:1;1773;1766:12;1728:52;1815:9;1802:23;1834:31;1859:5;1834:31;:::i;:::-;1884:5;-1:-1:-1;1941:2:17;1926:18;;1913:32;1983:15;;1976:23;1964:36;;1954:64;;2014:1;2011;2004:12;1954:64;2037:7;2027:17;;;1634:416;;;;;:::o;2286:282::-;2353:9;;;2374:11;;;2371:191;;;2418:77;2415:1;2408:88;2519:4;2516:1;2509:15;2547:4;2544:1;2537:15;3281:271;3464:6;3456;3451:3;3438:33;3420:3;3490:16;;3515:13;;;3490:16;3281:271;-1:-1:-1;3281:271:17:o;5088:251::-;5158:6;5211:2;5199:9;5190:7;5186:23;5182:32;5179:52;;;5227:1;5224;5217:12;5179:52;5259:9;5253:16;5278:31;5303:5;5278:31;:::i;6835:250::-;6920:1;6930:113;6944:6;6941:1;6938:13;6930:113;;;7020:11;;;7014:18;7001:11;;;6994:39;6966:2;6959:10;6930:113;;;-1:-1:-1;;7077:1:17;7059:16;;7052:27;6835:250::o;7090:287::-;7219:3;7257:6;7251:13;7273:66;7332:6;7327:3;7320:4;7312:6;7308:17;7273:66;:::i;:::-;7355:16;;;;;7090:287;-1:-1:-1;;7090:287:17:o;7740:455::-;7889:2;7878:9;7871:21;7852:4;7921:6;7915:13;7964:6;7959:2;7948:9;7944:18;7937:34;7980:79;8052:6;8047:2;8036:9;8032:18;8027:2;8019:6;8015:15;7980:79;:::i;:::-;8111:2;8099:15;8116:66;8095:88;8080:104;;;;8186:2;8076:113;;7740:455;-1:-1:-1;;7740:455:17:o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","firewallAdmin()":"f05c8582","initializeFirewallAdmin(address)":"7eba9471","safeFunctionCall(address,bytes,bytes)":"1a8828f4","setApprovedTarget(address,bool)":"b7f9a748","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"initializeFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"targetPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setApprovedTarget\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"initializeFirewallAdmin(address)\":{\"details\":\"Proxy Admin only function, allows the Proxy Admin to initialize the firewall admin in the following cases: - If the contract was originally deployed with a zero-address in the constructor (for various reasons) - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\",\"params\":{\"_firewallAdmin\":\"address of the firewall admin\"}},\"safeFunctionCall(address,bytes,bytes)\":{\"details\":\"Allows calling an approved external target 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.\",\"params\":{\"data\":\"data to be executed after the target call\",\"target\":\"address of the target\",\"targetPayload\":\"payload to be sent to the target\"}},\"setApprovedTarget(address,bool)\":{\"details\":\"Allows firewall admin to set approved targets. IMPORTANT: Only set approved target if you know what you're doing. Anyone can cause this contract to send any data to an approved target.\",\"params\":{\"status\":\"status of the target\",\"target\":\"address of the target\"}},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}}},\"title\":\"TransparentProxyFirewallConsumer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"For proxies that implement ERC1967 with an admin slot, this extension allows the Proxy Admin to initialize the firewall admin even when the contract was originally deployed with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/proxies/TransparentProxyFirewallConsumer.sol\":\"TransparentProxyFirewallConsumer\"},\"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\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/FirewallConsumerBase.sol\":{\"keccak256\":\"0x4da0867b995c7a8e0f21ac356af4eee72432ed37633b8ba51ed847d70d29a2d5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6d9749043bb16a28fa0058ff2b303408174e01e18dfb29bc229fc7778c6610eb\",\"dweb:/ipfs/QmfDcQEhe4aAVS6aUULY8aKGUXAdLiHdPNQQsiFjf6LP2x\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0xb9ee7c4bd6e08fd9a5b7945d405604c563b7aa91f06ed46f8eedeae8c5156898\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://858fb99b602da6e34e51e1a40ee945921006c84c08454f22495b224c3abd0ec3\",\"dweb:/ipfs/QmWDFoDrTX2FFjcyY3aooeZxo5TX7sxmoQ3UhcZo7ccGsx\"]},\"contracts/interfaces/IOwnable.sol\":{\"keccak256\":\"0x45b2b806b3c3f90bf684380d722f23d9de67651f3fb6715d1dc2c36812e36768\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fd01f222df5446d79f2438f2c310dbdf96db0783164248b2bab5dfaa078e068\",\"dweb:/ipfs/QmYuDWuE1Ke1oiaErbeBhiqFptinyKWt9GhJtstwhiw8dt\"]},\"contracts/proxies/ProxyFirewallConsumerBase.sol\":{\"keccak256\":\"0x37ee68fa975fba14161dfc225c468236d25d927dcbe25271b6e3f86ca1357d49\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ec8807ff82d2eb410e0079e41bc7566cb220183f759a2eef438dae3e201fffa8\",\"dweb:/ipfs/QmZnM8kCF8yCvVS8uMoz8zyitV11t5LEwD1ypi65E4wj8P\"]},\"contracts/proxies/TransparentProxyFirewallConsumer.sol\":{\"keccak256\":\"0x8c91c4b157c2a6285a2522bb26e716c5b16dfd2f1b2fef1f388c5cb58c239976\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c536275509beaccf334eef309f91de8b93bade6f5ccf9f7cf2f5f620a1d0f877\",\"dweb:/ipfs/QmYGnNfgtVvZKJANWDGrkF22bdEFufPCoJYQtdeW2p4oYm\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}}}}}