@trustline.id/web3sdk 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +4 -0
  2. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +56 -0
  3. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +4 -0
  4. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +76 -0
  5. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol/ERC1967Utils.dbg.json +4 -0
  6. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol/ERC1967Utils.json +49 -0
  7. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +4 -0
  8. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +15 -0
  9. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +4 -0
  10. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +24 -0
  11. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  12. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +22 -0
  13. package/artifacts/@openzeppelin/contracts/utils/Errors.sol/Errors.dbg.json +4 -0
  14. package/artifacts/@openzeppelin/contracts/utils/Errors.sol/Errors.json +48 -0
  15. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +4 -0
  16. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +10 -0
  17. package/artifacts/build-info/0aeaaf28859d341e1ee9ffb3d4ab07fc.json +1 -0
  18. package/artifacts/build-info/b10e3fa14fea75fdb2ecc56bfe679f1a.json +1 -0
  19. package/artifacts/contracts/Trustlined.sol/Trustlined.dbg.json +1 -1
  20. package/artifacts/contracts/Trustlined.sol/Trustlined.json +31 -0
  21. package/artifacts/contracts/examples/PaymentFirewall.sol/PaymentFirewall.dbg.json +1 -1
  22. package/artifacts/contracts/examples/PaymentFirewall.sol/PaymentFirewall.json +39 -3
  23. package/artifacts/contracts/interfaces/IValidationEngine.sol/IValidationEngine.dbg.json +1 -1
  24. package/contracts/Trustlined.sol +39 -6
  25. package/contracts/examples/PaymentFirewall.sol +5 -7
  26. package/contracts/interfaces/IValidationEngine.sol +3 -1
  27. package/dist/bundle.js +31 -0
  28. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"id":"0aeaaf28859d341e1ee9ffb3d4ab07fc","_format":"hh-sol-build-info-1","solcVersion":"0.8.28","solcLongVersion":"0.8.28+commit.7893614a","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/interfaces/IERC1967.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n */\ninterface IERC1967 {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n}\n"},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {UpgradeableBeacon} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.22;\n\nimport {Proxy} from \"../Proxy.sol\";\nimport {ERC1967Utils} from \"./ERC1967Utils.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n *\n * Requirements:\n *\n * - If `data` is empty, `msg.value` must be zero.\n */\n constructor(address implementation, bytes memory _data) payable {\n ERC1967Utils.upgradeToAndCall(implementation, _data);\n }\n\n /**\n * @dev Returns the current implementation address.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function _implementation() internal view virtual override returns (address) {\n return ERC1967Utils.getImplementation();\n }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.22;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {IERC1967} from \"../../interfaces/IERC1967.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This library provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\n */\nlibrary ERC1967Utils {\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev The `implementation` of the proxy is invalid.\n */\n error ERC1967InvalidImplementation(address implementation);\n\n /**\n * @dev The `admin` of the proxy is invalid.\n */\n error ERC1967InvalidAdmin(address admin);\n\n /**\n * @dev The `beacon` of the proxy is invalid.\n */\n error ERC1967InvalidBeacon(address beacon);\n\n /**\n * @dev An upgrade function sees `msg.value > 0` that may be lost.\n */\n error ERC1967NonPayable();\n\n /**\n * @dev Returns the current implementation address.\n */\n function getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the ERC-1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n if (newImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(newImplementation);\n }\n StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n _setImplementation(newImplementation);\n emit IERC1967.Upgraded(newImplementation);\n\n if (data.length > 0) {\n Address.functionDelegateCall(newImplementation, data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the ERC-1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n if (newAdmin == address(0)) {\n revert ERC1967InvalidAdmin(address(0));\n }\n StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {IERC1967-AdminChanged} event.\n */\n function changeAdmin(address newAdmin) internal {\n emit IERC1967.AdminChanged(getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the ERC-1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n if (newBeacon.code.length == 0) {\n revert ERC1967InvalidBeacon(newBeacon);\n }\n\n StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n address beaconImplementation = IBeacon(newBeacon).implementation();\n if (beaconImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(beaconImplementation);\n }\n }\n\n /**\n * @dev Change the beacon and trigger a setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-BeaconUpgraded} event.\n *\n * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n * efficiency.\n */\n function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n _setBeacon(newBeacon);\n emit IERC1967.BeaconUpgraded(newBeacon);\n\n if (data.length > 0) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n * if an upgrade doesn't perform an initialization call.\n */\n function _checkNonPayable() private {\n if (msg.value > 0) {\n revert ERC1967NonPayable();\n }\n }\n}\n"},"@openzeppelin/contracts/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n * function and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"./Errors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\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.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert Errors.InsufficientBalance(address(this).balance, amount);\n }\n\n (bool success, bytes memory returndata) = recipient.call{value: amount}(\"\");\n if (!success) {\n _revert(returndata);\n }\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 or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {Errors.FailedCall} error.\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 function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\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 function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert Errors.InsufficientBalance(address(this).balance, value);\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n * of an unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {Errors.FailedCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}.\n */\n function _revert(bytes memory returndata) 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 assembly (\"memory-safe\") {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert Errors.FailedCall();\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Errors.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of common custom errors used in multiple contracts\n *\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n * It is recommended to avoid relying on the error API for critical functionality.\n *\n * _Available since v5.1._\n */\nlibrary Errors {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error InsufficientBalance(uint256 balance, uint256 needed);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedCall();\n\n /**\n * @dev The deployment failed.\n */\n error FailedDeployment();\n\n /**\n * @dev A necessary precompile is missing.\n */\n error MissingPrecompile(address);\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC-1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * TIP: Consider using this library along with {SlotDerivation}.\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct Int256Slot {\n int256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Int256Slot` with member `value` located at `slot`.\n */\n function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns a `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := store.slot\n }\n }\n}\n"},"contracts/examples/PaymentFirewall.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n//import {Trustlined} from \"@trustline.id/web3sdk/contracts/Trustlined.sol\";\nimport {Trustlined} from \"../Trustlined.sol\";\n\n/// @title PaymentFirewall\n/// @author Trustline\n/// @notice This contract is a firewall ensuring all funds going in and out are compliant\ncontract PaymentFirewall is Trustlined {\n constructor(address trustlineValidationEngineLogic, address trustlineValidationEngineProxy) Trustlined(trustlineValidationEngineLogic, trustlineValidationEngineProxy) {}\n\n /// @notice Pay native ethers to a recipient\n /// @param destination The recipient address\n function payEthers(address payable destination) public payable {\n address[] memory addresses = new address[](1);\n addresses[0] = destination;\n requireTrustline(addresses);\n (bool sent, ) = destination.call{value: msg.value}(\"\");\n require(sent, \"Unable to pay ethers\");\n }\n\n /// @notice Pay ERC20 tokens to a recipient\n /// @param destination The recipient address\n /// @param token The ERC20 token address\n /// @param value The amount of tokens to pay\n function payTokens(address destination, address token, uint256 value) external {\n address[] memory addresses = new address[](1);\n addresses[0] = destination;\n requireTrustline(addresses);\n bool sent = IERC20(token).transferFrom(msg.sender, destination, value);\n require(sent, \"Unable to pay tokens\");\n }\n}\n"},"contracts/interfaces/IValidationEngine.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8;\n\n/// @title Trustline's Validation interface\n/// @author Trustline\n/// @notice This interface defines the functions that must be implemented by the validation contract\n/// @dev This interface is used by the Trustlined contract to interact with Trustline's Validation contract\ninterface IValidationEngine {\n enum ValidationMode {\n Dapp,\n UniswapV4,\n MorphoV2,\n ERC3643\n }\n\n /// @notice Checks whether a transaction is trusted and verifies msg.sender + addresses[] against sanctions lists (advanced)\n /// @dev This call is required only in complex scenarios\n /// @dev WARNING: Improper use of this call may introduce security vulnerabilities in the calling contract\n /// @param mode The validation mode\n /// @param sender The transaction sender\n /// @param value Transaction value in wei\n /// @param data Transaction payload data\n /// @param addresses An array of addresses that will be verified by the policy\n function checkTrustlineStatus(\n ValidationMode mode,\n address sender,\n uint256 value,\n bytes calldata data,\n address[] memory addresses\n ) external view returns (bool);\n\n /// @notice Checks whether a transaction is trusted and verifies msg.sender + addresses[] against sanctions lists\n /// @param sender The transaction sender\n /// @param value Transaction value in wei\n /// @param data Transaction payload data\n /// @param addresses An array of addresses that will be verified by the policy\n function checkTrustlineStatus(\n address sender,\n uint256 value,\n bytes calldata data,\n address[] memory addresses\n ) external view returns (bool);\n\n /// @notice Checks whether a transaction is trusted and verifies msg.sender against sanctions lists\n /// @param sender The transaction sender\n /// @param value Transaction value in wei\n /// @param data Transaction payload data\n function checkTrustlineStatus(\n address sender,\n uint256 value,\n bytes calldata data\n ) external view returns (bool);\n\n /// @notice Requires a trusted transaction and non‑sanctioned msg.sender + addresses[] (advanced)\n /// @dev This call is required only in complex scenarios\n /// @dev WARNING: Improper use of this call may introduce security vulnerabilities in the calling contract\n /// @param mode The validation mode\n /// @param sender The transaction sender\n /// @param value Transaction value in wei\n /// @param data Transaction payload data\n /// @param addresses An array of addresses that will be verified by the policy\n function requireTrustline(\n ValidationMode mode,\n address sender,\n uint256 value,\n bytes calldata data,\n address[] memory addresses\n ) external;\n\n /// @notice Requires a trusted transaction and non‑sanctioned msg.sender + addresses[]\n /// @dev reverts if the transaction is not compliant\n /// @param sender The transaction sender\n /// @param value Transaction value in wei\n /// @param data Transaction payload data\n /// @param addresses An array of addresses that will be verified by the policy\n function requireTrustline(\n address sender,\n uint256 value,\n bytes calldata data,\n address[] memory addresses\n ) external;\n\n /// @notice Requires a trusted transaction and a non‑sanctioned msg.sender\n /// @dev reverts if the transaction is not compliant\n /// @param sender The transaction sender\n /// @param value Transaction value in wei\n /// @param data Transaction payload data\n function requireTrustline(\n address sender,\n uint256 value,\n bytes calldata data\n ) external;\n}\n"},"contracts/Trustlined.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8;\n\nimport {ERC1967Proxy} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport {IValidationEngine} from \"./interfaces/IValidationEngine.sol\";\n\n/// @title Trustline's Base Contract\n/// @author Trustline\n/// @notice This library provides functions for verifying the trust status of a transaction\nabstract contract Trustlined {\n /// @notice Emitted when a new Validation Engine proxy is deployed for this client contract.\n /// @dev `client` is the address of the integrating contract (i.e., the contract inheriting from Trustlined).\n /// @dev `engineProxy` is the freshly deployed ERC1967 proxy address for the Validation Engine instance.\n /// @dev `logic` is the Validation Engine implementation (logic) contract the proxy points to at deployment time.\n /// @dev `initialOwner` is the address passed to the engine's `initialize(address)` call (typically the deployer/initializer).\n event ValidationEngineDeployed(\n address indexed client,\n address indexed engineProxy,\n address indexed logic,\n address initialOwner\n );\n\n /// @notice The Trustline ValidationEngine contract address. It must be set before any of the provided functions can be used\n /// @dev Multiple dapps can share the same ValidationEngine contract\n /// @dev This contract is set by the owner and must implement the IValidationEngine interface\n IValidationEngine public validationEngine;\n\n /// @dev Both a constructor and initializer functions are defined to support both upgradeable and non-upgradeable deployment scenarios\n /// @param trustlineValidationEngineLogic The Validation Engine logic contract address for deploying a proxy (used only if validationEngineAddress is zero)\n /// @param trustlineValidationEngineProxy Optional Validation Engine proxy address. If provided (non-zero), it will be used directly instead of deploying a new proxy\n constructor(address trustlineValidationEngineLogic, address trustlineValidationEngineProxy) {\n __Trustlined_init(trustlineValidationEngineLogic, trustlineValidationEngineProxy);\n }\n\n function __Trustlined_init(address logic, address proxy) internal {\n __Trustlined_init_unchained(logic, proxy);\n }\n\n function __Trustlined_init_unchained(address logic, address proxy) internal {\n require(address(validationEngine) == address(0), \"Already initialized\");\n\n if (proxy != address(0)) {\n // Use the provided Validation Engine proxy\n require(proxy.code.length > 0, \"Proxy is not a contract\");\n validationEngine = IValidationEngine(proxy);\n } else {\n // Deploy a new Validation Engine proxy\n require(logic.code.length > 0, \"Logic is not a contract\");\n\n address initialOwner = msg.sender;\n\n // Deployment of the Validation Engine proxy\n bytes memory data = abi.encodeWithSignature(\"initialize(address)\", initialOwner);\n address proxy_ = address(new ERC1967Proxy(logic, data));\n\n validationEngine = IValidationEngine(proxy_);\n\n emit ValidationEngineDeployed(address(this), proxy_, logic, initialOwner);\n }\n }\n\n /// @notice Checks whether a transaction is trusted and verifies msg.sender + addresses[] against sanctions lists\n /// @param addresses An array of addresses that will be verified by the policy\n function checkTrustlineStatus(address[] memory addresses) internal view returns (bool) {\n return validationEngine.checkTrustlineStatus(msg.sender, msg.value, msg.data, addresses);\n }\n\n /// @notice Checks whether a transaction is trusted and verifies msg.sender against sanctions lists\n function checkTrustlineStatus() internal view returns (bool) {\n return validationEngine.checkTrustlineStatus(msg.sender, msg.value, msg.data);\n }\n\n /// @notice Requires a trusted transaction and non‑sanctioned msg.sender + addresses[]\n /// @param addresses An array of addresses that will be verified by the policy\n function requireTrustline(address[] memory addresses) internal {\n validationEngine.requireTrustline(msg.sender, msg.value, msg.data, addresses);\n }\n\n /// @notice Requires a trusted transaction and a non‑sanctioned msg.sender\n function requireTrustline() internal {\n validationEngine.requireTrustline(msg.sender, msg.value, msg.data);\n }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":1000000},"evmVersion":"cancun","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts/interfaces/IERC1967.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","exportedSymbols":{"IERC1967":[20]},"id":21,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"133:101:0","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC."},"fullyImplemented":true,"id":20,"linearizedBaseContracts":[20],"name":"IERC1967","nameLocation":"245:8:0","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"260:68:0","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":7,"name":"Upgraded","nameLocation":"339:8:0","nodeType":"EventDefinition","parameters":{"id":6,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"364:14:0","nodeType":"VariableDeclaration","scope":7,"src":"348:30:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"348:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"347:32:0"},"src":"333:47:0"},{"anonymous":false,"documentation":{"id":8,"nodeType":"StructuredDocumentation","src":"386:67:0","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":14,"name":"AdminChanged","nameLocation":"464:12:0","nodeType":"EventDefinition","parameters":{"id":13,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"485:13:0","nodeType":"VariableDeclaration","scope":14,"src":"477:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9,"name":"address","nodeType":"ElementaryTypeName","src":"477:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"508:8:0","nodeType":"VariableDeclaration","scope":14,"src":"500:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11,"name":"address","nodeType":"ElementaryTypeName","src":"500:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"476:41:0"},"src":"458:60:0"},{"anonymous":false,"documentation":{"id":15,"nodeType":"StructuredDocumentation","src":"524:59:0","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":19,"name":"BeaconUpgraded","nameLocation":"594:14:0","nodeType":"EventDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"625:6:0","nodeType":"VariableDeclaration","scope":19,"src":"609:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16,"name":"address","nodeType":"ElementaryTypeName","src":"609:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"608:24:0"},"src":"588:45:0"}],"scope":21,"src":"235:400:0","usedErrors":[],"usedEvents":[7,14,19]}],"src":"107:529:0"},"id":0},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","exportedSymbols":{"ERC1967Proxy":[58],"ERC1967Utils":[352],"Proxy":[388]},"id":59,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":22,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"114:24:1"},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"../Proxy.sol","id":24,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":59,"sourceUnit":389,"src":"140:35:1","symbolAliases":[{"foreign":{"id":23,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"148:5:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"./ERC1967Utils.sol","id":26,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":59,"sourceUnit":353,"src":"176:48:1","symbolAliases":[{"foreign":{"id":25,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"184:12:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":28,"name":"Proxy","nameLocations":["625:5:1"],"nodeType":"IdentifierPath","referencedDeclaration":388,"src":"625:5:1"},"id":29,"nodeType":"InheritanceSpecifier","src":"625:5:1"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":27,"nodeType":"StructuredDocumentation","src":"226:373:1","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"id":58,"linearizedBaseContracts":[58,388],"name":"ERC1967Proxy","nameLocation":"609:12:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":44,"nodeType":"Block","src":"1145:69:1","statements":[{"expression":{"arguments":[{"id":40,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"1185:14:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"1201:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":37,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"1155:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$352_$","typeString":"type(library ERC1967Utils)"}},"id":39,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1168:16:1","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":167,"src":"1155:29:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":42,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1155:52:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":43,"nodeType":"ExpressionStatement","src":"1155:52:1"}]},"documentation":{"id":30,"nodeType":"StructuredDocumentation","src":"637:439:1","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"id":45,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":35,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32,"mutability":"mutable","name":"implementation","nameLocation":"1101:14:1","nodeType":"VariableDeclaration","scope":45,"src":"1093:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":31,"name":"address","nodeType":"ElementaryTypeName","src":"1093:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":34,"mutability":"mutable","name":"_data","nameLocation":"1130:5:1","nodeType":"VariableDeclaration","scope":45,"src":"1117:18:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":33,"name":"bytes","nodeType":"ElementaryTypeName","src":"1117:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1092:44:1"},"returnParameters":{"id":36,"nodeType":"ParameterList","parameters":[],"src":"1145:0:1"},"scope":58,"src":"1081:133:1","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[369],"body":{"id":56,"nodeType":"Block","src":"1659:56:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":52,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"1676:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$352_$","typeString":"type(library ERC1967Utils)"}},"id":53,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1689:17:1","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":104,"src":"1676:30:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1676:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":51,"id":55,"nodeType":"Return","src":"1669:39:1"}]},"documentation":{"id":46,"nodeType":"StructuredDocumentation","src":"1220:358:1","text":" @dev Returns the current implementation address.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"id":57,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1592:15:1","nodeType":"FunctionDefinition","overrides":{"id":48,"nodeType":"OverrideSpecifier","overrides":[],"src":"1632:8:1"},"parameters":{"id":47,"nodeType":"ParameterList","parameters":[],"src":"1607:2:1"},"returnParameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":57,"src":"1650:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":49,"name":"address","nodeType":"ElementaryTypeName","src":"1650:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1649:9:1"},"scope":58,"src":"1583:132:1","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":59,"src":"600:1117:1","usedErrors":[78,91,486,749],"usedEvents":[7]}],"src":"114:1604:1"},"id":1},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","exportedSymbols":{"Address":[736],"ERC1967Utils":[352],"IBeacon":[398],"IERC1967":[20],"StorageSlot":[882]},"id":353,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":60,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"114:24:2"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":62,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":353,"sourceUnit":399,"src":"140:46:2","symbolAliases":[{"foreign":{"id":61,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":398,"src":"148:7:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","id":64,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":353,"sourceUnit":21,"src":"187:55:2","symbolAliases":[{"foreign":{"id":63,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"195:8:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":66,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":353,"sourceUnit":737,"src":"243:48:2","symbolAliases":[{"foreign":{"id":65,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":736,"src":"251:7:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":68,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":353,"sourceUnit":883,"src":"292:56:2","symbolAliases":[{"foreign":{"id":67,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"300:11:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"350:145:2","text":" @dev This library provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots."},"fullyImplemented":true,"id":352,"linearizedBaseContracts":[352],"name":"ERC1967Utils","nameLocation":"504:12:2","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":70,"nodeType":"StructuredDocumentation","src":"523:170:2","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."},"id":73,"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"789:19:2","nodeType":"VariableDeclaration","scope":352,"src":"763:114:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":71,"name":"bytes32","nodeType":"ElementaryTypeName","src":"763:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":72,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"811:66:2","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"documentation":{"id":74,"nodeType":"StructuredDocumentation","src":"884:69:2","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","id":78,"name":"ERC1967InvalidImplementation","nameLocation":"964:28:2","nodeType":"ErrorDefinition","parameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76,"mutability":"mutable","name":"implementation","nameLocation":"1001:14:2","nodeType":"VariableDeclaration","scope":78,"src":"993:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75,"name":"address","nodeType":"ElementaryTypeName","src":"993:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"992:24:2"},"src":"958:59:2"},{"documentation":{"id":79,"nodeType":"StructuredDocumentation","src":"1023:60:2","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","id":83,"name":"ERC1967InvalidAdmin","nameLocation":"1094:19:2","nodeType":"ErrorDefinition","parameters":{"id":82,"nodeType":"ParameterList","parameters":[{"constant":false,"id":81,"mutability":"mutable","name":"admin","nameLocation":"1122:5:2","nodeType":"VariableDeclaration","scope":83,"src":"1114:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1113:15:2"},"src":"1088:41:2"},{"documentation":{"id":84,"nodeType":"StructuredDocumentation","src":"1135:61:2","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","id":88,"name":"ERC1967InvalidBeacon","nameLocation":"1207:20:2","nodeType":"ErrorDefinition","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":86,"mutability":"mutable","name":"beacon","nameLocation":"1236:6:2","nodeType":"VariableDeclaration","scope":88,"src":"1228:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":85,"name":"address","nodeType":"ElementaryTypeName","src":"1228:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1227:16:2"},"src":"1201:43:2"},{"documentation":{"id":89,"nodeType":"StructuredDocumentation","src":"1250:82:2","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","id":91,"name":"ERC1967NonPayable","nameLocation":"1343:17:2","nodeType":"ErrorDefinition","parameters":{"id":90,"nodeType":"ParameterList","parameters":[],"src":"1360:2:2"},"src":"1337:26:2"},{"body":{"id":103,"nodeType":"Block","src":"1502:77:2","statements":[{"expression":{"expression":{"arguments":[{"id":99,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"1546:19:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":97,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"1519:11:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$882_$","typeString":"type(library StorageSlot)"}},"id":98,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1531:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":793,"src":"1519:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$764_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1519:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$764_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":101,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1567:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":763,"src":"1519:53:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":96,"id":102,"nodeType":"Return","src":"1512:60:2"}]},"documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"1369:67:2","text":" @dev Returns the current implementation address."},"id":104,"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1450:17:2","nodeType":"FunctionDefinition","parameters":{"id":93,"nodeType":"ParameterList","parameters":[],"src":"1467:2:2"},"returnParameters":{"id":96,"nodeType":"ParameterList","parameters":[{"constant":false,"id":95,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":104,"src":"1493:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":94,"name":"address","nodeType":"ElementaryTypeName","src":"1493:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1492:9:2"},"scope":352,"src":"1441:138:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":130,"nodeType":"Block","src":"1734:218:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":110,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":107,"src":"1748:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1766:4:2","memberName":"code","nodeType":"MemberAccess","src":"1748:22:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1771:6:2","memberName":"length","nodeType":"MemberAccess","src":"1748:29:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1781:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1748:34:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":120,"nodeType":"IfStatement","src":"1744:119:2","trueBody":{"id":119,"nodeType":"Block","src":"1784:79:2","statements":[{"errorCall":{"arguments":[{"id":116,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":107,"src":"1834:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":115,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"1805:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":118,"nodeType":"RevertStatement","src":"1798:54:2"}]}},{"expression":{"id":128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":124,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"1899:19:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":121,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"1872:11:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$882_$","typeString":"type(library StorageSlot)"}},"id":123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1884:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":793,"src":"1872:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$764_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1872:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$764_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1920:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":763,"src":"1872:53:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":127,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":107,"src":"1928:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1872:73:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":129,"nodeType":"ExpressionStatement","src":"1872:73:2"}]},"documentation":{"id":105,"nodeType":"StructuredDocumentation","src":"1585:81:2","text":" @dev Stores a new address in the ERC-1967 implementation slot."},"id":131,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1680:18:2","nodeType":"FunctionDefinition","parameters":{"id":108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":107,"mutability":"mutable","name":"newImplementation","nameLocation":"1707:17:2","nodeType":"VariableDeclaration","scope":131,"src":"1699:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":106,"name":"address","nodeType":"ElementaryTypeName","src":"1699:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1698:27:2"},"returnParameters":{"id":109,"nodeType":"ParameterList","parameters":[],"src":"1734:0:2"},"scope":352,"src":"1671:281:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":166,"nodeType":"Block","src":"2345:263:2","statements":[{"expression":{"arguments":[{"id":140,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"2374:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":139,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":131,"src":"2355:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2355:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":142,"nodeType":"ExpressionStatement","src":"2355:37:2"},{"eventCall":{"arguments":[{"id":146,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"2425:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":143,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"2407:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$20_$","typeString":"type(contract IERC1967)"}},"id":145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2416:8:2","memberName":"Upgraded","nodeType":"MemberAccess","referencedDeclaration":7,"src":"2407:17:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":148,"nodeType":"EmitStatement","src":"2402:41:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":149,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"2458:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2463:6:2","memberName":"length","nodeType":"MemberAccess","src":"2458:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2472:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2458:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":164,"nodeType":"Block","src":"2559:43:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":161,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":351,"src":"2573:16:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2573:18:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":163,"nodeType":"ExpressionStatement","src":"2573:18:2"}]},"id":165,"nodeType":"IfStatement","src":"2454:148:2","trueBody":{"id":160,"nodeType":"Block","src":"2475:78:2","statements":[{"expression":{"arguments":[{"id":156,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"2518:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":157,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136,"src":"2537:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":153,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":736,"src":"2489:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$736_$","typeString":"type(library Address)"}},"id":155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2497:20:2","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":653,"src":"2489:28:2","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":158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2489:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":159,"nodeType":"ExpressionStatement","src":"2489:53:2"}]}}]},"documentation":{"id":132,"nodeType":"StructuredDocumentation","src":"1958:301:2","text":" @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event."},"id":167,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2273:16:2","nodeType":"FunctionDefinition","parameters":{"id":137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134,"mutability":"mutable","name":"newImplementation","nameLocation":"2298:17:2","nodeType":"VariableDeclaration","scope":167,"src":"2290:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":133,"name":"address","nodeType":"ElementaryTypeName","src":"2290:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":136,"mutability":"mutable","name":"data","nameLocation":"2330:4:2","nodeType":"VariableDeclaration","scope":167,"src":"2317:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135,"name":"bytes","nodeType":"ElementaryTypeName","src":"2317:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2289:46:2"},"returnParameters":{"id":138,"nodeType":"ParameterList","parameters":[],"src":"2345:0:2"},"scope":352,"src":"2264:344:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":168,"nodeType":"StructuredDocumentation","src":"2614:145:2","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"id":171,"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"2855:10:2","nodeType":"VariableDeclaration","scope":352,"src":"2829:105:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":169,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2829:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2868:66:2","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":183,"nodeType":"Block","src":"3339:68:2","statements":[{"expression":{"expression":{"arguments":[{"id":179,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"3383:10:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":177,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"3356:11:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$882_$","typeString":"type(library StorageSlot)"}},"id":178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3368:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":793,"src":"3356:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$764_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3356:38:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$764_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":181,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3395:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":763,"src":"3356:44:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":176,"id":182,"nodeType":"Return","src":"3349:51:2"}]},"documentation":{"id":172,"nodeType":"StructuredDocumentation","src":"2941:341:2","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"id":184,"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3296:8:2","nodeType":"FunctionDefinition","parameters":{"id":173,"nodeType":"ParameterList","parameters":[],"src":"3304:2:2"},"returnParameters":{"id":176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":175,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":184,"src":"3330:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":174,"name":"address","nodeType":"ElementaryTypeName","src":"3330:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3329:9:2"},"scope":352,"src":"3287:120:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":214,"nodeType":"Block","src":"3535:172:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"3549:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3569:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3561:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":191,"name":"address","nodeType":"ElementaryTypeName","src":"3561:7:2","typeDescriptions":{}}},"id":194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3561:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3549:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":204,"nodeType":"IfStatement","src":"3545:91:2","trueBody":{"id":203,"nodeType":"Block","src":"3573:63:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3622:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3614:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"3614:7:2","typeDescriptions":{}}},"id":200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3614:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":196,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":83,"src":"3594:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3594:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":202,"nodeType":"RevertStatement","src":"3587:38:2"}]}},{"expression":{"id":212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":208,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"3672:10:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":205,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"3645:11:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$882_$","typeString":"type(library StorageSlot)"}},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3657:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":793,"src":"3645:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$764_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3645:38:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$764_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":210,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3684:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":763,"src":"3645:44:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":211,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"3692:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3645:55:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":213,"nodeType":"ExpressionStatement","src":"3645:55:2"}]},"documentation":{"id":185,"nodeType":"StructuredDocumentation","src":"3413:72:2","text":" @dev Stores a new address in the ERC-1967 admin slot."},"id":215,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3499:9:2","nodeType":"FunctionDefinition","parameters":{"id":188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":187,"mutability":"mutable","name":"newAdmin","nameLocation":"3517:8:2","nodeType":"VariableDeclaration","scope":215,"src":"3509:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":186,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3508:18:2"},"returnParameters":{"id":189,"nodeType":"ParameterList","parameters":[],"src":"3535:0:2"},"scope":352,"src":"3490:217:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":233,"nodeType":"Block","src":"3875:94:2","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":224,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"3912:8:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3912:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":226,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"3924:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":221,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"3890:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$20_$","typeString":"type(contract IERC1967)"}},"id":223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3899:12:2","memberName":"AdminChanged","nodeType":"MemberAccess","referencedDeclaration":14,"src":"3890:21:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3890:43:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":228,"nodeType":"EmitStatement","src":"3885:48:2"},{"expression":{"arguments":[{"id":230,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"3953:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":229,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":215,"src":"3943:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:19:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":232,"nodeType":"ExpressionStatement","src":"3943:19:2"}]},"documentation":{"id":216,"nodeType":"StructuredDocumentation","src":"3713:109:2","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"id":234,"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"3836:11:2","nodeType":"FunctionDefinition","parameters":{"id":219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":218,"mutability":"mutable","name":"newAdmin","nameLocation":"3856:8:2","nodeType":"VariableDeclaration","scope":234,"src":"3848:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":217,"name":"address","nodeType":"ElementaryTypeName","src":"3848:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3847:18:2"},"returnParameters":{"id":220,"nodeType":"ParameterList","parameters":[],"src":"3875:0:2"},"scope":352,"src":"3827:142:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":235,"nodeType":"StructuredDocumentation","src":"3975:201:2","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"id":238,"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4272:11:2","nodeType":"VariableDeclaration","scope":352,"src":"4246:106:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4246:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4286:66:2","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":250,"nodeType":"Block","src":"4468:69:2","statements":[{"expression":{"expression":{"arguments":[{"id":246,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"4512:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":244,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"4485:11:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$882_$","typeString":"type(library StorageSlot)"}},"id":245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4497:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":793,"src":"4485:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$764_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4485:39:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$764_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":248,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4525:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":763,"src":"4485:45:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":243,"id":249,"nodeType":"Return","src":"4478:52:2"}]},"documentation":{"id":239,"nodeType":"StructuredDocumentation","src":"4359:51:2","text":" @dev Returns the current beacon."},"id":251,"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4424:9:2","nodeType":"FunctionDefinition","parameters":{"id":240,"nodeType":"ParameterList","parameters":[],"src":"4433:2:2"},"returnParameters":{"id":243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":242,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":251,"src":"4459:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":241,"name":"address","nodeType":"ElementaryTypeName","src":"4459:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4458:9:2"},"scope":352,"src":"4415:122:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":296,"nodeType":"Block","src":"4667:390:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":257,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":254,"src":"4681:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4691:4:2","memberName":"code","nodeType":"MemberAccess","src":"4681:14:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4696:6:2","memberName":"length","nodeType":"MemberAccess","src":"4681:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4706:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4681:26:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":267,"nodeType":"IfStatement","src":"4677:95:2","trueBody":{"id":266,"nodeType":"Block","src":"4709:63:2","statements":[{"errorCall":{"arguments":[{"id":263,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":254,"src":"4751:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":262,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"4730:20:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4730:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":265,"nodeType":"RevertStatement","src":"4723:38:2"}]}},{"expression":{"id":275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":271,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"4809:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":268,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"4782:11:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$882_$","typeString":"type(library StorageSlot)"}},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4794:14:2","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":793,"src":"4782:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$764_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4782:39:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$764_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4822:5:2","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":763,"src":"4782:45:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":274,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":254,"src":"4830:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4782:57:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":276,"nodeType":"ExpressionStatement","src":"4782:57:2"},{"assignments":[278],"declarations":[{"constant":false,"id":278,"mutability":"mutable","name":"beaconImplementation","nameLocation":"4858:20:2","nodeType":"VariableDeclaration","scope":296,"src":"4850:28:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":277,"name":"address","nodeType":"ElementaryTypeName","src":"4850:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":284,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":280,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":254,"src":"4889:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":279,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":398,"src":"4881:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$398_$","typeString":"type(contract IBeacon)"}},"id":281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:18:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$398","typeString":"contract IBeacon"}},"id":282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4900:14:2","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":397,"src":"4881:33:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:35:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4850:66:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":285,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"4930:20:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4951:4:2","memberName":"code","nodeType":"MemberAccess","src":"4930:25:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4956:6:2","memberName":"length","nodeType":"MemberAccess","src":"4930:32:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4930:37:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":295,"nodeType":"IfStatement","src":"4926:125:2","trueBody":{"id":294,"nodeType":"Block","src":"4969:82:2","statements":[{"errorCall":{"arguments":[{"id":291,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"5019:20:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":290,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78,"src":"4990:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4990:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":293,"nodeType":"RevertStatement","src":"4983:57:2"}]}}]},"documentation":{"id":252,"nodeType":"StructuredDocumentation","src":"4543:72:2","text":" @dev Stores a new beacon in the ERC-1967 beacon slot."},"id":297,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"4629:10:2","nodeType":"FunctionDefinition","parameters":{"id":255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":254,"mutability":"mutable","name":"newBeacon","nameLocation":"4648:9:2","nodeType":"VariableDeclaration","scope":297,"src":"4640:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":253,"name":"address","nodeType":"ElementaryTypeName","src":"4640:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4639:19:2"},"returnParameters":{"id":256,"nodeType":"ParameterList","parameters":[],"src":"4667:0:2"},"scope":352,"src":"4620:437:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":336,"nodeType":"Block","src":"5661:263:2","statements":[{"expression":{"arguments":[{"id":306,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":300,"src":"5682:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":305,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":297,"src":"5671:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5671:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":308,"nodeType":"ExpressionStatement","src":"5671:21:2"},{"eventCall":{"arguments":[{"id":312,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":300,"src":"5731:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":309,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"5707:8:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$20_$","typeString":"type(contract IERC1967)"}},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5716:14:2","memberName":"BeaconUpgraded","nodeType":"MemberAccess","referencedDeclaration":19,"src":"5707:23:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5707:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":314,"nodeType":"EmitStatement","src":"5702:39:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":315,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"5756:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5761:6:2","memberName":"length","nodeType":"MemberAccess","src":"5756:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5770:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5756:15:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":334,"nodeType":"Block","src":"5875:43:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":331,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":351,"src":"5889:16:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5889:18:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":333,"nodeType":"ExpressionStatement","src":"5889:18:2"}]},"id":335,"nodeType":"IfStatement","src":"5752:166:2","trueBody":{"id":330,"nodeType":"Block","src":"5773:96:2","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":323,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":300,"src":"5824:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":322,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":398,"src":"5816:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$398_$","typeString":"type(contract IBeacon)"}},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:18:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$398","typeString":"contract IBeacon"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5835:14:2","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":397,"src":"5816:33:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:35:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":327,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"5853:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":319,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":736,"src":"5787:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$736_$","typeString":"type(library Address)"}},"id":321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5795:20:2","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":653,"src":"5787:28:2","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":328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5787:71:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":329,"nodeType":"ExpressionStatement","src":"5787:71:2"}]}}]},"documentation":{"id":298,"nodeType":"StructuredDocumentation","src":"5063:514:2","text":" @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency."},"id":337,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"5591:22:2","nodeType":"FunctionDefinition","parameters":{"id":303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":300,"mutability":"mutable","name":"newBeacon","nameLocation":"5622:9:2","nodeType":"VariableDeclaration","scope":337,"src":"5614:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":299,"name":"address","nodeType":"ElementaryTypeName","src":"5614:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":302,"mutability":"mutable","name":"data","nameLocation":"5646:4:2","nodeType":"VariableDeclaration","scope":337,"src":"5633:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":301,"name":"bytes","nodeType":"ElementaryTypeName","src":"5633:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5613:38:2"},"returnParameters":{"id":304,"nodeType":"ParameterList","parameters":[],"src":"5661:0:2"},"scope":352,"src":"5582:342:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":350,"nodeType":"Block","src":"6149:86:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":341,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6163:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6167:5:2","memberName":"value","nodeType":"MemberAccess","src":"6163:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6175:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6163:13:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":349,"nodeType":"IfStatement","src":"6159:70:2","trueBody":{"id":348,"nodeType":"Block","src":"6178:51:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":345,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91,"src":"6199:17:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6199:19:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":347,"nodeType":"RevertStatement","src":"6192:26:2"}]}}]},"documentation":{"id":338,"nodeType":"StructuredDocumentation","src":"5930:178:2","text":" @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call."},"id":351,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6122:16:2","nodeType":"FunctionDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[],"src":"6138:2:2"},"returnParameters":{"id":340,"nodeType":"ParameterList","parameters":[],"src":"6149:0:2"},"scope":352,"src":"6113:122:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":353,"src":"496:5741:2","usedErrors":[78,83,88,91],"usedEvents":[]}],"src":"114:6124:2"},"id":2},"@openzeppelin/contracts/proxy/Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","exportedSymbols":{"Proxy":[388]},"id":389,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":354,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:3"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":355,"nodeType":"StructuredDocumentation","src":"125:598:3","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"id":388,"linearizedBaseContracts":[388],"name":"Proxy","nameLocation":"742:5:3","nodeType":"ContractDefinition","nodes":[{"body":{"id":362,"nodeType":"Block","src":"1009:835:3","statements":[{"AST":{"nativeSrc":"1028:810:3","nodeType":"YulBlock","src":"1028:810:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1281:1:3","nodeType":"YulLiteral","src":"1281:1:3","type":"","value":"0"},{"kind":"number","nativeSrc":"1284:1:3","nodeType":"YulLiteral","src":"1284:1:3","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1287:12:3","nodeType":"YulIdentifier","src":"1287:12:3"},"nativeSrc":"1287:14:3","nodeType":"YulFunctionCall","src":"1287:14:3"}],"functionName":{"name":"calldatacopy","nativeSrc":"1268:12:3","nodeType":"YulIdentifier","src":"1268:12:3"},"nativeSrc":"1268:34:3","nodeType":"YulFunctionCall","src":"1268:34:3"},"nativeSrc":"1268:34:3","nodeType":"YulExpressionStatement","src":"1268:34:3"},{"nativeSrc":"1429:74:3","nodeType":"YulVariableDeclaration","src":"1429:74:3","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"1456:3:3","nodeType":"YulIdentifier","src":"1456:3:3"},"nativeSrc":"1456:5:3","nodeType":"YulFunctionCall","src":"1456:5:3"},{"name":"implementation","nativeSrc":"1463:14:3","nodeType":"YulIdentifier","src":"1463:14:3"},{"kind":"number","nativeSrc":"1479:1:3","nodeType":"YulLiteral","src":"1479:1:3","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1482:12:3","nodeType":"YulIdentifier","src":"1482:12:3"},"nativeSrc":"1482:14:3","nodeType":"YulFunctionCall","src":"1482:14:3"},{"kind":"number","nativeSrc":"1498:1:3","nodeType":"YulLiteral","src":"1498:1:3","type":"","value":"0"},{"kind":"number","nativeSrc":"1501:1:3","nodeType":"YulLiteral","src":"1501:1:3","type":"","value":"0"}],"functionName":{"name":"delegatecall","nativeSrc":"1443:12:3","nodeType":"YulIdentifier","src":"1443:12:3"},"nativeSrc":"1443:60:3","nodeType":"YulFunctionCall","src":"1443:60:3"},"variables":[{"name":"result","nativeSrc":"1433:6:3","nodeType":"YulTypedName","src":"1433:6:3","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1571:1:3","nodeType":"YulLiteral","src":"1571:1:3","type":"","value":"0"},{"kind":"number","nativeSrc":"1574:1:3","nodeType":"YulLiteral","src":"1574:1:3","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1577:14:3","nodeType":"YulIdentifier","src":"1577:14:3"},"nativeSrc":"1577:16:3","nodeType":"YulFunctionCall","src":"1577:16:3"}],"functionName":{"name":"returndatacopy","nativeSrc":"1556:14:3","nodeType":"YulIdentifier","src":"1556:14:3"},"nativeSrc":"1556:38:3","nodeType":"YulFunctionCall","src":"1556:38:3"},"nativeSrc":"1556:38:3","nodeType":"YulExpressionStatement","src":"1556:38:3"},{"cases":[{"body":{"nativeSrc":"1689:59:3","nodeType":"YulBlock","src":"1689:59:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1714:1:3","nodeType":"YulLiteral","src":"1714:1:3","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1717:14:3","nodeType":"YulIdentifier","src":"1717:14:3"},"nativeSrc":"1717:16:3","nodeType":"YulFunctionCall","src":"1717:16:3"}],"functionName":{"name":"revert","nativeSrc":"1707:6:3","nodeType":"YulIdentifier","src":"1707:6:3"},"nativeSrc":"1707:27:3","nodeType":"YulFunctionCall","src":"1707:27:3"},"nativeSrc":"1707:27:3","nodeType":"YulExpressionStatement","src":"1707:27:3"}]},"nativeSrc":"1682:66:3","nodeType":"YulCase","src":"1682:66:3","value":{"kind":"number","nativeSrc":"1687:1:3","nodeType":"YulLiteral","src":"1687:1:3","type":"","value":"0"}},{"body":{"nativeSrc":"1769:59:3","nodeType":"YulBlock","src":"1769:59:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1794:1:3","nodeType":"YulLiteral","src":"1794:1:3","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1797:14:3","nodeType":"YulIdentifier","src":"1797:14:3"},"nativeSrc":"1797:16:3","nodeType":"YulFunctionCall","src":"1797:16:3"}],"functionName":{"name":"return","nativeSrc":"1787:6:3","nodeType":"YulIdentifier","src":"1787:6:3"},"nativeSrc":"1787:27:3","nodeType":"YulFunctionCall","src":"1787:27:3"},"nativeSrc":"1787:27:3","nodeType":"YulExpressionStatement","src":"1787:27:3"}]},"nativeSrc":"1761:67:3","nodeType":"YulCase","src":"1761:67:3","value":"default"}],"expression":{"name":"result","nativeSrc":"1615:6:3","nodeType":"YulIdentifier","src":"1615:6:3"},"nativeSrc":"1608:220:3","nodeType":"YulSwitch","src":"1608:220:3"}]},"evmVersion":"cancun","externalReferences":[{"declaration":358,"isOffset":false,"isSlot":false,"src":"1463:14:3","valueSize":1}],"id":361,"nodeType":"InlineAssembly","src":"1019:819:3"}]},"documentation":{"id":356,"nodeType":"StructuredDocumentation","src":"754:190:3","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":363,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"958:9:3","nodeType":"FunctionDefinition","parameters":{"id":359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":358,"mutability":"mutable","name":"implementation","nameLocation":"976:14:3","nodeType":"VariableDeclaration","scope":363,"src":"968:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":357,"name":"address","nodeType":"ElementaryTypeName","src":"968:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"967:24:3"},"returnParameters":{"id":360,"nodeType":"ParameterList","parameters":[],"src":"1009:0:3"},"scope":388,"src":"949:895:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":364,"nodeType":"StructuredDocumentation","src":"1850:173:3","text":" @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n function and {_fallback} should delegate."},"id":369,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2037:15:3","nodeType":"FunctionDefinition","parameters":{"id":365,"nodeType":"ParameterList","parameters":[],"src":"2052:2:3"},"returnParameters":{"id":368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":367,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":369,"src":"2086:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":366,"name":"address","nodeType":"ElementaryTypeName","src":"2086:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2085:9:3"},"scope":388,"src":"2028:67:3","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":378,"nodeType":"Block","src":"2361:45:3","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":374,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":369,"src":"2381:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2381:17:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":373,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":363,"src":"2371:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2371:28:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":377,"nodeType":"ExpressionStatement","src":"2371:28:3"}]},"documentation":{"id":370,"nodeType":"StructuredDocumentation","src":"2101:217:3","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":379,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2332:9:3","nodeType":"FunctionDefinition","parameters":{"id":371,"nodeType":"ParameterList","parameters":[],"src":"2341:2:3"},"returnParameters":{"id":372,"nodeType":"ParameterList","parameters":[],"src":"2361:0:3"},"scope":388,"src":"2323:83:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":386,"nodeType":"Block","src":"2639:28:3","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":383,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"2649:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2649:11:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":385,"nodeType":"ExpressionStatement","src":"2649:11:3"}]},"documentation":{"id":380,"nodeType":"StructuredDocumentation","src":"2412:186:3","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"id":387,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":381,"nodeType":"ParameterList","parameters":[],"src":"2611:2:3"},"returnParameters":{"id":382,"nodeType":"ParameterList","parameters":[],"src":"2639:0:3"},"scope":388,"src":"2603:64:3","stateMutability":"payable","virtual":true,"visibility":"external"}],"scope":389,"src":"724:1945:3","usedErrors":[],"usedEvents":[]}],"src":"99:2571:3"},"id":3},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[398]},"id":399,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":390,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":391,"nodeType":"StructuredDocumentation","src":"134:79:4","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":398,"linearizedBaseContracts":[398],"name":"IBeacon","nameLocation":"224:7:4","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":392,"nodeType":"StructuredDocumentation","src":"238:168:4","text":" @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract."},"functionSelector":"5c60da1b","id":397,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"420:14:4","nodeType":"FunctionDefinition","parameters":{"id":393,"nodeType":"ParameterList","parameters":[],"src":"434:2:4"},"returnParameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":395,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":397,"src":"460:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":394,"name":"address","nodeType":"ElementaryTypeName","src":"460:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"459:9:4"},"scope":398,"src":"411:58:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":399,"src":"214:257:4","usedErrors":[],"usedEvents":[]}],"src":"108:364:4"},"id":4},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[476]},"id":477,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":400,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":401,"nodeType":"StructuredDocumentation","src":"132:71:5","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":476,"linearizedBaseContracts":[476],"name":"IERC20","nameLocation":"214:6:5","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":402,"nodeType":"StructuredDocumentation","src":"227:158:5","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":410,"name":"Transfer","nameLocation":"396:8:5","nodeType":"EventDefinition","parameters":{"id":409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":404,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"421:4:5","nodeType":"VariableDeclaration","scope":410,"src":"405:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":403,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":406,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"443:2:5","nodeType":"VariableDeclaration","scope":410,"src":"427:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":405,"name":"address","nodeType":"ElementaryTypeName","src":"427:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":408,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"455:5:5","nodeType":"VariableDeclaration","scope":410,"src":"447:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":407,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"404:57:5"},"src":"390:72:5"},{"anonymous":false,"documentation":{"id":411,"nodeType":"StructuredDocumentation","src":"468:148:5","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":419,"name":"Approval","nameLocation":"627:8:5","nodeType":"EventDefinition","parameters":{"id":418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":413,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"652:5:5","nodeType":"VariableDeclaration","scope":419,"src":"636:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":412,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":415,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"675:7:5","nodeType":"VariableDeclaration","scope":419,"src":"659:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":414,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":417,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"692:5:5","nodeType":"VariableDeclaration","scope":419,"src":"684:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":416,"name":"uint256","nodeType":"ElementaryTypeName","src":"684:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:63:5"},"src":"621:78:5"},{"documentation":{"id":420,"nodeType":"StructuredDocumentation","src":"705:65:5","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":425,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"784:11:5","nodeType":"FunctionDefinition","parameters":{"id":421,"nodeType":"ParameterList","parameters":[],"src":"795:2:5"},"returnParameters":{"id":424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":423,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":425,"src":"821:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":422,"name":"uint256","nodeType":"ElementaryTypeName","src":"821:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"820:9:5"},"scope":476,"src":"775:55:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":426,"nodeType":"StructuredDocumentation","src":"836:71:5","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":433,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:5","nodeType":"FunctionDefinition","parameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":428,"mutability":"mutable","name":"account","nameLocation":"939:7:5","nodeType":"VariableDeclaration","scope":433,"src":"931:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":427,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:5"},"returnParameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":431,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":433,"src":"971:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:5"},"scope":476,"src":"912:68:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":434,"nodeType":"StructuredDocumentation","src":"986:213:5","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":443,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:5","nodeType":"FunctionDefinition","parameters":{"id":439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":436,"mutability":"mutable","name":"to","nameLocation":"1230:2:5","nodeType":"VariableDeclaration","scope":443,"src":"1222:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":435,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":438,"mutability":"mutable","name":"value","nameLocation":"1242:5:5","nodeType":"VariableDeclaration","scope":443,"src":"1234:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":437,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:27:5"},"returnParameters":{"id":442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":443,"src":"1267:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":440,"name":"bool","nodeType":"ElementaryTypeName","src":"1267:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1266:6:5"},"scope":476,"src":"1204:69:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":444,"nodeType":"StructuredDocumentation","src":"1279:264:5","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":453,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1557:9:5","nodeType":"FunctionDefinition","parameters":{"id":449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":446,"mutability":"mutable","name":"owner","nameLocation":"1575:5:5","nodeType":"VariableDeclaration","scope":453,"src":"1567:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":445,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":448,"mutability":"mutable","name":"spender","nameLocation":"1590:7:5","nodeType":"VariableDeclaration","scope":453,"src":"1582:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":447,"name":"address","nodeType":"ElementaryTypeName","src":"1582:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1566:32:5"},"returnParameters":{"id":452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":453,"src":"1622:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":450,"name":"uint256","nodeType":"ElementaryTypeName","src":"1622:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1621:9:5"},"scope":476,"src":"1548:83:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":454,"nodeType":"StructuredDocumentation","src":"1637:667:5","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":463,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2318:7:5","nodeType":"FunctionDefinition","parameters":{"id":459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"spender","nameLocation":"2334:7:5","nodeType":"VariableDeclaration","scope":463,"src":"2326:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":455,"name":"address","nodeType":"ElementaryTypeName","src":"2326:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":458,"mutability":"mutable","name":"value","nameLocation":"2351:5:5","nodeType":"VariableDeclaration","scope":463,"src":"2343:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":457,"name":"uint256","nodeType":"ElementaryTypeName","src":"2343:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:32:5"},"returnParameters":{"id":462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":461,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":463,"src":"2376:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":460,"name":"bool","nodeType":"ElementaryTypeName","src":"2376:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2375:6:5"},"scope":476,"src":"2309:73:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":464,"nodeType":"StructuredDocumentation","src":"2388:297:5","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":475,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2699:12:5","nodeType":"FunctionDefinition","parameters":{"id":471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":466,"mutability":"mutable","name":"from","nameLocation":"2720:4:5","nodeType":"VariableDeclaration","scope":475,"src":"2712:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":465,"name":"address","nodeType":"ElementaryTypeName","src":"2712:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":468,"mutability":"mutable","name":"to","nameLocation":"2734:2:5","nodeType":"VariableDeclaration","scope":475,"src":"2726:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":467,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":470,"mutability":"mutable","name":"value","nameLocation":"2746:5:5","nodeType":"VariableDeclaration","scope":475,"src":"2738:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":469,"name":"uint256","nodeType":"ElementaryTypeName","src":"2738:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2711:41:5"},"returnParameters":{"id":474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":473,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":475,"src":"2771:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":472,"name":"bool","nodeType":"ElementaryTypeName","src":"2771:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2770:6:5"},"scope":476,"src":"2690:87:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":477,"src":"204:2575:5","usedErrors":[],"usedEvents":[410,419]}],"src":"106:2674:5"},"id":5},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[736],"Errors":[758]},"id":737,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":478,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:6"},{"absolutePath":"@openzeppelin/contracts/utils/Errors.sol","file":"./Errors.sol","id":480,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":737,"sourceUnit":759,"src":"127:36:6","symbolAliases":[{"foreign":{"id":479,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":758,"src":"135:6:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":481,"nodeType":"StructuredDocumentation","src":"165:67:6","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":736,"linearizedBaseContracts":[736],"name":"Address","nameLocation":"241:7:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":482,"nodeType":"StructuredDocumentation","src":"255:75:6","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","id":486,"name":"AddressEmptyCode","nameLocation":"341:16:6","nodeType":"ErrorDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":484,"mutability":"mutable","name":"target","nameLocation":"366:6:6","nodeType":"VariableDeclaration","scope":486,"src":"358:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":483,"name":"address","nodeType":"ElementaryTypeName","src":"358:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"357:16:6"},"src":"335:39:6"},{"body":{"id":533,"nodeType":"Block","src":"1361:294:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":496,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1383:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$736","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$736","typeString":"library Address"}],"id":495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1375:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":494,"name":"address","nodeType":"ElementaryTypeName","src":"1375:7:6","typeDescriptions":{}}},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1375:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1389:7:6","memberName":"balance","nodeType":"MemberAccess","src":"1375:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":499,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"1399:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1375:30:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":513,"nodeType":"IfStatement","src":"1371:125:6","trueBody":{"id":512,"nodeType":"Block","src":"1407:89:6","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":506,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1463:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$736","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$736","typeString":"library Address"}],"id":505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1455:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":504,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:6","typeDescriptions":{}}},"id":507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1455:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1469:7:6","memberName":"balance","nodeType":"MemberAccess","src":"1455:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":509,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"1478:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":501,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":758,"src":"1428:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$758_$","typeString":"type(library Errors)"}},"id":503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1435:19:6","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":746,"src":"1428:26:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1428:57:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":511,"nodeType":"RevertStatement","src":"1421:64:6"}]}},{"assignments":[515,517],"declarations":[{"constant":false,"id":515,"mutability":"mutable","name":"success","nameLocation":"1512:7:6","nodeType":"VariableDeclaration","scope":533,"src":"1507:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":514,"name":"bool","nodeType":"ElementaryTypeName","src":"1507:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":517,"mutability":"mutable","name":"returndata","nameLocation":"1534:10:6","nodeType":"VariableDeclaration","scope":533,"src":"1521:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":516,"name":"bytes","nodeType":"ElementaryTypeName","src":"1521:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":524,"initialValue":{"arguments":[{"hexValue":"","id":522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1578:2:6","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":518,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":489,"src":"1548:9:6","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1558:4:6","memberName":"call","nodeType":"MemberAccess","src":"1548:14:6","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":521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":520,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"1570:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1548:29:6","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":523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1548:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1506:75:6"},{"condition":{"id":526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1595:8:6","subExpression":{"id":525,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1596:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":532,"nodeType":"IfStatement","src":"1591:58:6","trueBody":{"id":531,"nodeType":"Block","src":"1605:44:6","statements":[{"expression":{"arguments":[{"id":528,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"1627:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":527,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":735,"src":"1619:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1619:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":530,"nodeType":"ExpressionStatement","src":"1619:19:6"}]}}]},"documentation":{"id":487,"nodeType":"StructuredDocumentation","src":"380:905:6","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.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":534,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1299:9:6","nodeType":"FunctionDefinition","parameters":{"id":492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":489,"mutability":"mutable","name":"recipient","nameLocation":"1325:9:6","nodeType":"VariableDeclaration","scope":534,"src":"1309:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":488,"name":"address","nodeType":"ElementaryTypeName","src":"1309:15:6","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":491,"mutability":"mutable","name":"amount","nameLocation":"1344:6:6","nodeType":"VariableDeclaration","scope":534,"src":"1336:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":490,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1308:43:6"},"returnParameters":{"id":493,"nodeType":"ParameterList","parameters":[],"src":"1361:0:6"},"scope":736,"src":"1290:365:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":550,"nodeType":"Block","src":"2589:62:6","statements":[{"expression":{"arguments":[{"id":545,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":537,"src":"2628:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":546,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":539,"src":"2636:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2642:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"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"}],"id":544,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":601,"src":"2606:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2606:38:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":543,"id":549,"nodeType":"Return","src":"2599:45:6"}]},"documentation":{"id":535,"nodeType":"StructuredDocumentation","src":"1661:834:6","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 or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {Errors.FailedCall} error.\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."},"id":551,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2509:12:6","nodeType":"FunctionDefinition","parameters":{"id":540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":537,"mutability":"mutable","name":"target","nameLocation":"2530:6:6","nodeType":"VariableDeclaration","scope":551,"src":"2522:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":536,"name":"address","nodeType":"ElementaryTypeName","src":"2522:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":539,"mutability":"mutable","name":"data","nameLocation":"2551:4:6","nodeType":"VariableDeclaration","scope":551,"src":"2538:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":538,"name":"bytes","nodeType":"ElementaryTypeName","src":"2538:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2521:35:6"},"returnParameters":{"id":543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":542,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":551,"src":"2575:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":541,"name":"bytes","nodeType":"ElementaryTypeName","src":"2575:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2574:14:6"},"scope":736,"src":"2500:151:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":600,"nodeType":"Block","src":"3088:294:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":565,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3110:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$736","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$736","typeString":"library Address"}],"id":564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3102:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":563,"name":"address","nodeType":"ElementaryTypeName","src":"3102:7:6","typeDescriptions":{}}},"id":566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3102:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3116:7:6","memberName":"balance","nodeType":"MemberAccess","src":"3102:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":568,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"3126:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3102:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":582,"nodeType":"IfStatement","src":"3098:123:6","trueBody":{"id":581,"nodeType":"Block","src":"3133:88:6","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":575,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3189:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$736","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$736","typeString":"library Address"}],"id":574,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3181:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":573,"name":"address","nodeType":"ElementaryTypeName","src":"3181:7:6","typeDescriptions":{}}},"id":576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3181:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3195:7:6","memberName":"balance","nodeType":"MemberAccess","src":"3181:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":578,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"3204:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":570,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":758,"src":"3154:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$758_$","typeString":"type(library Errors)"}},"id":572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3161:19:6","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":746,"src":"3154:26:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3154:56:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":580,"nodeType":"RevertStatement","src":"3147:63:6"}]}},{"assignments":[584,586],"declarations":[{"constant":false,"id":584,"mutability":"mutable","name":"success","nameLocation":"3236:7:6","nodeType":"VariableDeclaration","scope":600,"src":"3231:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":583,"name":"bool","nodeType":"ElementaryTypeName","src":"3231:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":586,"mutability":"mutable","name":"returndata","nameLocation":"3258:10:6","nodeType":"VariableDeclaration","scope":600,"src":"3245:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":585,"name":"bytes","nodeType":"ElementaryTypeName","src":"3245:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":593,"initialValue":{"arguments":[{"id":591,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":556,"src":"3298:4:6","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":587,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"3272:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3279:4:6","memberName":"call","nodeType":"MemberAccess","src":"3272:11:6","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":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":589,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":558,"src":"3291:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3272:25:6","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":592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3272:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3230:73:6"},{"expression":{"arguments":[{"id":595,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"3347:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":596,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"3355:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":597,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":586,"src":"3364:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":594,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"3320:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3320:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":562,"id":599,"nodeType":"Return","src":"3313:62:6"}]},"documentation":{"id":552,"nodeType":"StructuredDocumentation","src":"2657:313:6","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`."},"id":601,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"2984:21:6","nodeType":"FunctionDefinition","parameters":{"id":559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":554,"mutability":"mutable","name":"target","nameLocation":"3014:6:6","nodeType":"VariableDeclaration","scope":601,"src":"3006:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":553,"name":"address","nodeType":"ElementaryTypeName","src":"3006:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":556,"mutability":"mutable","name":"data","nameLocation":"3035:4:6","nodeType":"VariableDeclaration","scope":601,"src":"3022:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":555,"name":"bytes","nodeType":"ElementaryTypeName","src":"3022:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":558,"mutability":"mutable","name":"value","nameLocation":"3049:5:6","nodeType":"VariableDeclaration","scope":601,"src":"3041:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":557,"name":"uint256","nodeType":"ElementaryTypeName","src":"3041:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3005:50:6"},"returnParameters":{"id":562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":561,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":601,"src":"3074:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":560,"name":"bytes","nodeType":"ElementaryTypeName","src":"3074:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3073:14:6"},"scope":736,"src":"2975:407:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":626,"nodeType":"Block","src":"3621:154:6","statements":[{"assignments":[612,614],"declarations":[{"constant":false,"id":612,"mutability":"mutable","name":"success","nameLocation":"3637:7:6","nodeType":"VariableDeclaration","scope":626,"src":"3632:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":611,"name":"bool","nodeType":"ElementaryTypeName","src":"3632:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":614,"mutability":"mutable","name":"returndata","nameLocation":"3659:10:6","nodeType":"VariableDeclaration","scope":626,"src":"3646:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":613,"name":"bytes","nodeType":"ElementaryTypeName","src":"3646:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":619,"initialValue":{"arguments":[{"id":617,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"3691:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":615,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"3673:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3680:10:6","memberName":"staticcall","nodeType":"MemberAccess","src":"3673:17:6","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":618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3673:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3631:65:6"},{"expression":{"arguments":[{"id":621,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":604,"src":"3740:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":622,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"3748:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":623,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":614,"src":"3757:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":620,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"3713:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3713:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":610,"id":625,"nodeType":"Return","src":"3706:62:6"}]},"documentation":{"id":602,"nodeType":"StructuredDocumentation","src":"3388:128:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"id":627,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"3530:18:6","nodeType":"FunctionDefinition","parameters":{"id":607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"target","nameLocation":"3557:6:6","nodeType":"VariableDeclaration","scope":627,"src":"3549:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":603,"name":"address","nodeType":"ElementaryTypeName","src":"3549:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":606,"mutability":"mutable","name":"data","nameLocation":"3578:4:6","nodeType":"VariableDeclaration","scope":627,"src":"3565:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":605,"name":"bytes","nodeType":"ElementaryTypeName","src":"3565:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3548:35:6"},"returnParameters":{"id":610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":609,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":627,"src":"3607:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":608,"name":"bytes","nodeType":"ElementaryTypeName","src":"3607:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3606:14:6"},"scope":736,"src":"3521:254:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":652,"nodeType":"Block","src":"4013:156:6","statements":[{"assignments":[638,640],"declarations":[{"constant":false,"id":638,"mutability":"mutable","name":"success","nameLocation":"4029:7:6","nodeType":"VariableDeclaration","scope":652,"src":"4024:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":637,"name":"bool","nodeType":"ElementaryTypeName","src":"4024:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":640,"mutability":"mutable","name":"returndata","nameLocation":"4051:10:6","nodeType":"VariableDeclaration","scope":652,"src":"4038:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":639,"name":"bytes","nodeType":"ElementaryTypeName","src":"4038:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":645,"initialValue":{"arguments":[{"id":643,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"4085:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":641,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"4065:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4072:12:6","memberName":"delegatecall","nodeType":"MemberAccess","src":"4065:19:6","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":644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4065:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4023:67:6"},{"expression":{"arguments":[{"id":647,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"4134:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":648,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"4142:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":649,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":640,"src":"4151:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":646,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"4107:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4107:55:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":636,"id":651,"nodeType":"Return","src":"4100:62:6"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"3781:130:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"id":653,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"3925:20:6","nodeType":"FunctionDefinition","parameters":{"id":633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"target","nameLocation":"3954:6:6","nodeType":"VariableDeclaration","scope":653,"src":"3946:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":629,"name":"address","nodeType":"ElementaryTypeName","src":"3946:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"data","nameLocation":"3975:4:6","nodeType":"VariableDeclaration","scope":653,"src":"3962:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":631,"name":"bytes","nodeType":"ElementaryTypeName","src":"3962:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3945:35:6"},"returnParameters":{"id":636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":635,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":653,"src":"3999:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":634,"name":"bytes","nodeType":"ElementaryTypeName","src":"3999:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3998:14:6"},"scope":736,"src":"3916:253:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":692,"nodeType":"Block","src":"4595:424:6","statements":[{"condition":{"id":666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4609:8:6","subExpression":{"id":665,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"4610:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":690,"nodeType":"Block","src":"4669:344:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":672,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":660,"src":"4857:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4868:6:6","memberName":"length","nodeType":"MemberAccess","src":"4857:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4878:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4857:22:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":676,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":656,"src":"4883:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4890:4:6","memberName":"code","nodeType":"MemberAccess","src":"4883:11:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4895:6:6","memberName":"length","nodeType":"MemberAccess","src":"4883:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4905:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4883:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4857:49:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":687,"nodeType":"IfStatement","src":"4853:119:6","trueBody":{"id":686,"nodeType":"Block","src":"4908:64:6","statements":[{"errorCall":{"arguments":[{"id":683,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":656,"src":"4950:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":682,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"4933:16:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4933:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":685,"nodeType":"RevertStatement","src":"4926:31:6"}]}},{"expression":{"id":688,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":660,"src":"4992:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":664,"id":689,"nodeType":"Return","src":"4985:17:6"}]},"id":691,"nodeType":"IfStatement","src":"4605:408:6","trueBody":{"id":671,"nodeType":"Block","src":"4619:44:6","statements":[{"expression":{"arguments":[{"id":668,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":660,"src":"4641:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":667,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":735,"src":"4633:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4633:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":670,"nodeType":"ExpressionStatement","src":"4633:19:6"}]}}]},"documentation":{"id":654,"nodeType":"StructuredDocumentation","src":"4175:257:6","text":" @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n of an unsuccessful call."},"id":693,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"4446:26:6","nodeType":"FunctionDefinition","parameters":{"id":661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":656,"mutability":"mutable","name":"target","nameLocation":"4490:6:6","nodeType":"VariableDeclaration","scope":693,"src":"4482:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":655,"name":"address","nodeType":"ElementaryTypeName","src":"4482:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":658,"mutability":"mutable","name":"success","nameLocation":"4511:7:6","nodeType":"VariableDeclaration","scope":693,"src":"4506:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":657,"name":"bool","nodeType":"ElementaryTypeName","src":"4506:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":660,"mutability":"mutable","name":"returndata","nameLocation":"4541:10:6","nodeType":"VariableDeclaration","scope":693,"src":"4528:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":659,"name":"bytes","nodeType":"ElementaryTypeName","src":"4528:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4472:85:6"},"returnParameters":{"id":664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":663,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":693,"src":"4581:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":662,"name":"bytes","nodeType":"ElementaryTypeName","src":"4581:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4580:14:6"},"scope":736,"src":"4437:582:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":714,"nodeType":"Block","src":"5323:122:6","statements":[{"condition":{"id":704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5337:8:6","subExpression":{"id":703,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":696,"src":"5338:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":712,"nodeType":"Block","src":"5397:42:6","statements":[{"expression":{"id":710,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"5418:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":702,"id":711,"nodeType":"Return","src":"5411:17:6"}]},"id":713,"nodeType":"IfStatement","src":"5333:106:6","trueBody":{"id":709,"nodeType":"Block","src":"5347:44:6","statements":[{"expression":{"arguments":[{"id":706,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"5369:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":705,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":735,"src":"5361:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5361:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":708,"nodeType":"ExpressionStatement","src":"5361:19:6"}]}}]},"documentation":{"id":694,"nodeType":"StructuredDocumentation","src":"5025:191:6","text":" @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {Errors.FailedCall} error."},"id":715,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"5230:16:6","nodeType":"FunctionDefinition","parameters":{"id":699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":696,"mutability":"mutable","name":"success","nameLocation":"5252:7:6","nodeType":"VariableDeclaration","scope":715,"src":"5247:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":695,"name":"bool","nodeType":"ElementaryTypeName","src":"5247:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":698,"mutability":"mutable","name":"returndata","nameLocation":"5274:10:6","nodeType":"VariableDeclaration","scope":715,"src":"5261:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":697,"name":"bytes","nodeType":"ElementaryTypeName","src":"5261:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5246:39:6"},"returnParameters":{"id":702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":701,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":715,"src":"5309:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":700,"name":"bytes","nodeType":"ElementaryTypeName","src":"5309:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5308:14:6"},"scope":736,"src":"5221:224:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":734,"nodeType":"Block","src":"5614:432:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":721,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"5690:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5701:6:6","memberName":"length","nodeType":"MemberAccess","src":"5690:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5710:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5690:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":732,"nodeType":"Block","src":"5989:51:6","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":727,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":758,"src":"6010:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$758_$","typeString":"type(library Errors)"}},"id":729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6017:10:6","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":749,"src":"6010:17:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6010:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":731,"nodeType":"RevertStatement","src":"6003:26:6"}]},"id":733,"nodeType":"IfStatement","src":"5686:354:6","trueBody":{"id":726,"nodeType":"Block","src":"5713:270:6","statements":[{"AST":{"nativeSrc":"5840:133:6","nodeType":"YulBlock","src":"5840:133:6","statements":[{"nativeSrc":"5858:40:6","nodeType":"YulVariableDeclaration","src":"5858:40:6","value":{"arguments":[{"name":"returndata","nativeSrc":"5887:10:6","nodeType":"YulIdentifier","src":"5887:10:6"}],"functionName":{"name":"mload","nativeSrc":"5881:5:6","nodeType":"YulIdentifier","src":"5881:5:6"},"nativeSrc":"5881:17:6","nodeType":"YulFunctionCall","src":"5881:17:6"},"variables":[{"name":"returndata_size","nativeSrc":"5862:15:6","nodeType":"YulTypedName","src":"5862:15:6","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5926:2:6","nodeType":"YulLiteral","src":"5926:2:6","type":"","value":"32"},{"name":"returndata","nativeSrc":"5930:10:6","nodeType":"YulIdentifier","src":"5930:10:6"}],"functionName":{"name":"add","nativeSrc":"5922:3:6","nodeType":"YulIdentifier","src":"5922:3:6"},"nativeSrc":"5922:19:6","nodeType":"YulFunctionCall","src":"5922:19:6"},{"name":"returndata_size","nativeSrc":"5943:15:6","nodeType":"YulIdentifier","src":"5943:15:6"}],"functionName":{"name":"revert","nativeSrc":"5915:6:6","nodeType":"YulIdentifier","src":"5915:6:6"},"nativeSrc":"5915:44:6","nodeType":"YulFunctionCall","src":"5915:44:6"},"nativeSrc":"5915:44:6","nodeType":"YulExpressionStatement","src":"5915:44:6"}]},"evmVersion":"cancun","externalReferences":[{"declaration":718,"isOffset":false,"isSlot":false,"src":"5887:10:6","valueSize":1},{"declaration":718,"isOffset":false,"isSlot":false,"src":"5930:10:6","valueSize":1}],"flags":["memory-safe"],"id":725,"nodeType":"InlineAssembly","src":"5815:158:6"}]}}]},"documentation":{"id":716,"nodeType":"StructuredDocumentation","src":"5451:103:6","text":" @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}."},"id":735,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"5568:7:6","nodeType":"FunctionDefinition","parameters":{"id":719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":718,"mutability":"mutable","name":"returndata","nameLocation":"5589:10:6","nodeType":"VariableDeclaration","scope":735,"src":"5576:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":717,"name":"bytes","nodeType":"ElementaryTypeName","src":"5576:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5575:25:6"},"returnParameters":{"id":720,"nodeType":"ParameterList","parameters":[],"src":"5614:0:6"},"scope":736,"src":"5559:487:6","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":737,"src":"233:5815:6","usedErrors":[486],"usedEvents":[]}],"src":"101:5948:6"},"id":6},"@openzeppelin/contracts/utils/Errors.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Errors.sol","exportedSymbols":{"Errors":[758]},"id":759,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":738,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"100:24:7"},{"abstract":false,"baseContracts":[],"canonicalName":"Errors","contractDependencies":[],"contractKind":"library","documentation":{"id":739,"nodeType":"StructuredDocumentation","src":"126:284:7","text":" @dev Collection of common custom errors used in multiple contracts\n IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n It is recommended to avoid relying on the error API for critical functionality.\n _Available since v5.1._"},"fullyImplemented":true,"id":758,"linearizedBaseContracts":[758],"name":"Errors","nameLocation":"419:6:7","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":740,"nodeType":"StructuredDocumentation","src":"432:94:7","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cf479181","id":746,"name":"InsufficientBalance","nameLocation":"537:19:7","nodeType":"ErrorDefinition","parameters":{"id":745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":742,"mutability":"mutable","name":"balance","nameLocation":"565:7:7","nodeType":"VariableDeclaration","scope":746,"src":"557:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":741,"name":"uint256","nodeType":"ElementaryTypeName","src":"557:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":744,"mutability":"mutable","name":"needed","nameLocation":"582:6:7","nodeType":"VariableDeclaration","scope":746,"src":"574:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":743,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"556:33:7"},"src":"531:59:7"},{"documentation":{"id":747,"nodeType":"StructuredDocumentation","src":"596:89:7","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"d6bda275","id":749,"name":"FailedCall","nameLocation":"696:10:7","nodeType":"ErrorDefinition","parameters":{"id":748,"nodeType":"ParameterList","parameters":[],"src":"706:2:7"},"src":"690:19:7"},{"documentation":{"id":750,"nodeType":"StructuredDocumentation","src":"715:46:7","text":" @dev The deployment failed."},"errorSelector":"b06ebf3d","id":752,"name":"FailedDeployment","nameLocation":"772:16:7","nodeType":"ErrorDefinition","parameters":{"id":751,"nodeType":"ParameterList","parameters":[],"src":"788:2:7"},"src":"766:25:7"},{"documentation":{"id":753,"nodeType":"StructuredDocumentation","src":"797:58:7","text":" @dev A necessary precompile is missing."},"errorSelector":"42b01bce","id":757,"name":"MissingPrecompile","nameLocation":"866:17:7","nodeType":"ErrorDefinition","parameters":{"id":756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":755,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":757,"src":"884:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":754,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"883:9:7"},"src":"860:33:7"}],"scope":759,"src":"411:484:7","usedErrors":[746,749,752,757],"usedEvents":[]}],"src":"100:796:7"},"id":7},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[882]},"id":883,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":760,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":761,"nodeType":"StructuredDocumentation","src":"219:1187:8","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"id":882,"linearizedBaseContracts":[882],"name":"StorageSlot","nameLocation":"1415:11:8","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":764,"members":[{"constant":false,"id":763,"mutability":"mutable","name":"value","nameLocation":"1470:5:8","nodeType":"VariableDeclaration","scope":764,"src":"1462:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":762,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1440:11:8","nodeType":"StructDefinition","scope":882,"src":"1433:49:8","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":767,"members":[{"constant":false,"id":766,"mutability":"mutable","name":"value","nameLocation":"1522:5:8","nodeType":"VariableDeclaration","scope":767,"src":"1517:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":765,"name":"bool","nodeType":"ElementaryTypeName","src":"1517:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1495:11:8","nodeType":"StructDefinition","scope":882,"src":"1488:46:8","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":770,"members":[{"constant":false,"id":769,"mutability":"mutable","name":"value","nameLocation":"1577:5:8","nodeType":"VariableDeclaration","scope":770,"src":"1569:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":768,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1569:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1547:11:8","nodeType":"StructDefinition","scope":882,"src":"1540:49:8","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":773,"members":[{"constant":false,"id":772,"mutability":"mutable","name":"value","nameLocation":"1632:5:8","nodeType":"VariableDeclaration","scope":773,"src":"1624:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":771,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1602:11:8","nodeType":"StructDefinition","scope":882,"src":"1595:49:8","visibility":"public"},{"canonicalName":"StorageSlot.Int256Slot","id":776,"members":[{"constant":false,"id":775,"mutability":"mutable","name":"value","nameLocation":"1685:5:8","nodeType":"VariableDeclaration","scope":776,"src":"1678:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":774,"name":"int256","nodeType":"ElementaryTypeName","src":"1678:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"name":"Int256Slot","nameLocation":"1657:10:8","nodeType":"StructDefinition","scope":882,"src":"1650:47:8","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":779,"members":[{"constant":false,"id":778,"mutability":"mutable","name":"value","nameLocation":"1738:5:8","nodeType":"VariableDeclaration","scope":779,"src":"1731:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":777,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1710:10:8","nodeType":"StructDefinition","scope":882,"src":"1703:47:8","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":782,"members":[{"constant":false,"id":781,"mutability":"mutable","name":"value","nameLocation":"1789:5:8","nodeType":"VariableDeclaration","scope":782,"src":"1783:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":780,"name":"bytes","nodeType":"ElementaryTypeName","src":"1783:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1763:9:8","nodeType":"StructDefinition","scope":882,"src":"1756:45:8","visibility":"public"},{"body":{"id":792,"nodeType":"Block","src":"1983:79:8","statements":[{"AST":{"nativeSrc":"2018:38:8","nodeType":"YulBlock","src":"2018:38:8","statements":[{"nativeSrc":"2032:14:8","nodeType":"YulAssignment","src":"2032:14:8","value":{"name":"slot","nativeSrc":"2042:4:8","nodeType":"YulIdentifier","src":"2042:4:8"},"variableNames":[{"name":"r.slot","nativeSrc":"2032:6:8","nodeType":"YulIdentifier","src":"2032:6:8"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":789,"isOffset":false,"isSlot":true,"src":"2032:6:8","suffix":"slot","valueSize":1},{"declaration":785,"isOffset":false,"isSlot":false,"src":"2042:4:8","valueSize":1}],"flags":["memory-safe"],"id":791,"nodeType":"InlineAssembly","src":"1993:63:8"}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"1807:87:8","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":793,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1908:14:8","nodeType":"FunctionDefinition","parameters":{"id":786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"slot","nameLocation":"1931:4:8","nodeType":"VariableDeclaration","scope":793,"src":"1923:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":784,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1923:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1922:14:8"},"returnParameters":{"id":790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":789,"mutability":"mutable","name":"r","nameLocation":"1980:1:8","nodeType":"VariableDeclaration","scope":793,"src":"1960:21:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$764_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":788,"nodeType":"UserDefinedTypeName","pathNode":{"id":787,"name":"AddressSlot","nameLocations":["1960:11:8"],"nodeType":"IdentifierPath","referencedDeclaration":764,"src":"1960:11:8"},"referencedDeclaration":764,"src":"1960:11:8","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$764_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1959:23:8"},"scope":882,"src":"1899:163:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":803,"nodeType":"Block","src":"2243:79:8","statements":[{"AST":{"nativeSrc":"2278:38:8","nodeType":"YulBlock","src":"2278:38:8","statements":[{"nativeSrc":"2292:14:8","nodeType":"YulAssignment","src":"2292:14:8","value":{"name":"slot","nativeSrc":"2302:4:8","nodeType":"YulIdentifier","src":"2302:4:8"},"variableNames":[{"name":"r.slot","nativeSrc":"2292:6:8","nodeType":"YulIdentifier","src":"2292:6:8"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":800,"isOffset":false,"isSlot":true,"src":"2292:6:8","suffix":"slot","valueSize":1},{"declaration":796,"isOffset":false,"isSlot":false,"src":"2302:4:8","valueSize":1}],"flags":["memory-safe"],"id":802,"nodeType":"InlineAssembly","src":"2253:63:8"}]},"documentation":{"id":794,"nodeType":"StructuredDocumentation","src":"2068:86:8","text":" @dev Returns a `BooleanSlot` with member `value` located at `slot`."},"id":804,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2168:14:8","nodeType":"FunctionDefinition","parameters":{"id":797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":796,"mutability":"mutable","name":"slot","nameLocation":"2191:4:8","nodeType":"VariableDeclaration","scope":804,"src":"2183:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":795,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2183:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2182:14:8"},"returnParameters":{"id":801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":800,"mutability":"mutable","name":"r","nameLocation":"2240:1:8","nodeType":"VariableDeclaration","scope":804,"src":"2220:21:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$767_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":799,"nodeType":"UserDefinedTypeName","pathNode":{"id":798,"name":"BooleanSlot","nameLocations":["2220:11:8"],"nodeType":"IdentifierPath","referencedDeclaration":767,"src":"2220:11:8"},"referencedDeclaration":767,"src":"2220:11:8","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$767_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2219:23:8"},"scope":882,"src":"2159:163:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":814,"nodeType":"Block","src":"2503:79:8","statements":[{"AST":{"nativeSrc":"2538:38:8","nodeType":"YulBlock","src":"2538:38:8","statements":[{"nativeSrc":"2552:14:8","nodeType":"YulAssignment","src":"2552:14:8","value":{"name":"slot","nativeSrc":"2562:4:8","nodeType":"YulIdentifier","src":"2562:4:8"},"variableNames":[{"name":"r.slot","nativeSrc":"2552:6:8","nodeType":"YulIdentifier","src":"2552:6:8"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":811,"isOffset":false,"isSlot":true,"src":"2552:6:8","suffix":"slot","valueSize":1},{"declaration":807,"isOffset":false,"isSlot":false,"src":"2562:4:8","valueSize":1}],"flags":["memory-safe"],"id":813,"nodeType":"InlineAssembly","src":"2513:63:8"}]},"documentation":{"id":805,"nodeType":"StructuredDocumentation","src":"2328:86:8","text":" @dev Returns a `Bytes32Slot` with member `value` located at `slot`."},"id":815,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2428:14:8","nodeType":"FunctionDefinition","parameters":{"id":808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":807,"mutability":"mutable","name":"slot","nameLocation":"2451:4:8","nodeType":"VariableDeclaration","scope":815,"src":"2443:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":806,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2443:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2442:14:8"},"returnParameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"r","nameLocation":"2500:1:8","nodeType":"VariableDeclaration","scope":815,"src":"2480:21:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$770_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":810,"nodeType":"UserDefinedTypeName","pathNode":{"id":809,"name":"Bytes32Slot","nameLocations":["2480:11:8"],"nodeType":"IdentifierPath","referencedDeclaration":770,"src":"2480:11:8"},"referencedDeclaration":770,"src":"2480:11:8","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$770_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2479:23:8"},"scope":882,"src":"2419:163:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":825,"nodeType":"Block","src":"2763:79:8","statements":[{"AST":{"nativeSrc":"2798:38:8","nodeType":"YulBlock","src":"2798:38:8","statements":[{"nativeSrc":"2812:14:8","nodeType":"YulAssignment","src":"2812:14:8","value":{"name":"slot","nativeSrc":"2822:4:8","nodeType":"YulIdentifier","src":"2822:4:8"},"variableNames":[{"name":"r.slot","nativeSrc":"2812:6:8","nodeType":"YulIdentifier","src":"2812:6:8"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":822,"isOffset":false,"isSlot":true,"src":"2812:6:8","suffix":"slot","valueSize":1},{"declaration":818,"isOffset":false,"isSlot":false,"src":"2822:4:8","valueSize":1}],"flags":["memory-safe"],"id":824,"nodeType":"InlineAssembly","src":"2773:63:8"}]},"documentation":{"id":816,"nodeType":"StructuredDocumentation","src":"2588:86:8","text":" @dev Returns a `Uint256Slot` with member `value` located at `slot`."},"id":826,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2688:14:8","nodeType":"FunctionDefinition","parameters":{"id":819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":818,"mutability":"mutable","name":"slot","nameLocation":"2711:4:8","nodeType":"VariableDeclaration","scope":826,"src":"2703:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":817,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2703:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2702:14:8"},"returnParameters":{"id":823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":822,"mutability":"mutable","name":"r","nameLocation":"2760:1:8","nodeType":"VariableDeclaration","scope":826,"src":"2740:21:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$773_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":821,"nodeType":"UserDefinedTypeName","pathNode":{"id":820,"name":"Uint256Slot","nameLocations":["2740:11:8"],"nodeType":"IdentifierPath","referencedDeclaration":773,"src":"2740:11:8"},"referencedDeclaration":773,"src":"2740:11:8","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$773_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2739:23:8"},"scope":882,"src":"2679:163:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":836,"nodeType":"Block","src":"3020:79:8","statements":[{"AST":{"nativeSrc":"3055:38:8","nodeType":"YulBlock","src":"3055:38:8","statements":[{"nativeSrc":"3069:14:8","nodeType":"YulAssignment","src":"3069:14:8","value":{"name":"slot","nativeSrc":"3079:4:8","nodeType":"YulIdentifier","src":"3079:4:8"},"variableNames":[{"name":"r.slot","nativeSrc":"3069:6:8","nodeType":"YulIdentifier","src":"3069:6:8"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":833,"isOffset":false,"isSlot":true,"src":"3069:6:8","suffix":"slot","valueSize":1},{"declaration":829,"isOffset":false,"isSlot":false,"src":"3079:4:8","valueSize":1}],"flags":["memory-safe"],"id":835,"nodeType":"InlineAssembly","src":"3030:63:8"}]},"documentation":{"id":827,"nodeType":"StructuredDocumentation","src":"2848:85:8","text":" @dev Returns a `Int256Slot` with member `value` located at `slot`."},"id":837,"implemented":true,"kind":"function","modifiers":[],"name":"getInt256Slot","nameLocation":"2947:13:8","nodeType":"FunctionDefinition","parameters":{"id":830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":829,"mutability":"mutable","name":"slot","nameLocation":"2969:4:8","nodeType":"VariableDeclaration","scope":837,"src":"2961:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":828,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2961:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2960:14:8"},"returnParameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":833,"mutability":"mutable","name":"r","nameLocation":"3017:1:8","nodeType":"VariableDeclaration","scope":837,"src":"2998:20:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$776_storage_ptr","typeString":"struct StorageSlot.Int256Slot"},"typeName":{"id":832,"nodeType":"UserDefinedTypeName","pathNode":{"id":831,"name":"Int256Slot","nameLocations":["2998:10:8"],"nodeType":"IdentifierPath","referencedDeclaration":776,"src":"2998:10:8"},"referencedDeclaration":776,"src":"2998:10:8","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$776_storage_ptr","typeString":"struct StorageSlot.Int256Slot"}},"visibility":"internal"}],"src":"2997:22:8"},"scope":882,"src":"2938:161:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":847,"nodeType":"Block","src":"3277:79:8","statements":[{"AST":{"nativeSrc":"3312:38:8","nodeType":"YulBlock","src":"3312:38:8","statements":[{"nativeSrc":"3326:14:8","nodeType":"YulAssignment","src":"3326:14:8","value":{"name":"slot","nativeSrc":"3336:4:8","nodeType":"YulIdentifier","src":"3336:4:8"},"variableNames":[{"name":"r.slot","nativeSrc":"3326:6:8","nodeType":"YulIdentifier","src":"3326:6:8"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":844,"isOffset":false,"isSlot":true,"src":"3326:6:8","suffix":"slot","valueSize":1},{"declaration":840,"isOffset":false,"isSlot":false,"src":"3336:4:8","valueSize":1}],"flags":["memory-safe"],"id":846,"nodeType":"InlineAssembly","src":"3287:63:8"}]},"documentation":{"id":838,"nodeType":"StructuredDocumentation","src":"3105:85:8","text":" @dev Returns a `StringSlot` with member `value` located at `slot`."},"id":848,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3204:13:8","nodeType":"FunctionDefinition","parameters":{"id":841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":840,"mutability":"mutable","name":"slot","nameLocation":"3226:4:8","nodeType":"VariableDeclaration","scope":848,"src":"3218:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":839,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3218:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3217:14:8"},"returnParameters":{"id":845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":844,"mutability":"mutable","name":"r","nameLocation":"3274:1:8","nodeType":"VariableDeclaration","scope":848,"src":"3255:20:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$779_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":843,"nodeType":"UserDefinedTypeName","pathNode":{"id":842,"name":"StringSlot","nameLocations":["3255:10:8"],"nodeType":"IdentifierPath","referencedDeclaration":779,"src":"3255:10:8"},"referencedDeclaration":779,"src":"3255:10:8","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$779_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3254:22:8"},"scope":882,"src":"3195:161:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":858,"nodeType":"Block","src":"3558:85:8","statements":[{"AST":{"nativeSrc":"3593:44:8","nodeType":"YulBlock","src":"3593:44:8","statements":[{"nativeSrc":"3607:20:8","nodeType":"YulAssignment","src":"3607:20:8","value":{"name":"store.slot","nativeSrc":"3617:10:8","nodeType":"YulIdentifier","src":"3617:10:8"},"variableNames":[{"name":"r.slot","nativeSrc":"3607:6:8","nodeType":"YulIdentifier","src":"3607:6:8"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":855,"isOffset":false,"isSlot":true,"src":"3607:6:8","suffix":"slot","valueSize":1},{"declaration":851,"isOffset":false,"isSlot":true,"src":"3617:10:8","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":857,"nodeType":"InlineAssembly","src":"3568:69:8"}]},"documentation":{"id":849,"nodeType":"StructuredDocumentation","src":"3362:101:8","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":859,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3477:13:8","nodeType":"FunctionDefinition","parameters":{"id":852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":851,"mutability":"mutable","name":"store","nameLocation":"3506:5:8","nodeType":"VariableDeclaration","scope":859,"src":"3491:20:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":850,"name":"string","nodeType":"ElementaryTypeName","src":"3491:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3490:22:8"},"returnParameters":{"id":856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":855,"mutability":"mutable","name":"r","nameLocation":"3555:1:8","nodeType":"VariableDeclaration","scope":859,"src":"3536:20:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$779_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":854,"nodeType":"UserDefinedTypeName","pathNode":{"id":853,"name":"StringSlot","nameLocations":["3536:10:8"],"nodeType":"IdentifierPath","referencedDeclaration":779,"src":"3536:10:8"},"referencedDeclaration":779,"src":"3536:10:8","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$779_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3535:22:8"},"scope":882,"src":"3468:175:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":869,"nodeType":"Block","src":"3818:79:8","statements":[{"AST":{"nativeSrc":"3853:38:8","nodeType":"YulBlock","src":"3853:38:8","statements":[{"nativeSrc":"3867:14:8","nodeType":"YulAssignment","src":"3867:14:8","value":{"name":"slot","nativeSrc":"3877:4:8","nodeType":"YulIdentifier","src":"3877:4:8"},"variableNames":[{"name":"r.slot","nativeSrc":"3867:6:8","nodeType":"YulIdentifier","src":"3867:6:8"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":866,"isOffset":false,"isSlot":true,"src":"3867:6:8","suffix":"slot","valueSize":1},{"declaration":862,"isOffset":false,"isSlot":false,"src":"3877:4:8","valueSize":1}],"flags":["memory-safe"],"id":868,"nodeType":"InlineAssembly","src":"3828:63:8"}]},"documentation":{"id":860,"nodeType":"StructuredDocumentation","src":"3649:84:8","text":" @dev Returns a `BytesSlot` with member `value` located at `slot`."},"id":870,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3747:12:8","nodeType":"FunctionDefinition","parameters":{"id":863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":862,"mutability":"mutable","name":"slot","nameLocation":"3768:4:8","nodeType":"VariableDeclaration","scope":870,"src":"3760:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":861,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3760:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3759:14:8"},"returnParameters":{"id":867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":866,"mutability":"mutable","name":"r","nameLocation":"3815:1:8","nodeType":"VariableDeclaration","scope":870,"src":"3797:19:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$782_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":865,"nodeType":"UserDefinedTypeName","pathNode":{"id":864,"name":"BytesSlot","nameLocations":["3797:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":782,"src":"3797:9:8"},"referencedDeclaration":782,"src":"3797:9:8","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$782_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3796:21:8"},"scope":882,"src":"3738:159:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":880,"nodeType":"Block","src":"4094:85:8","statements":[{"AST":{"nativeSrc":"4129:44:8","nodeType":"YulBlock","src":"4129:44:8","statements":[{"nativeSrc":"4143:20:8","nodeType":"YulAssignment","src":"4143:20:8","value":{"name":"store.slot","nativeSrc":"4153:10:8","nodeType":"YulIdentifier","src":"4153:10:8"},"variableNames":[{"name":"r.slot","nativeSrc":"4143:6:8","nodeType":"YulIdentifier","src":"4143:6:8"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":877,"isOffset":false,"isSlot":true,"src":"4143:6:8","suffix":"slot","valueSize":1},{"declaration":873,"isOffset":false,"isSlot":true,"src":"4153:10:8","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":879,"nodeType":"InlineAssembly","src":"4104:69:8"}]},"documentation":{"id":871,"nodeType":"StructuredDocumentation","src":"3903:99:8","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":881,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"4016:12:8","nodeType":"FunctionDefinition","parameters":{"id":874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":873,"mutability":"mutable","name":"store","nameLocation":"4043:5:8","nodeType":"VariableDeclaration","scope":881,"src":"4029:19:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":872,"name":"bytes","nodeType":"ElementaryTypeName","src":"4029:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4028:21:8"},"returnParameters":{"id":878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":877,"mutability":"mutable","name":"r","nameLocation":"4091:1:8","nodeType":"VariableDeclaration","scope":881,"src":"4073:19:8","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$782_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":876,"nodeType":"UserDefinedTypeName","pathNode":{"id":875,"name":"BytesSlot","nameLocations":["4073:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":782,"src":"4073:9:8"},"referencedDeclaration":782,"src":"4073:9:8","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$782_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"4072:21:8"},"scope":882,"src":"4007:172:8","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":883,"src":"1407:2774:8","usedErrors":[],"usedEvents":[]}],"src":"193:3989:8"},"id":8},"contracts/Trustlined.sol":{"ast":{"absolutePath":"contracts/Trustlined.sol","exportedSymbols":{"ERC1967Proxy":[58],"IValidationEngine":[1308],"Trustlined":[1101]},"id":1102,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":884,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"32:21:9"},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","id":886,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1102,"sourceUnit":59,"src":"55:84:9","symbolAliases":[{"foreign":{"id":885,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58,"src":"63:12:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IValidationEngine.sol","file":"./interfaces/IValidationEngine.sol","id":888,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1102,"sourceUnit":1309,"src":"140:69:9","symbolAliases":[{"foreign":{"id":887,"name":"IValidationEngine","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"148:17:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Trustlined","contractDependencies":[58],"contractKind":"contract","documentation":{"id":889,"nodeType":"StructuredDocumentation","src":"211:151:9","text":"@title Trustline's Base Contract\n @author Trustline\n @notice This library provides functions for verifying the trust status of a transaction"},"fullyImplemented":true,"id":1101,"linearizedBaseContracts":[1101],"name":"Trustlined","nameLocation":"380:10:9","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":890,"nodeType":"StructuredDocumentation","src":"397:564:9","text":"@notice Emitted when a new Validation Engine proxy is deployed for this client contract.\n @dev `client` is the address of the integrating contract (i.e., the contract inheriting from Trustlined).\n @dev `engineProxy` is the freshly deployed ERC1967 proxy address for the Validation Engine instance.\n @dev `logic` is the Validation Engine implementation (logic) contract the proxy points to at deployment time.\n @dev `initialOwner` is the address passed to the engine's `initialize(address)` call (typically the deployer/initializer)."},"eventSelector":"dd2b45b3a7206829b6ff077a468ad28c22d407de65990543cb4e4a8e8f8ba5c1","id":900,"name":"ValidationEngineDeployed","nameLocation":"972:24:9","nodeType":"EventDefinition","parameters":{"id":899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":892,"indexed":true,"mutability":"mutable","name":"client","nameLocation":"1022:6:9","nodeType":"VariableDeclaration","scope":900,"src":"1006:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":891,"name":"address","nodeType":"ElementaryTypeName","src":"1006:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":894,"indexed":true,"mutability":"mutable","name":"engineProxy","nameLocation":"1054:11:9","nodeType":"VariableDeclaration","scope":900,"src":"1038:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":893,"name":"address","nodeType":"ElementaryTypeName","src":"1038:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":896,"indexed":true,"mutability":"mutable","name":"logic","nameLocation":"1091:5:9","nodeType":"VariableDeclaration","scope":900,"src":"1075:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":895,"name":"address","nodeType":"ElementaryTypeName","src":"1075:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":898,"indexed":false,"mutability":"mutable","name":"initialOwner","nameLocation":"1114:12:9","nodeType":"VariableDeclaration","scope":900,"src":"1106:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":897,"name":"address","nodeType":"ElementaryTypeName","src":"1106:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"996:136:9"},"src":"966:167:9"},{"constant":false,"documentation":{"id":901,"nodeType":"StructuredDocumentation","src":"1139:295:9","text":"@notice The Trustline ValidationEngine contract address. It must be set before any of the provided functions can be used\n @dev Multiple dapps can share the same ValidationEngine contract\n @dev This contract is set by the owner and must implement the IValidationEngine interface"},"functionSelector":"7d4f064e","id":904,"mutability":"mutable","name":"validationEngine","nameLocation":"1464:16:9","nodeType":"VariableDeclaration","scope":1101,"src":"1439:41:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"},"typeName":{"id":903,"nodeType":"UserDefinedTypeName","pathNode":{"id":902,"name":"IValidationEngine","nameLocations":["1439:17:9"],"nodeType":"IdentifierPath","referencedDeclaration":1308,"src":"1439:17:9"},"referencedDeclaration":1308,"src":"1439:17:9","typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}},"visibility":"public"},{"body":{"id":917,"nodeType":"Block","src":"2048:98:9","statements":[{"expression":{"arguments":[{"id":913,"name":"trustlineValidationEngineLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":907,"src":"2076:30:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":914,"name":"trustlineValidationEngineProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"2108:30:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":912,"name":"__Trustlined_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":931,"src":"2058:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2058:81:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":916,"nodeType":"ExpressionStatement","src":"2058:81:9"}]},"documentation":{"id":905,"nodeType":"StructuredDocumentation","src":"1487:464:9","text":"@dev Both a constructor and initializer functions are defined to support both upgradeable and non-upgradeable deployment scenarios\n @param trustlineValidationEngineLogic The Validation Engine logic contract address for deploying a proxy (used only if validationEngineAddress is zero)\n @param trustlineValidationEngineProxy Optional Validation Engine proxy address. If provided (non-zero), it will be used directly instead of deploying a new proxy"},"id":918,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":907,"mutability":"mutable","name":"trustlineValidationEngineLogic","nameLocation":"1976:30:9","nodeType":"VariableDeclaration","scope":918,"src":"1968:38:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":906,"name":"address","nodeType":"ElementaryTypeName","src":"1968:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":909,"mutability":"mutable","name":"trustlineValidationEngineProxy","nameLocation":"2016:30:9","nodeType":"VariableDeclaration","scope":918,"src":"2008:38:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":908,"name":"address","nodeType":"ElementaryTypeName","src":"2008:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1967:80:9"},"returnParameters":{"id":911,"nodeType":"ParameterList","parameters":[],"src":"2048:0:9"},"scope":1101,"src":"1956:190:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":930,"nodeType":"Block","src":"2218:58:9","statements":[{"expression":{"arguments":[{"id":926,"name":"logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":920,"src":"2256:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":927,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"2263:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":925,"name":"__Trustlined_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"2228:27:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2228:41:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":929,"nodeType":"ExpressionStatement","src":"2228:41:9"}]},"id":931,"implemented":true,"kind":"function","modifiers":[],"name":"__Trustlined_init","nameLocation":"2161:17:9","nodeType":"FunctionDefinition","parameters":{"id":923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":920,"mutability":"mutable","name":"logic","nameLocation":"2187:5:9","nodeType":"VariableDeclaration","scope":931,"src":"2179:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":919,"name":"address","nodeType":"ElementaryTypeName","src":"2179:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":922,"mutability":"mutable","name":"proxy","nameLocation":"2202:5:9","nodeType":"VariableDeclaration","scope":931,"src":"2194:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":921,"name":"address","nodeType":"ElementaryTypeName","src":"2194:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2178:30:9"},"returnParameters":{"id":924,"nodeType":"ParameterList","parameters":[],"src":"2218:0:9"},"scope":1101,"src":"2152:124:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1025,"nodeType":"Block","src":"2358:874:9","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":941,"name":"validationEngine","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"2384:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}],"id":940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2376:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":939,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:9","typeDescriptions":{}}},"id":942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2413: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":944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2405:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":943,"name":"address","nodeType":"ElementaryTypeName","src":"2405:7:9","typeDescriptions":{}}},"id":946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2405:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2376:39:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c726561647920696e697469616c697a6564","id":948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2417:21:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0","typeString":"literal_string \"Already initialized\""},"value":"Already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0","typeString":"literal_string \"Already initialized\""}],"id":938,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2368:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2368:71:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":950,"nodeType":"ExpressionStatement","src":"2368:71:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":951,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":935,"src":"2454:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2471: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":953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2463:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":952,"name":"address","nodeType":"ElementaryTypeName","src":"2463:7:9","typeDescriptions":{}}},"id":955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2463:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2454:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1023,"nodeType":"Block","src":"2676:550:9","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":974,"name":"logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"2750:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2756:4:9","memberName":"code","nodeType":"MemberAccess","src":"2750:10:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:6:9","memberName":"length","nodeType":"MemberAccess","src":"2750:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2770:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2750:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c6f676963206973206e6f74206120636f6e7472616374","id":979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2773:25:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_a45d120a472d0f20a2778eb02314826f5d7ba00dc83759a3782d11ef9a5ace5c","typeString":"literal_string \"Logic is not a contract\""},"value":"Logic is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a45d120a472d0f20a2778eb02314826f5d7ba00dc83759a3782d11ef9a5ace5c","typeString":"literal_string \"Logic is not a contract\""}],"id":973,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2742:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2742:57:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":981,"nodeType":"ExpressionStatement","src":"2742:57:9"},{"assignments":[983],"declarations":[{"constant":false,"id":983,"mutability":"mutable","name":"initialOwner","nameLocation":"2822:12:9","nodeType":"VariableDeclaration","scope":1023,"src":"2814:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":982,"name":"address","nodeType":"ElementaryTypeName","src":"2814:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":986,"initialValue":{"expression":{"id":984,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2837:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2841:6:9","memberName":"sender","nodeType":"MemberAccess","src":"2837:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2814:33:9"},{"assignments":[988],"declarations":[{"constant":false,"id":988,"mutability":"mutable","name":"data","nameLocation":"2932:4:9","nodeType":"VariableDeclaration","scope":1023,"src":"2919:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":987,"name":"bytes","nodeType":"ElementaryTypeName","src":"2919:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":994,"initialValue":{"arguments":[{"hexValue":"696e697469616c697a65286164647265737329","id":991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2963:21:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_c4d66de8473e8f74cb05df264ee8262da16b56717ef1f05d73bfdcea3adc85e5","typeString":"literal_string \"initialize(address)\""},"value":"initialize(address)"},{"id":992,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":983,"src":"2986:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c4d66de8473e8f74cb05df264ee8262da16b56717ef1f05d73bfdcea3adc85e5","typeString":"literal_string \"initialize(address)\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":989,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2939:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2943:19:9","memberName":"encodeWithSignature","nodeType":"MemberAccess","src":"2939:23:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (string memory) pure returns (bytes memory)"}},"id":993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2939:60:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2919:80:9"},{"assignments":[996],"declarations":[{"constant":false,"id":996,"mutability":"mutable","name":"proxy_","nameLocation":"3021:6:9","nodeType":"VariableDeclaration","scope":1023,"src":"3013:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":995,"name":"address","nodeType":"ElementaryTypeName","src":"3013:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1006,"initialValue":{"arguments":[{"arguments":[{"id":1002,"name":"logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"3055:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1003,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":988,"src":"3062:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"3038:16:9","typeDescriptions":{"typeIdentifier":"t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_ERC1967Proxy_$58_$","typeString":"function (address,bytes memory) payable returns (contract ERC1967Proxy)"},"typeName":{"id":1000,"nodeType":"UserDefinedTypeName","pathNode":{"id":999,"name":"ERC1967Proxy","nameLocations":["3042:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":58,"src":"3042:12:9"},"referencedDeclaration":58,"src":"3042:12:9","typeDescriptions":{"typeIdentifier":"t_contract$_ERC1967Proxy_$58","typeString":"contract ERC1967Proxy"}}},"id":1004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3038:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC1967Proxy_$58","typeString":"contract ERC1967Proxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC1967Proxy_$58","typeString":"contract ERC1967Proxy"}],"id":998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3030:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":997,"name":"address","nodeType":"ElementaryTypeName","src":"3030:7:9","typeDescriptions":{}}},"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3030:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3013:55:9"},{"expression":{"id":1011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1007,"name":"validationEngine","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"3083:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1009,"name":"proxy_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":996,"src":"3120:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1008,"name":"IValidationEngine","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"3102:17:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IValidationEngine_$1308_$","typeString":"type(contract IValidationEngine)"}},"id":1010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3102:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}},"src":"3083:44:9","typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}},"id":1012,"nodeType":"ExpressionStatement","src":"3083:44:9"},{"eventCall":{"arguments":[{"arguments":[{"id":1016,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3180:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_Trustlined_$1101","typeString":"contract Trustlined"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Trustlined_$1101","typeString":"contract Trustlined"}],"id":1015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3172:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1014,"name":"address","nodeType":"ElementaryTypeName","src":"3172:7:9","typeDescriptions":{}}},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3172:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1018,"name":"proxy_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":996,"src":"3187:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1019,"name":"logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":933,"src":"3195:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1020,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":983,"src":"3202:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1013,"name":"ValidationEngineDeployed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"3147:24:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address,address)"}},"id":1021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3147:68:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1022,"nodeType":"EmitStatement","src":"3142:73:9"}]},"id":1024,"nodeType":"IfStatement","src":"2450:776:9","trueBody":{"id":972,"nodeType":"Block","src":"2475:195:9","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":958,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":935,"src":"2553:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2559:4:9","memberName":"code","nodeType":"MemberAccess","src":"2553:10:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2564:6:9","memberName":"length","nodeType":"MemberAccess","src":"2553:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2573:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2553:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f7879206973206e6f74206120636f6e7472616374","id":963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2576:25:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_547a8a3231e1f1e0d6e27abe234d0de412a38d4b4c4168a0b714c57c27267f67","typeString":"literal_string \"Proxy is not a contract\""},"value":"Proxy is not a contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_547a8a3231e1f1e0d6e27abe234d0de412a38d4b4c4168a0b714c57c27267f67","typeString":"literal_string \"Proxy is not a contract\""}],"id":957,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2545:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2545:57:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":965,"nodeType":"ExpressionStatement","src":"2545:57:9"},{"expression":{"id":970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":966,"name":"validationEngine","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"2616:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":968,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":935,"src":"2653:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":967,"name":"IValidationEngine","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1308,"src":"2635:17:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IValidationEngine_$1308_$","typeString":"type(contract IValidationEngine)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2635:24:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}},"src":"2616:43:9","typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}},"id":971,"nodeType":"ExpressionStatement","src":"2616:43:9"}]}}]},"id":1026,"implemented":true,"kind":"function","modifiers":[],"name":"__Trustlined_init_unchained","nameLocation":"2291:27:9","nodeType":"FunctionDefinition","parameters":{"id":936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":933,"mutability":"mutable","name":"logic","nameLocation":"2327:5:9","nodeType":"VariableDeclaration","scope":1026,"src":"2319:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":932,"name":"address","nodeType":"ElementaryTypeName","src":"2319:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":935,"mutability":"mutable","name":"proxy","nameLocation":"2342:5:9","nodeType":"VariableDeclaration","scope":1026,"src":"2334:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":934,"name":"address","nodeType":"ElementaryTypeName","src":"2334:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2318:30:9"},"returnParameters":{"id":937,"nodeType":"ParameterList","parameters":[],"src":"2358:0:9"},"scope":1101,"src":"2282:950:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1046,"nodeType":"Block","src":"3526:105:9","statements":[{"expression":{"arguments":[{"expression":{"id":1037,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3581:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3585:6:9","memberName":"sender","nodeType":"MemberAccess","src":"3581:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1039,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3593:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3597:5:9","memberName":"value","nodeType":"MemberAccess","src":"3593:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1041,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3604:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3608:4:9","memberName":"data","nodeType":"MemberAccess","src":"3604:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1043,"name":"addresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1030,"src":"3614:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"expression":{"id":1035,"name":"validationEngine","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"3543:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}},"id":1036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3560:20:9","memberName":"checkTrustlineStatus","nodeType":"MemberAccess","referencedDeclaration":1256,"src":"3543:37:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory,address[] memory) view external returns (bool)"}},"id":1044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3543:81:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1034,"id":1045,"nodeType":"Return","src":"3536:88:9"}]},"documentation":{"id":1027,"nodeType":"StructuredDocumentation","src":"3238:196:9","text":"@notice Checks whether a transaction is trusted and verifies msg.sender + addresses[] against sanctions lists\n @param addresses An array of addresses that will be verified by the policy"},"id":1047,"implemented":true,"kind":"function","modifiers":[],"name":"checkTrustlineStatus","nameLocation":"3448:20:9","nodeType":"FunctionDefinition","parameters":{"id":1031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1030,"mutability":"mutable","name":"addresses","nameLocation":"3486:9:9","nodeType":"VariableDeclaration","scope":1047,"src":"3469:26:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1028,"name":"address","nodeType":"ElementaryTypeName","src":"3469:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1029,"nodeType":"ArrayTypeName","src":"3469:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3468:28:9"},"returnParameters":{"id":1034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1033,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1047,"src":"3520:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1032,"name":"bool","nodeType":"ElementaryTypeName","src":"3520:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3519:6:9"},"scope":1101,"src":"3439:192:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1063,"nodeType":"Block","src":"3802:94:9","statements":[{"expression":{"arguments":[{"expression":{"id":1055,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3857:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3861:6:9","memberName":"sender","nodeType":"MemberAccess","src":"3857:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1057,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3869:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3873:5:9","memberName":"value","nodeType":"MemberAccess","src":"3869:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1059,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3880:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3884:4:9","memberName":"data","nodeType":"MemberAccess","src":"3880:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1053,"name":"validationEngine","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"3819:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}},"id":1054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3836:20:9","memberName":"checkTrustlineStatus","nodeType":"MemberAccess","referencedDeclaration":1268,"src":"3819:37:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) view external returns (bool)"}},"id":1061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3819:70:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1052,"id":1062,"nodeType":"Return","src":"3812:77:9"}]},"documentation":{"id":1048,"nodeType":"StructuredDocumentation","src":"3637:99:9","text":"@notice Checks whether a transaction is trusted and verifies msg.sender against sanctions lists"},"id":1064,"implemented":true,"kind":"function","modifiers":[],"name":"checkTrustlineStatus","nameLocation":"3750:20:9","nodeType":"FunctionDefinition","parameters":{"id":1049,"nodeType":"ParameterList","parameters":[],"src":"3770:2:9"},"returnParameters":{"id":1052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1051,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1064,"src":"3796:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1050,"name":"bool","nodeType":"ElementaryTypeName","src":"3796:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3795:6:9"},"scope":1101,"src":"3741:155:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1083,"nodeType":"Block","src":"4141:94:9","statements":[{"expression":{"arguments":[{"expression":{"id":1074,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4185:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4189:6:9","memberName":"sender","nodeType":"MemberAccess","src":"4185:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1076,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4197:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4201:5:9","memberName":"value","nodeType":"MemberAccess","src":"4197:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1078,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4208:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4212:4:9","memberName":"data","nodeType":"MemberAccess","src":"4208:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1080,"name":"addresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1068,"src":"4218:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"expression":{"id":1071,"name":"validationEngine","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"4151:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}},"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4168:16:9","memberName":"requireTrustline","nodeType":"MemberAccess","referencedDeclaration":1297,"src":"4151:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory,address[] memory) external"}},"id":1081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4151:77:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1082,"nodeType":"ExpressionStatement","src":"4151:77:9"}]},"documentation":{"id":1065,"nodeType":"StructuredDocumentation","src":"3902:171:9","text":"@notice Requires a trusted transaction and non‑sanctioned msg.sender + addresses[]\n @param addresses An array of addresses that will be verified by the policy"},"id":1084,"implemented":true,"kind":"function","modifiers":[],"name":"requireTrustline","nameLocation":"4087:16:9","nodeType":"FunctionDefinition","parameters":{"id":1069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1068,"mutability":"mutable","name":"addresses","nameLocation":"4121:9:9","nodeType":"VariableDeclaration","scope":1084,"src":"4104:26:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1066,"name":"address","nodeType":"ElementaryTypeName","src":"4104:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1067,"nodeType":"ArrayTypeName","src":"4104:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4103:28:9"},"returnParameters":{"id":1070,"nodeType":"ParameterList","parameters":[],"src":"4141:0:9"},"scope":1101,"src":"4078:157:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1099,"nodeType":"Block","src":"4359:83:9","statements":[{"expression":{"arguments":[{"expression":{"id":1091,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4403:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4407:6:9","memberName":"sender","nodeType":"MemberAccess","src":"4403:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1093,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4415:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4419:5:9","memberName":"value","nodeType":"MemberAccess","src":"4415:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1095,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4426:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4430:4:9","memberName":"data","nodeType":"MemberAccess","src":"4426:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1088,"name":"validationEngine","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"4369:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_IValidationEngine_$1308","typeString":"contract IValidationEngine"}},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4386:16:9","memberName":"requireTrustline","nodeType":"MemberAccess","referencedDeclaration":1307,"src":"4369:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory) external"}},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4369:66:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1098,"nodeType":"ExpressionStatement","src":"4369:66:9"}]},"documentation":{"id":1085,"nodeType":"StructuredDocumentation","src":"4241:76:9","text":"@notice Requires a trusted transaction and a non‑sanctioned msg.sender"},"id":1100,"implemented":true,"kind":"function","modifiers":[],"name":"requireTrustline","nameLocation":"4331:16:9","nodeType":"FunctionDefinition","parameters":{"id":1086,"nodeType":"ParameterList","parameters":[],"src":"4347:2:9"},"returnParameters":{"id":1087,"nodeType":"ParameterList","parameters":[],"src":"4359:0:9"},"scope":1101,"src":"4322:120:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":1102,"src":"362:4082:9","usedErrors":[],"usedEvents":[900]}],"src":"32:4413:9"},"id":9},"contracts/examples/PaymentFirewall.sol":{"ast":{"absolutePath":"contracts/examples/PaymentFirewall.sol","exportedSymbols":{"IERC20":[476],"PaymentFirewall":[1215],"Trustlined":[1101]},"id":1216,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1103,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"32:21:10"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":1105,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1216,"sourceUnit":477,"src":"55:70:10","symbolAliases":[{"foreign":{"id":1104,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"63:6:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/Trustlined.sol","file":"../Trustlined.sol","id":1107,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1216,"sourceUnit":1102,"src":"203:45:10","symbolAliases":[{"foreign":{"id":1106,"name":"Trustlined","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"211:10:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1109,"name":"Trustlined","nameLocations":["417:10:10"],"nodeType":"IdentifierPath","referencedDeclaration":1101,"src":"417:10:10"},"id":1110,"nodeType":"InheritanceSpecifier","src":"417:10:10"}],"canonicalName":"PaymentFirewall","contractDependencies":[58],"contractKind":"contract","documentation":{"id":1108,"nodeType":"StructuredDocumentation","src":"250:139:10","text":"@title PaymentFirewall\n @author Trustline\n @notice This contract is a firewall ensuring all funds going in and out are compliant"},"fullyImplemented":true,"id":1215,"linearizedBaseContracts":[1215,1101],"name":"PaymentFirewall","nameLocation":"398:15:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":1121,"nodeType":"Block","src":"601:2:10","statements":[]},"id":1122,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":1117,"name":"trustlineValidationEngineLogic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1112,"src":"537:30:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1118,"name":"trustlineValidationEngineProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1114,"src":"569:30:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1119,"kind":"baseConstructorSpecifier","modifierName":{"id":1116,"name":"Trustlined","nameLocations":["526:10:10"],"nodeType":"IdentifierPath","referencedDeclaration":1101,"src":"526:10:10"},"nodeType":"ModifierInvocation","src":"526:74:10"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1112,"mutability":"mutable","name":"trustlineValidationEngineLogic","nameLocation":"454:30:10","nodeType":"VariableDeclaration","scope":1122,"src":"446:38:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1111,"name":"address","nodeType":"ElementaryTypeName","src":"446:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1114,"mutability":"mutable","name":"trustlineValidationEngineProxy","nameLocation":"494:30:10","nodeType":"VariableDeclaration","scope":1122,"src":"486:38:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1113,"name":"address","nodeType":"ElementaryTypeName","src":"486:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"445:80:10"},"returnParameters":{"id":1120,"nodeType":"ParameterList","parameters":[],"src":"601:0:10"},"scope":1215,"src":"434:169:10","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1164,"nodeType":"Block","src":"770:246:10","statements":[{"assignments":[1132],"declarations":[{"constant":false,"id":1132,"mutability":"mutable","name":"addresses","nameLocation":"797:9:10","nodeType":"VariableDeclaration","scope":1164,"src":"780:26:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1130,"name":"address","nodeType":"ElementaryTypeName","src":"780:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1131,"nodeType":"ArrayTypeName","src":"780:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":1138,"initialValue":{"arguments":[{"hexValue":"31","id":1136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"823:1:10","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":1135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"809:13:10","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":1133,"name":"address","nodeType":"ElementaryTypeName","src":"813:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1134,"nodeType":"ArrayTypeName","src":"813:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":1137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"809:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"780:45:10"},{"expression":{"id":1143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1139,"name":"addresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"835:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1141,"indexExpression":{"hexValue":"30","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"845:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"835:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1142,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"850:11:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"835:26:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1144,"nodeType":"ExpressionStatement","src":"835:26:10"},{"expression":{"arguments":[{"id":1146,"name":"addresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"888:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":1145,"name":"requireTrustline","nodeType":"Identifier","overloadedDeclarations":[1084,1100],"referencedDeclaration":1084,"src":"871:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":1147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"871:27:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1148,"nodeType":"ExpressionStatement","src":"871:27:10"},{"assignments":[1150,null],"declarations":[{"constant":false,"id":1150,"mutability":"mutable","name":"sent","nameLocation":"914:4:10","nodeType":"VariableDeclaration","scope":1164,"src":"909:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1149,"name":"bool","nodeType":"ElementaryTypeName","src":"909:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1158,"initialValue":{"arguments":[{"hexValue":"","id":1156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"959:2:10","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":1151,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"924:11:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"936:4:10","memberName":"call","nodeType":"MemberAccess","src":"924:16:10","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":1155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":1153,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"948:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"952:5:10","memberName":"value","nodeType":"MemberAccess","src":"948:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"924:34:10","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":1157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"924:38:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"908:54:10"},{"expression":{"arguments":[{"id":1160,"name":"sent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1150,"src":"980:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e61626c6520746f2070617920657468657273","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"986:22:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_c056992782810757ac218a0ddf8c5ba73b3c93859b191993a129d4ce88ee4211","typeString":"literal_string \"Unable to pay ethers\""},"value":"Unable to pay ethers"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c056992782810757ac218a0ddf8c5ba73b3c93859b191993a129d4ce88ee4211","typeString":"literal_string \"Unable to pay ethers\""}],"id":1159,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"972:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"972:37:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1163,"nodeType":"ExpressionStatement","src":"972:37:10"}]},"documentation":{"id":1123,"nodeType":"StructuredDocumentation","src":"609:93:10","text":"@notice Pay native ethers to a recipient\n @param destination The recipient address"},"functionSelector":"666c6f23","id":1165,"implemented":true,"kind":"function","modifiers":[],"name":"payEthers","nameLocation":"716:9:10","nodeType":"FunctionDefinition","parameters":{"id":1126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1125,"mutability":"mutable","name":"destination","nameLocation":"742:11:10","nodeType":"VariableDeclaration","scope":1165,"src":"726:27:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1124,"name":"address","nodeType":"ElementaryTypeName","src":"726:15:10","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"725:29:10"},"returnParameters":{"id":1127,"nodeType":"ParameterList","parameters":[],"src":"770:0:10"},"scope":1215,"src":"707:309:10","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":1213,"nodeType":"Block","src":"1292:262:10","statements":[{"assignments":[1179],"declarations":[{"constant":false,"id":1179,"mutability":"mutable","name":"addresses","nameLocation":"1319:9:10","nodeType":"VariableDeclaration","scope":1213,"src":"1302:26:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1177,"name":"address","nodeType":"ElementaryTypeName","src":"1302:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1178,"nodeType":"ArrayTypeName","src":"1302:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":1185,"initialValue":{"arguments":[{"hexValue":"31","id":1183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1345:1:10","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":1182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1331:13:10","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":1180,"name":"address","nodeType":"ElementaryTypeName","src":"1335:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1181,"nodeType":"ArrayTypeName","src":"1335:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":1184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1331:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1302:45:10"},{"expression":{"id":1190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1186,"name":"addresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"1357:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1188,"indexExpression":{"hexValue":"30","id":1187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1367:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1357:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1189,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1168,"src":"1372:11:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1357:26:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1191,"nodeType":"ExpressionStatement","src":"1357:26:10"},{"expression":{"arguments":[{"id":1193,"name":"addresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"1410:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":1192,"name":"requireTrustline","nodeType":"Identifier","overloadedDeclarations":[1084,1100],"referencedDeclaration":1084,"src":"1393:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1393:27:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1195,"nodeType":"ExpressionStatement","src":"1393:27:10"},{"assignments":[1197],"declarations":[{"constant":false,"id":1197,"mutability":"mutable","name":"sent","nameLocation":"1435:4:10","nodeType":"VariableDeclaration","scope":1213,"src":"1430:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1196,"name":"bool","nodeType":"ElementaryTypeName","src":"1430:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1207,"initialValue":{"arguments":[{"expression":{"id":1202,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1469:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1473:6:10","memberName":"sender","nodeType":"MemberAccess","src":"1469:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1204,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1168,"src":"1481:11:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1172,"src":"1494:5:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1199,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"1449:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1198,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"1442:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$476_$","typeString":"type(contract IERC20)"}},"id":1200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1442:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$476","typeString":"contract IERC20"}},"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1456:12:10","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":475,"src":"1442:26:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":1206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1442:58:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"1430:70:10"},{"expression":{"arguments":[{"id":1209,"name":"sent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1197,"src":"1518:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e61626c6520746f2070617920746f6b656e73","id":1210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1524:22:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_3ada5563b608b4f12ef921b7de8a60eef3445e269146e5af08d99e18136078aa","typeString":"literal_string \"Unable to pay tokens\""},"value":"Unable to pay tokens"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3ada5563b608b4f12ef921b7de8a60eef3445e269146e5af08d99e18136078aa","typeString":"literal_string \"Unable to pay tokens\""}],"id":1208,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1510:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1510:37:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1212,"nodeType":"ExpressionStatement","src":"1510:37:10"}]},"documentation":{"id":1166,"nodeType":"StructuredDocumentation","src":"1022:186:10","text":"@notice Pay ERC20 tokens to a recipient\n @param destination The recipient address\n @param token The ERC20 token address\n @param value The amount of tokens to pay"},"functionSelector":"2be277aa","id":1214,"implemented":true,"kind":"function","modifiers":[],"name":"payTokens","nameLocation":"1222:9:10","nodeType":"FunctionDefinition","parameters":{"id":1173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1168,"mutability":"mutable","name":"destination","nameLocation":"1240:11:10","nodeType":"VariableDeclaration","scope":1214,"src":"1232:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1167,"name":"address","nodeType":"ElementaryTypeName","src":"1232:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1170,"mutability":"mutable","name":"token","nameLocation":"1261:5:10","nodeType":"VariableDeclaration","scope":1214,"src":"1253:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1169,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1172,"mutability":"mutable","name":"value","nameLocation":"1276:5:10","nodeType":"VariableDeclaration","scope":1214,"src":"1268:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1171,"name":"uint256","nodeType":"ElementaryTypeName","src":"1268:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1231:51:10"},"returnParameters":{"id":1174,"nodeType":"ParameterList","parameters":[],"src":"1292:0:10"},"scope":1215,"src":"1213:341:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1216,"src":"389:1167:10","usedErrors":[],"usedEvents":[900]}],"src":"32:1525:10"},"id":10},"contracts/interfaces/IValidationEngine.sol":{"ast":{"absolutePath":"contracts/interfaces/IValidationEngine.sol","exportedSymbols":{"IValidationEngine":[1308]},"id":1309,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1217,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"32:21:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IValidationEngine","contractDependencies":[],"contractKind":"interface","documentation":{"id":1218,"nodeType":"StructuredDocumentation","src":"55:275:11","text":"@title Trustline's Validation interface\n @author Trustline\n @notice This interface defines the functions that must be implemented by the validation contract\n @dev This interface is used by the Trustlined contract to interact with Trustline's Validation contract"},"fullyImplemented":false,"id":1308,"linearizedBaseContracts":[1308],"name":"IValidationEngine","nameLocation":"340:17:11","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IValidationEngine.ValidationMode","id":1223,"members":[{"id":1219,"name":"Dapp","nameLocation":"394:4:11","nodeType":"EnumValue","src":"394:4:11"},{"id":1220,"name":"UniswapV4","nameLocation":"408:9:11","nodeType":"EnumValue","src":"408:9:11"},{"id":1221,"name":"MorphoV2","nameLocation":"427:8:11","nodeType":"EnumValue","src":"427:8:11"},{"id":1222,"name":"ERC3643","nameLocation":"445:7:11","nodeType":"EnumValue","src":"445:7:11"}],"name":"ValidationMode","nameLocation":"369:14:11","nodeType":"EnumDefinition","src":"364:94:11"},{"documentation":{"id":1224,"nodeType":"StructuredDocumentation","src":"464:555:11","text":"@notice Checks whether a transaction is trusted and verifies msg.sender + addresses[] against sanctions lists (advanced)\n @dev This call is required only in complex scenarios\n @dev WARNING: Improper use of this call may introduce security vulnerabilities in the calling contract\n @param mode The validation mode\n @param sender The transaction sender\n @param value Transaction value in wei\n @param data Transaction payload data\n @param addresses An array of addresses that will be verified by the policy"},"functionSelector":"1a27f395","id":1241,"implemented":false,"kind":"function","modifiers":[],"name":"checkTrustlineStatus","nameLocation":"1033:20:11","nodeType":"FunctionDefinition","parameters":{"id":1237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1227,"mutability":"mutable","name":"mode","nameLocation":"1078:4:11","nodeType":"VariableDeclaration","scope":1241,"src":"1063:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ValidationMode_$1223","typeString":"enum IValidationEngine.ValidationMode"},"typeName":{"id":1226,"nodeType":"UserDefinedTypeName","pathNode":{"id":1225,"name":"ValidationMode","nameLocations":["1063:14:11"],"nodeType":"IdentifierPath","referencedDeclaration":1223,"src":"1063:14:11"},"referencedDeclaration":1223,"src":"1063:14:11","typeDescriptions":{"typeIdentifier":"t_enum$_ValidationMode_$1223","typeString":"enum IValidationEngine.ValidationMode"}},"visibility":"internal"},{"constant":false,"id":1229,"mutability":"mutable","name":"sender","nameLocation":"1100:6:11","nodeType":"VariableDeclaration","scope":1241,"src":"1092:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1228,"name":"address","nodeType":"ElementaryTypeName","src":"1092:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1231,"mutability":"mutable","name":"value","nameLocation":"1124:5:11","nodeType":"VariableDeclaration","scope":1241,"src":"1116:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1230,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1233,"mutability":"mutable","name":"data","nameLocation":"1154:4:11","nodeType":"VariableDeclaration","scope":1241,"src":"1139:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1232,"name":"bytes","nodeType":"ElementaryTypeName","src":"1139:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1236,"mutability":"mutable","name":"addresses","nameLocation":"1185:9:11","nodeType":"VariableDeclaration","scope":1241,"src":"1168:26:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1234,"name":"address","nodeType":"ElementaryTypeName","src":"1168:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1235,"nodeType":"ArrayTypeName","src":"1168:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1053:147:11"},"returnParameters":{"id":1240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1239,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1241,"src":"1224:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1238,"name":"bool","nodeType":"ElementaryTypeName","src":"1224:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1223:6:11"},"scope":1308,"src":"1024:206:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1242,"nodeType":"StructuredDocumentation","src":"1236:332:11","text":"@notice Checks whether a transaction is trusted and verifies msg.sender + addresses[] against sanctions lists\n @param sender The transaction sender\n @param value Transaction value in wei\n @param data Transaction payload data\n @param addresses An array of addresses that will be verified by the policy"},"functionSelector":"8ad79ae3","id":1256,"implemented":false,"kind":"function","modifiers":[],"name":"checkTrustlineStatus","nameLocation":"1582:20:11","nodeType":"FunctionDefinition","parameters":{"id":1252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"mutability":"mutable","name":"sender","nameLocation":"1620:6:11","nodeType":"VariableDeclaration","scope":1256,"src":"1612:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1243,"name":"address","nodeType":"ElementaryTypeName","src":"1612:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1246,"mutability":"mutable","name":"value","nameLocation":"1644:5:11","nodeType":"VariableDeclaration","scope":1256,"src":"1636:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1245,"name":"uint256","nodeType":"ElementaryTypeName","src":"1636:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1248,"mutability":"mutable","name":"data","nameLocation":"1674:4:11","nodeType":"VariableDeclaration","scope":1256,"src":"1659:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1247,"name":"bytes","nodeType":"ElementaryTypeName","src":"1659:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1251,"mutability":"mutable","name":"addresses","nameLocation":"1705:9:11","nodeType":"VariableDeclaration","scope":1256,"src":"1688:26:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1249,"name":"address","nodeType":"ElementaryTypeName","src":"1688:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1250,"nodeType":"ArrayTypeName","src":"1688:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1602:118:11"},"returnParameters":{"id":1255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1254,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1256,"src":"1744:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1253,"name":"bool","nodeType":"ElementaryTypeName","src":"1744:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1743:6:11"},"scope":1308,"src":"1573:177:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1257,"nodeType":"StructuredDocumentation","src":"1756:235:11","text":"@notice Checks whether a transaction is trusted and verifies msg.sender against sanctions lists\n @param sender The transaction sender\n @param value Transaction value in wei\n @param data Transaction payload data"},"functionSelector":"16128135","id":1268,"implemented":false,"kind":"function","modifiers":[],"name":"checkTrustlineStatus","nameLocation":"2005:20:11","nodeType":"FunctionDefinition","parameters":{"id":1264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1259,"mutability":"mutable","name":"sender","nameLocation":"2043:6:11","nodeType":"VariableDeclaration","scope":1268,"src":"2035:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1258,"name":"address","nodeType":"ElementaryTypeName","src":"2035:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1261,"mutability":"mutable","name":"value","nameLocation":"2067:5:11","nodeType":"VariableDeclaration","scope":1268,"src":"2059:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1260,"name":"uint256","nodeType":"ElementaryTypeName","src":"2059:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1263,"mutability":"mutable","name":"data","nameLocation":"2097:4:11","nodeType":"VariableDeclaration","scope":1268,"src":"2082:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1262,"name":"bytes","nodeType":"ElementaryTypeName","src":"2082:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2025:82:11"},"returnParameters":{"id":1267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1268,"src":"2131:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1265,"name":"bool","nodeType":"ElementaryTypeName","src":"2131:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2130:6:11"},"scope":1308,"src":"1996:141:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1269,"nodeType":"StructuredDocumentation","src":"2143:530:11","text":"@notice Requires a trusted transaction and non‑sanctioned msg.sender + addresses[] (advanced)\n @dev This call is required only in complex scenarios\n @dev WARNING: Improper use of this call may introduce security vulnerabilities in the calling contract\n @param mode The validation mode\n @param sender The transaction sender\n @param value Transaction value in wei\n @param data Transaction payload data\n @param addresses An array of addresses that will be verified by the policy"},"functionSelector":"ff7c9eff","id":1284,"implemented":false,"kind":"function","modifiers":[],"name":"requireTrustline","nameLocation":"2687:16:11","nodeType":"FunctionDefinition","parameters":{"id":1282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1272,"mutability":"mutable","name":"mode","nameLocation":"2728:4:11","nodeType":"VariableDeclaration","scope":1284,"src":"2713:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ValidationMode_$1223","typeString":"enum IValidationEngine.ValidationMode"},"typeName":{"id":1271,"nodeType":"UserDefinedTypeName","pathNode":{"id":1270,"name":"ValidationMode","nameLocations":["2713:14:11"],"nodeType":"IdentifierPath","referencedDeclaration":1223,"src":"2713:14:11"},"referencedDeclaration":1223,"src":"2713:14:11","typeDescriptions":{"typeIdentifier":"t_enum$_ValidationMode_$1223","typeString":"enum IValidationEngine.ValidationMode"}},"visibility":"internal"},{"constant":false,"id":1274,"mutability":"mutable","name":"sender","nameLocation":"2750:6:11","nodeType":"VariableDeclaration","scope":1284,"src":"2742:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1273,"name":"address","nodeType":"ElementaryTypeName","src":"2742:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1276,"mutability":"mutable","name":"value","nameLocation":"2774:5:11","nodeType":"VariableDeclaration","scope":1284,"src":"2766:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1275,"name":"uint256","nodeType":"ElementaryTypeName","src":"2766:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1278,"mutability":"mutable","name":"data","nameLocation":"2804:4:11","nodeType":"VariableDeclaration","scope":1284,"src":"2789:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1277,"name":"bytes","nodeType":"ElementaryTypeName","src":"2789:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1281,"mutability":"mutable","name":"addresses","nameLocation":"2835:9:11","nodeType":"VariableDeclaration","scope":1284,"src":"2818:26:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1279,"name":"address","nodeType":"ElementaryTypeName","src":"2818:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1280,"nodeType":"ArrayTypeName","src":"2818:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2703:147:11"},"returnParameters":{"id":1283,"nodeType":"ParameterList","parameters":[],"src":"2859:0:11"},"scope":1308,"src":"2678:182:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1285,"nodeType":"StructuredDocumentation","src":"2866:364:11","text":"@notice Requires a trusted transaction and non‑sanctioned msg.sender + addresses[]\n @dev reverts if the transaction is not compliant\n @param sender The transaction sender\n @param value Transaction value in wei\n @param data Transaction payload data\n @param addresses An array of addresses that will be verified by the policy"},"functionSelector":"6cfd0c09","id":1297,"implemented":false,"kind":"function","modifiers":[],"name":"requireTrustline","nameLocation":"3244:16:11","nodeType":"FunctionDefinition","parameters":{"id":1295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1287,"mutability":"mutable","name":"sender","nameLocation":"3278:6:11","nodeType":"VariableDeclaration","scope":1297,"src":"3270:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1286,"name":"address","nodeType":"ElementaryTypeName","src":"3270:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1289,"mutability":"mutable","name":"value","nameLocation":"3302:5:11","nodeType":"VariableDeclaration","scope":1297,"src":"3294:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1288,"name":"uint256","nodeType":"ElementaryTypeName","src":"3294:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1291,"mutability":"mutable","name":"data","nameLocation":"3332:4:11","nodeType":"VariableDeclaration","scope":1297,"src":"3317:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1290,"name":"bytes","nodeType":"ElementaryTypeName","src":"3317:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1294,"mutability":"mutable","name":"addresses","nameLocation":"3363:9:11","nodeType":"VariableDeclaration","scope":1297,"src":"3346:26:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1292,"name":"address","nodeType":"ElementaryTypeName","src":"3346:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1293,"nodeType":"ArrayTypeName","src":"3346:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3260:118:11"},"returnParameters":{"id":1296,"nodeType":"ParameterList","parameters":[],"src":"3387:0:11"},"scope":1308,"src":"3235:153:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1298,"nodeType":"StructuredDocumentation","src":"3394:269:11","text":"@notice Requires a trusted transaction and a non‑sanctioned msg.sender\n @dev reverts if the transaction is not compliant\n @param sender The transaction sender\n @param value Transaction value in wei\n @param data Transaction payload data"},"functionSelector":"1b93c32f","id":1307,"implemented":false,"kind":"function","modifiers":[],"name":"requireTrustline","nameLocation":"3677:16:11","nodeType":"FunctionDefinition","parameters":{"id":1305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1300,"mutability":"mutable","name":"sender","nameLocation":"3711:6:11","nodeType":"VariableDeclaration","scope":1307,"src":"3703:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1299,"name":"address","nodeType":"ElementaryTypeName","src":"3703:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1302,"mutability":"mutable","name":"value","nameLocation":"3735:5:11","nodeType":"VariableDeclaration","scope":1307,"src":"3727:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1301,"name":"uint256","nodeType":"ElementaryTypeName","src":"3727:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1304,"mutability":"mutable","name":"data","nameLocation":"3765:4:11","nodeType":"VariableDeclaration","scope":1307,"src":"3750:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1303,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3693:82:11"},"returnParameters":{"id":1306,"nodeType":"ParameterList","parameters":[],"src":"3784:0:11"},"scope":1308,"src":"3668:117:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1309,"src":"330:3457:11","usedErrors":[],"usedEvents":[]}],"src":"32:3756:11"},"id":11}},"contracts":{"@openzeppelin/contracts/interfaces/IERC1967.sol":{"IERC1967":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":\"IERC1967\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]}},\"version\":1}"}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ERC1967Proxy":{"abi":[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"}],"evm":{"bytecode":{"functionDebugData":{"@_45":{"entryPoint":null,"id":45,"parameterSlots":2,"returnSlots":0},"@_checkNonPayable_351":{"entryPoint":383,"id":351,"parameterSlots":0,"returnSlots":0},"@_revert_735":{"entryPoint":511,"id":735,"parameterSlots":1,"returnSlots":0},"@_setImplementation_131":{"entryPoint":145,"id":131,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_653":{"entryPoint":268,"id":653,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_793":{"entryPoint":null,"id":793,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_167":{"entryPoint":51,"id":167,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_693":{"entryPoint":416,"id":693,"parameterSlots":3,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":572,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":779,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":552,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1763:12","nodeType":"YulBlock","src":"0:1763:12","statements":[{"nativeSrc":"6:3:12","nodeType":"YulBlock","src":"6:3:12","statements":[]},{"body":{"nativeSrc":"46:95:12","nodeType":"YulBlock","src":"46:95:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:12","nodeType":"YulLiteral","src":"63:1:12","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:12","nodeType":"YulLiteral","src":"70:3:12","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:12","nodeType":"YulLiteral","src":"75:10:12","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:12","nodeType":"YulIdentifier","src":"66:3:12"},"nativeSrc":"66:20:12","nodeType":"YulFunctionCall","src":"66:20:12"}],"functionName":{"name":"mstore","nativeSrc":"56:6:12","nodeType":"YulIdentifier","src":"56:6:12"},"nativeSrc":"56:31:12","nodeType":"YulFunctionCall","src":"56:31:12"},"nativeSrc":"56:31:12","nodeType":"YulExpressionStatement","src":"56:31:12"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:12","nodeType":"YulLiteral","src":"103:1:12","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:12","nodeType":"YulLiteral","src":"106:4:12","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:12","nodeType":"YulIdentifier","src":"96:6:12"},"nativeSrc":"96:15:12","nodeType":"YulFunctionCall","src":"96:15:12"},"nativeSrc":"96:15:12","nodeType":"YulExpressionStatement","src":"96:15:12"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:12","nodeType":"YulLiteral","src":"127:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:12","nodeType":"YulLiteral","src":"130:4:12","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:12","nodeType":"YulIdentifier","src":"120:6:12"},"nativeSrc":"120:15:12","nodeType":"YulFunctionCall","src":"120:15:12"},"nativeSrc":"120:15:12","nodeType":"YulExpressionStatement","src":"120:15:12"}]},"name":"panic_error_0x41","nativeSrc":"14:127:12","nodeType":"YulFunctionDefinition","src":"14:127:12"},{"body":{"nativeSrc":"253:994:12","nodeType":"YulBlock","src":"253:994:12","statements":[{"body":{"nativeSrc":"299:16:12","nodeType":"YulBlock","src":"299:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"308:1:12","nodeType":"YulLiteral","src":"308:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"311:1:12","nodeType":"YulLiteral","src":"311:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"301:6:12","nodeType":"YulIdentifier","src":"301:6:12"},"nativeSrc":"301:12:12","nodeType":"YulFunctionCall","src":"301:12:12"},"nativeSrc":"301:12:12","nodeType":"YulExpressionStatement","src":"301:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"274:7:12","nodeType":"YulIdentifier","src":"274:7:12"},{"name":"headStart","nativeSrc":"283:9:12","nodeType":"YulIdentifier","src":"283:9:12"}],"functionName":{"name":"sub","nativeSrc":"270:3:12","nodeType":"YulIdentifier","src":"270:3:12"},"nativeSrc":"270:23:12","nodeType":"YulFunctionCall","src":"270:23:12"},{"kind":"number","nativeSrc":"295:2:12","nodeType":"YulLiteral","src":"295:2:12","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"266:3:12","nodeType":"YulIdentifier","src":"266:3:12"},"nativeSrc":"266:32:12","nodeType":"YulFunctionCall","src":"266:32:12"},"nativeSrc":"263:52:12","nodeType":"YulIf","src":"263:52:12"},{"nativeSrc":"324:29:12","nodeType":"YulVariableDeclaration","src":"324:29:12","value":{"arguments":[{"name":"headStart","nativeSrc":"343:9:12","nodeType":"YulIdentifier","src":"343:9:12"}],"functionName":{"name":"mload","nativeSrc":"337:5:12","nodeType":"YulIdentifier","src":"337:5:12"},"nativeSrc":"337:16:12","nodeType":"YulFunctionCall","src":"337:16:12"},"variables":[{"name":"value","nativeSrc":"328:5:12","nodeType":"YulTypedName","src":"328:5:12","type":""}]},{"body":{"nativeSrc":"416:16:12","nodeType":"YulBlock","src":"416:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"425:1:12","nodeType":"YulLiteral","src":"425:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"428:1:12","nodeType":"YulLiteral","src":"428:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"418:6:12","nodeType":"YulIdentifier","src":"418:6:12"},"nativeSrc":"418:12:12","nodeType":"YulFunctionCall","src":"418:12:12"},"nativeSrc":"418:12:12","nodeType":"YulExpressionStatement","src":"418:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"375:5:12","nodeType":"YulIdentifier","src":"375:5:12"},{"arguments":[{"name":"value","nativeSrc":"386:5:12","nodeType":"YulIdentifier","src":"386:5:12"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"401:3:12","nodeType":"YulLiteral","src":"401:3:12","type":"","value":"160"},{"kind":"number","nativeSrc":"406:1:12","nodeType":"YulLiteral","src":"406:1:12","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"397:3:12","nodeType":"YulIdentifier","src":"397:3:12"},"nativeSrc":"397:11:12","nodeType":"YulFunctionCall","src":"397:11:12"},{"kind":"number","nativeSrc":"410:1:12","nodeType":"YulLiteral","src":"410:1:12","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"393:3:12","nodeType":"YulIdentifier","src":"393:3:12"},"nativeSrc":"393:19:12","nodeType":"YulFunctionCall","src":"393:19:12"}],"functionName":{"name":"and","nativeSrc":"382:3:12","nodeType":"YulIdentifier","src":"382:3:12"},"nativeSrc":"382:31:12","nodeType":"YulFunctionCall","src":"382:31:12"}],"functionName":{"name":"eq","nativeSrc":"372:2:12","nodeType":"YulIdentifier","src":"372:2:12"},"nativeSrc":"372:42:12","nodeType":"YulFunctionCall","src":"372:42:12"}],"functionName":{"name":"iszero","nativeSrc":"365:6:12","nodeType":"YulIdentifier","src":"365:6:12"},"nativeSrc":"365:50:12","nodeType":"YulFunctionCall","src":"365:50:12"},"nativeSrc":"362:70:12","nodeType":"YulIf","src":"362:70:12"},{"nativeSrc":"441:15:12","nodeType":"YulAssignment","src":"441:15:12","value":{"name":"value","nativeSrc":"451:5:12","nodeType":"YulIdentifier","src":"451:5:12"},"variableNames":[{"name":"value0","nativeSrc":"441:6:12","nodeType":"YulIdentifier","src":"441:6:12"}]},{"nativeSrc":"465:39:12","nodeType":"YulVariableDeclaration","src":"465:39:12","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"489:9:12","nodeType":"YulIdentifier","src":"489:9:12"},{"kind":"number","nativeSrc":"500:2:12","nodeType":"YulLiteral","src":"500:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"485:3:12","nodeType":"YulIdentifier","src":"485:3:12"},"nativeSrc":"485:18:12","nodeType":"YulFunctionCall","src":"485:18:12"}],"functionName":{"name":"mload","nativeSrc":"479:5:12","nodeType":"YulIdentifier","src":"479:5:12"},"nativeSrc":"479:25:12","nodeType":"YulFunctionCall","src":"479:25:12"},"variables":[{"name":"offset","nativeSrc":"469:6:12","nodeType":"YulTypedName","src":"469:6:12","type":""}]},{"body":{"nativeSrc":"547:16:12","nodeType":"YulBlock","src":"547:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"556:1:12","nodeType":"YulLiteral","src":"556:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"559:1:12","nodeType":"YulLiteral","src":"559:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"549:6:12","nodeType":"YulIdentifier","src":"549:6:12"},"nativeSrc":"549:12:12","nodeType":"YulFunctionCall","src":"549:12:12"},"nativeSrc":"549:12:12","nodeType":"YulExpressionStatement","src":"549:12:12"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"519:6:12","nodeType":"YulIdentifier","src":"519:6:12"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"535:2:12","nodeType":"YulLiteral","src":"535:2:12","type":"","value":"64"},{"kind":"number","nativeSrc":"539:1:12","nodeType":"YulLiteral","src":"539:1:12","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"531:3:12","nodeType":"YulIdentifier","src":"531:3:12"},"nativeSrc":"531:10:12","nodeType":"YulFunctionCall","src":"531:10:12"},{"kind":"number","nativeSrc":"543:1:12","nodeType":"YulLiteral","src":"543:1:12","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"527:3:12","nodeType":"YulIdentifier","src":"527:3:12"},"nativeSrc":"527:18:12","nodeType":"YulFunctionCall","src":"527:18:12"}],"functionName":{"name":"gt","nativeSrc":"516:2:12","nodeType":"YulIdentifier","src":"516:2:12"},"nativeSrc":"516:30:12","nodeType":"YulFunctionCall","src":"516:30:12"},"nativeSrc":"513:50:12","nodeType":"YulIf","src":"513:50:12"},{"nativeSrc":"572:32:12","nodeType":"YulVariableDeclaration","src":"572:32:12","value":{"arguments":[{"name":"headStart","nativeSrc":"586:9:12","nodeType":"YulIdentifier","src":"586:9:12"},{"name":"offset","nativeSrc":"597:6:12","nodeType":"YulIdentifier","src":"597:6:12"}],"functionName":{"name":"add","nativeSrc":"582:3:12","nodeType":"YulIdentifier","src":"582:3:12"},"nativeSrc":"582:22:12","nodeType":"YulFunctionCall","src":"582:22:12"},"variables":[{"name":"_1","nativeSrc":"576:2:12","nodeType":"YulTypedName","src":"576:2:12","type":""}]},{"body":{"nativeSrc":"652:16:12","nodeType":"YulBlock","src":"652:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"661:1:12","nodeType":"YulLiteral","src":"661:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"664:1:12","nodeType":"YulLiteral","src":"664:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"654:6:12","nodeType":"YulIdentifier","src":"654:6:12"},"nativeSrc":"654:12:12","nodeType":"YulFunctionCall","src":"654:12:12"},"nativeSrc":"654:12:12","nodeType":"YulExpressionStatement","src":"654:12:12"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"631:2:12","nodeType":"YulIdentifier","src":"631:2:12"},{"kind":"number","nativeSrc":"635:4:12","nodeType":"YulLiteral","src":"635:4:12","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"627:3:12","nodeType":"YulIdentifier","src":"627:3:12"},"nativeSrc":"627:13:12","nodeType":"YulFunctionCall","src":"627:13:12"},{"name":"dataEnd","nativeSrc":"642:7:12","nodeType":"YulIdentifier","src":"642:7:12"}],"functionName":{"name":"slt","nativeSrc":"623:3:12","nodeType":"YulIdentifier","src":"623:3:12"},"nativeSrc":"623:27:12","nodeType":"YulFunctionCall","src":"623:27:12"}],"functionName":{"name":"iszero","nativeSrc":"616:6:12","nodeType":"YulIdentifier","src":"616:6:12"},"nativeSrc":"616:35:12","nodeType":"YulFunctionCall","src":"616:35:12"},"nativeSrc":"613:55:12","nodeType":"YulIf","src":"613:55:12"},{"nativeSrc":"677:23:12","nodeType":"YulVariableDeclaration","src":"677:23:12","value":{"arguments":[{"name":"_1","nativeSrc":"697:2:12","nodeType":"YulIdentifier","src":"697:2:12"}],"functionName":{"name":"mload","nativeSrc":"691:5:12","nodeType":"YulIdentifier","src":"691:5:12"},"nativeSrc":"691:9:12","nodeType":"YulFunctionCall","src":"691:9:12"},"variables":[{"name":"length","nativeSrc":"681:6:12","nodeType":"YulTypedName","src":"681:6:12","type":""}]},{"body":{"nativeSrc":"743:22:12","nodeType":"YulBlock","src":"743:22:12","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"745:16:12","nodeType":"YulIdentifier","src":"745:16:12"},"nativeSrc":"745:18:12","nodeType":"YulFunctionCall","src":"745:18:12"},"nativeSrc":"745:18:12","nodeType":"YulExpressionStatement","src":"745:18:12"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"715:6:12","nodeType":"YulIdentifier","src":"715:6:12"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"731:2:12","nodeType":"YulLiteral","src":"731:2:12","type":"","value":"64"},{"kind":"number","nativeSrc":"735:1:12","nodeType":"YulLiteral","src":"735:1:12","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"727:3:12","nodeType":"YulIdentifier","src":"727:3:12"},"nativeSrc":"727:10:12","nodeType":"YulFunctionCall","src":"727:10:12"},{"kind":"number","nativeSrc":"739:1:12","nodeType":"YulLiteral","src":"739:1:12","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"723:3:12","nodeType":"YulIdentifier","src":"723:3:12"},"nativeSrc":"723:18:12","nodeType":"YulFunctionCall","src":"723:18:12"}],"functionName":{"name":"gt","nativeSrc":"712:2:12","nodeType":"YulIdentifier","src":"712:2:12"},"nativeSrc":"712:30:12","nodeType":"YulFunctionCall","src":"712:30:12"},"nativeSrc":"709:56:12","nodeType":"YulIf","src":"709:56:12"},{"nativeSrc":"774:23:12","nodeType":"YulVariableDeclaration","src":"774:23:12","value":{"arguments":[{"kind":"number","nativeSrc":"794:2:12","nodeType":"YulLiteral","src":"794:2:12","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"788:5:12","nodeType":"YulIdentifier","src":"788:5:12"},"nativeSrc":"788:9:12","nodeType":"YulFunctionCall","src":"788:9:12"},"variables":[{"name":"memPtr","nativeSrc":"778:6:12","nodeType":"YulTypedName","src":"778:6:12","type":""}]},{"nativeSrc":"806:85:12","nodeType":"YulVariableDeclaration","src":"806:85:12","value":{"arguments":[{"name":"memPtr","nativeSrc":"828:6:12","nodeType":"YulIdentifier","src":"828:6:12"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"852:6:12","nodeType":"YulIdentifier","src":"852:6:12"},{"kind":"number","nativeSrc":"860:4:12","nodeType":"YulLiteral","src":"860:4:12","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"848:3:12","nodeType":"YulIdentifier","src":"848:3:12"},"nativeSrc":"848:17:12","nodeType":"YulFunctionCall","src":"848:17:12"},{"arguments":[{"kind":"number","nativeSrc":"871:2:12","nodeType":"YulLiteral","src":"871:2:12","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"867:3:12","nodeType":"YulIdentifier","src":"867:3:12"},"nativeSrc":"867:7:12","nodeType":"YulFunctionCall","src":"867:7:12"}],"functionName":{"name":"and","nativeSrc":"844:3:12","nodeType":"YulIdentifier","src":"844:3:12"},"nativeSrc":"844:31:12","nodeType":"YulFunctionCall","src":"844:31:12"},{"kind":"number","nativeSrc":"877:2:12","nodeType":"YulLiteral","src":"877:2:12","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"840:3:12","nodeType":"YulIdentifier","src":"840:3:12"},"nativeSrc":"840:40:12","nodeType":"YulFunctionCall","src":"840:40:12"},{"arguments":[{"kind":"number","nativeSrc":"886:2:12","nodeType":"YulLiteral","src":"886:2:12","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"882:3:12","nodeType":"YulIdentifier","src":"882:3:12"},"nativeSrc":"882:7:12","nodeType":"YulFunctionCall","src":"882:7:12"}],"functionName":{"name":"and","nativeSrc":"836:3:12","nodeType":"YulIdentifier","src":"836:3:12"},"nativeSrc":"836:54:12","nodeType":"YulFunctionCall","src":"836:54:12"}],"functionName":{"name":"add","nativeSrc":"824:3:12","nodeType":"YulIdentifier","src":"824:3:12"},"nativeSrc":"824:67:12","nodeType":"YulFunctionCall","src":"824:67:12"},"variables":[{"name":"newFreePtr","nativeSrc":"810:10:12","nodeType":"YulTypedName","src":"810:10:12","type":""}]},{"body":{"nativeSrc":"966:22:12","nodeType":"YulBlock","src":"966:22:12","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"968:16:12","nodeType":"YulIdentifier","src":"968:16:12"},"nativeSrc":"968:18:12","nodeType":"YulFunctionCall","src":"968:18:12"},"nativeSrc":"968:18:12","nodeType":"YulExpressionStatement","src":"968:18:12"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"909:10:12","nodeType":"YulIdentifier","src":"909:10:12"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"929:2:12","nodeType":"YulLiteral","src":"929:2:12","type":"","value":"64"},{"kind":"number","nativeSrc":"933:1:12","nodeType":"YulLiteral","src":"933:1:12","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"925:3:12","nodeType":"YulIdentifier","src":"925:3:12"},"nativeSrc":"925:10:12","nodeType":"YulFunctionCall","src":"925:10:12"},{"kind":"number","nativeSrc":"937:1:12","nodeType":"YulLiteral","src":"937:1:12","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"921:3:12","nodeType":"YulIdentifier","src":"921:3:12"},"nativeSrc":"921:18:12","nodeType":"YulFunctionCall","src":"921:18:12"}],"functionName":{"name":"gt","nativeSrc":"906:2:12","nodeType":"YulIdentifier","src":"906:2:12"},"nativeSrc":"906:34:12","nodeType":"YulFunctionCall","src":"906:34:12"},{"arguments":[{"name":"newFreePtr","nativeSrc":"945:10:12","nodeType":"YulIdentifier","src":"945:10:12"},{"name":"memPtr","nativeSrc":"957:6:12","nodeType":"YulIdentifier","src":"957:6:12"}],"functionName":{"name":"lt","nativeSrc":"942:2:12","nodeType":"YulIdentifier","src":"942:2:12"},"nativeSrc":"942:22:12","nodeType":"YulFunctionCall","src":"942:22:12"}],"functionName":{"name":"or","nativeSrc":"903:2:12","nodeType":"YulIdentifier","src":"903:2:12"},"nativeSrc":"903:62:12","nodeType":"YulFunctionCall","src":"903:62:12"},"nativeSrc":"900:88:12","nodeType":"YulIf","src":"900:88:12"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1004:2:12","nodeType":"YulLiteral","src":"1004:2:12","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1008:10:12","nodeType":"YulIdentifier","src":"1008:10:12"}],"functionName":{"name":"mstore","nativeSrc":"997:6:12","nodeType":"YulIdentifier","src":"997:6:12"},"nativeSrc":"997:22:12","nodeType":"YulFunctionCall","src":"997:22:12"},"nativeSrc":"997:22:12","nodeType":"YulExpressionStatement","src":"997:22:12"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1035:6:12","nodeType":"YulIdentifier","src":"1035:6:12"},{"name":"length","nativeSrc":"1043:6:12","nodeType":"YulIdentifier","src":"1043:6:12"}],"functionName":{"name":"mstore","nativeSrc":"1028:6:12","nodeType":"YulIdentifier","src":"1028:6:12"},"nativeSrc":"1028:22:12","nodeType":"YulFunctionCall","src":"1028:22:12"},"nativeSrc":"1028:22:12","nodeType":"YulExpressionStatement","src":"1028:22:12"},{"body":{"nativeSrc":"1100:16:12","nodeType":"YulBlock","src":"1100:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1109:1:12","nodeType":"YulLiteral","src":"1109:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"1112:1:12","nodeType":"YulLiteral","src":"1112:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1102:6:12","nodeType":"YulIdentifier","src":"1102:6:12"},"nativeSrc":"1102:12:12","nodeType":"YulFunctionCall","src":"1102:12:12"},"nativeSrc":"1102:12:12","nodeType":"YulExpressionStatement","src":"1102:12:12"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1073:2:12","nodeType":"YulIdentifier","src":"1073:2:12"},{"name":"length","nativeSrc":"1077:6:12","nodeType":"YulIdentifier","src":"1077:6:12"}],"functionName":{"name":"add","nativeSrc":"1069:3:12","nodeType":"YulIdentifier","src":"1069:3:12"},"nativeSrc":"1069:15:12","nodeType":"YulFunctionCall","src":"1069:15:12"},{"kind":"number","nativeSrc":"1086:2:12","nodeType":"YulLiteral","src":"1086:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1065:3:12","nodeType":"YulIdentifier","src":"1065:3:12"},"nativeSrc":"1065:24:12","nodeType":"YulFunctionCall","src":"1065:24:12"},{"name":"dataEnd","nativeSrc":"1091:7:12","nodeType":"YulIdentifier","src":"1091:7:12"}],"functionName":{"name":"gt","nativeSrc":"1062:2:12","nodeType":"YulIdentifier","src":"1062:2:12"},"nativeSrc":"1062:37:12","nodeType":"YulFunctionCall","src":"1062:37:12"},"nativeSrc":"1059:57:12","nodeType":"YulIf","src":"1059:57:12"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1135:6:12","nodeType":"YulIdentifier","src":"1135:6:12"},{"kind":"number","nativeSrc":"1143:2:12","nodeType":"YulLiteral","src":"1143:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1131:3:12","nodeType":"YulIdentifier","src":"1131:3:12"},"nativeSrc":"1131:15:12","nodeType":"YulFunctionCall","src":"1131:15:12"},{"arguments":[{"name":"_1","nativeSrc":"1152:2:12","nodeType":"YulIdentifier","src":"1152:2:12"},{"kind":"number","nativeSrc":"1156:2:12","nodeType":"YulLiteral","src":"1156:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1148:3:12","nodeType":"YulIdentifier","src":"1148:3:12"},"nativeSrc":"1148:11:12","nodeType":"YulFunctionCall","src":"1148:11:12"},{"name":"length","nativeSrc":"1161:6:12","nodeType":"YulIdentifier","src":"1161:6:12"}],"functionName":{"name":"mcopy","nativeSrc":"1125:5:12","nodeType":"YulIdentifier","src":"1125:5:12"},"nativeSrc":"1125:43:12","nodeType":"YulFunctionCall","src":"1125:43:12"},"nativeSrc":"1125:43:12","nodeType":"YulExpressionStatement","src":"1125:43:12"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1192:6:12","nodeType":"YulIdentifier","src":"1192:6:12"},{"name":"length","nativeSrc":"1200:6:12","nodeType":"YulIdentifier","src":"1200:6:12"}],"functionName":{"name":"add","nativeSrc":"1188:3:12","nodeType":"YulIdentifier","src":"1188:3:12"},"nativeSrc":"1188:19:12","nodeType":"YulFunctionCall","src":"1188:19:12"},{"kind":"number","nativeSrc":"1209:2:12","nodeType":"YulLiteral","src":"1209:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1184:3:12","nodeType":"YulIdentifier","src":"1184:3:12"},"nativeSrc":"1184:28:12","nodeType":"YulFunctionCall","src":"1184:28:12"},{"kind":"number","nativeSrc":"1214:1:12","nodeType":"YulLiteral","src":"1214:1:12","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1177:6:12","nodeType":"YulIdentifier","src":"1177:6:12"},"nativeSrc":"1177:39:12","nodeType":"YulFunctionCall","src":"1177:39:12"},"nativeSrc":"1177:39:12","nodeType":"YulExpressionStatement","src":"1177:39:12"},{"nativeSrc":"1225:16:12","nodeType":"YulAssignment","src":"1225:16:12","value":{"name":"memPtr","nativeSrc":"1235:6:12","nodeType":"YulIdentifier","src":"1235:6:12"},"variableNames":[{"name":"value1","nativeSrc":"1225:6:12","nodeType":"YulIdentifier","src":"1225:6:12"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory","nativeSrc":"146:1101:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"211:9:12","nodeType":"YulTypedName","src":"211:9:12","type":""},{"name":"dataEnd","nativeSrc":"222:7:12","nodeType":"YulTypedName","src":"222:7:12","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"234:6:12","nodeType":"YulTypedName","src":"234:6:12","type":""},{"name":"value1","nativeSrc":"242:6:12","nodeType":"YulTypedName","src":"242:6:12","type":""}],"src":"146:1101:12"},{"body":{"nativeSrc":"1353:102:12","nodeType":"YulBlock","src":"1353:102:12","statements":[{"nativeSrc":"1363:26:12","nodeType":"YulAssignment","src":"1363:26:12","value":{"arguments":[{"name":"headStart","nativeSrc":"1375:9:12","nodeType":"YulIdentifier","src":"1375:9:12"},{"kind":"number","nativeSrc":"1386:2:12","nodeType":"YulLiteral","src":"1386:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1371:3:12","nodeType":"YulIdentifier","src":"1371:3:12"},"nativeSrc":"1371:18:12","nodeType":"YulFunctionCall","src":"1371:18:12"},"variableNames":[{"name":"tail","nativeSrc":"1363:4:12","nodeType":"YulIdentifier","src":"1363:4:12"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1405:9:12","nodeType":"YulIdentifier","src":"1405:9:12"},{"arguments":[{"name":"value0","nativeSrc":"1420:6:12","nodeType":"YulIdentifier","src":"1420:6:12"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1436:3:12","nodeType":"YulLiteral","src":"1436:3:12","type":"","value":"160"},{"kind":"number","nativeSrc":"1441:1:12","nodeType":"YulLiteral","src":"1441:1:12","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1432:3:12","nodeType":"YulIdentifier","src":"1432:3:12"},"nativeSrc":"1432:11:12","nodeType":"YulFunctionCall","src":"1432:11:12"},{"kind":"number","nativeSrc":"1445:1:12","nodeType":"YulLiteral","src":"1445:1:12","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1428:3:12","nodeType":"YulIdentifier","src":"1428:3:12"},"nativeSrc":"1428:19:12","nodeType":"YulFunctionCall","src":"1428:19:12"}],"functionName":{"name":"and","nativeSrc":"1416:3:12","nodeType":"YulIdentifier","src":"1416:3:12"},"nativeSrc":"1416:32:12","nodeType":"YulFunctionCall","src":"1416:32:12"}],"functionName":{"name":"mstore","nativeSrc":"1398:6:12","nodeType":"YulIdentifier","src":"1398:6:12"},"nativeSrc":"1398:51:12","nodeType":"YulFunctionCall","src":"1398:51:12"},"nativeSrc":"1398:51:12","nodeType":"YulExpressionStatement","src":"1398:51:12"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1252:203:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1322:9:12","nodeType":"YulTypedName","src":"1322:9:12","type":""},{"name":"value0","nativeSrc":"1333:6:12","nodeType":"YulTypedName","src":"1333:6:12","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1344:4:12","nodeType":"YulTypedName","src":"1344:4:12","type":""}],"src":"1252:203:12"},{"body":{"nativeSrc":"1597:164:12","nodeType":"YulBlock","src":"1597:164:12","statements":[{"nativeSrc":"1607:27:12","nodeType":"YulVariableDeclaration","src":"1607:27:12","value":{"arguments":[{"name":"value0","nativeSrc":"1627:6:12","nodeType":"YulIdentifier","src":"1627:6:12"}],"functionName":{"name":"mload","nativeSrc":"1621:5:12","nodeType":"YulIdentifier","src":"1621:5:12"},"nativeSrc":"1621:13:12","nodeType":"YulFunctionCall","src":"1621:13:12"},"variables":[{"name":"length","nativeSrc":"1611:6:12","nodeType":"YulTypedName","src":"1611:6:12","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"1649:3:12","nodeType":"YulIdentifier","src":"1649:3:12"},{"arguments":[{"name":"value0","nativeSrc":"1658:6:12","nodeType":"YulIdentifier","src":"1658:6:12"},{"kind":"number","nativeSrc":"1666:4:12","nodeType":"YulLiteral","src":"1666:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1654:3:12","nodeType":"YulIdentifier","src":"1654:3:12"},"nativeSrc":"1654:17:12","nodeType":"YulFunctionCall","src":"1654:17:12"},{"name":"length","nativeSrc":"1673:6:12","nodeType":"YulIdentifier","src":"1673:6:12"}],"functionName":{"name":"mcopy","nativeSrc":"1643:5:12","nodeType":"YulIdentifier","src":"1643:5:12"},"nativeSrc":"1643:37:12","nodeType":"YulFunctionCall","src":"1643:37:12"},"nativeSrc":"1643:37:12","nodeType":"YulExpressionStatement","src":"1643:37:12"},{"nativeSrc":"1689:26:12","nodeType":"YulVariableDeclaration","src":"1689:26:12","value":{"arguments":[{"name":"pos","nativeSrc":"1703:3:12","nodeType":"YulIdentifier","src":"1703:3:12"},{"name":"length","nativeSrc":"1708:6:12","nodeType":"YulIdentifier","src":"1708:6:12"}],"functionName":{"name":"add","nativeSrc":"1699:3:12","nodeType":"YulIdentifier","src":"1699:3:12"},"nativeSrc":"1699:16:12","nodeType":"YulFunctionCall","src":"1699:16:12"},"variables":[{"name":"_1","nativeSrc":"1693:2:12","nodeType":"YulTypedName","src":"1693:2:12","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"1731:2:12","nodeType":"YulIdentifier","src":"1731:2:12"},{"kind":"number","nativeSrc":"1735:1:12","nodeType":"YulLiteral","src":"1735:1:12","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1724:6:12","nodeType":"YulIdentifier","src":"1724:6:12"},"nativeSrc":"1724:13:12","nodeType":"YulFunctionCall","src":"1724:13:12"},"nativeSrc":"1724:13:12","nodeType":"YulExpressionStatement","src":"1724:13:12"},{"nativeSrc":"1746:9:12","nodeType":"YulAssignment","src":"1746:9:12","value":{"name":"_1","nativeSrc":"1753:2:12","nodeType":"YulIdentifier","src":"1753:2:12"},"variableNames":[{"name":"end","nativeSrc":"1746:3:12","nodeType":"YulIdentifier","src":"1746:3:12"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"1460:301:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1573:3:12","nodeType":"YulTypedName","src":"1573:3:12","type":""},{"name":"value0","nativeSrc":"1578:6:12","nodeType":"YulTypedName","src":"1578:6:12","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1589:3:12","nodeType":"YulTypedName","src":"1589:3:12","type":""}],"src":"1460:301:12"}]},"contents":"{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n let offset := mload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let length := mload(_1)\n if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, length)\n if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n mcopy(add(memPtr, 32), add(_1, 32), length)\n mstore(add(add(memPtr, length), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n mcopy(pos, add(value0, 0x20), length)\n let _1 := add(pos, length)\n mstore(_1, 0)\n end := _1\n }\n}","id":12,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526040516103dd3803806103dd8339810160408190526100229161023c565b61002c8282610033565b5050610321565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030b565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024d575f5ffd5b82516001600160a01b0381168114610263575f5ffd5b60208401519092506001600160401b0381111561027e575f5ffd5b8301601f8101851361028e575f5ffd5b80516001600160401b038111156102a7576102a7610228565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d5576102d5610228565b6040528181528282016020018710156102ec575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60b08061032d5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffdfea2646970667358221220135bdee684c63adc98111b5f8ef1566e2b1841823b3a85d9ed6bc17a6c0ebb2064736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x3DD CODESIZE SUB DUP1 PUSH2 0x3DD DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x23C JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x321 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x91 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x85 JUMPI PUSH2 0x80 DUP3 DUP3 PUSH2 0x10C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8D PUSH2 0x17F JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0xCB JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x128 SWAP2 SWAP1 PUSH2 0x30B JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x160 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x165 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x176 DUP6 DUP4 DUP4 PUSH2 0x1A0 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19E JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B5 JUMPI PUSH2 0x1B0 DUP3 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x1F8 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xC2 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x20F JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x263 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x27E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x28E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2A7 JUMPI PUSH2 0x2A7 PUSH2 0x228 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2D5 JUMPI PUSH2 0x2D5 PUSH2 0x228 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x2EC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xB0 DUP1 PUSH2 0x32D PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x5D JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x58 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x76 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT JUMPDEST 0xDE 0xE6 DUP5 0xC6 GASPRICE 0xDC SWAP9 GT SHL PUSH0 DUP15 CALL JUMP PUSH15 0x2B1841823B3A85D9ED6BC17A6C0EBB KECCAK256 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"600:1117:1:-:0;;;1081:133;;;;;;;;;;;;;;;;;;:::i;:::-;1155:52;1185:14;1201:5;1155:29;:52::i;:::-;1081:133;;600:1117;;2264:344:2;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:2;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;:::-;;2264:344;;:::o;2454:148::-;2573:18;:16;:18::i;:::-;2264:344;;:::o;1671:281::-;1748:17;-1:-1:-1;;;;;1748:29:2;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:2;;-1:-1:-1;;;;;1416:32:12;;1805:47:2;;;1398:51:12;1371:18;;1805:47:2;;;;;;;;1744:119;811:66;1872:73;;-1:-1:-1;;;;;;1872:73:2;-1:-1:-1;;;;;1872:73:2;;;;;;;;;;1671:281::o;3916:253:6:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:6;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4023:67:6;;-1:-1:-1;4023:67:6;-1:-1:-1;4107:55:6;4134:6;4023:67;;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:6:o;6113:122:2:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:2;;;;;;;;;;;6159:70;6113:122::o;4437:582:6:-;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:6;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:6;;-1:-1:-1;;;;;1416:32:12;;4933:24:6;;;1398:51:12;1371:18;;4933:24:6;1252:203:12;4853:119:6;-1:-1:-1;4992:10:6;4605:408;4437:582;;;;;:::o;5559:487::-;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:6;;;;;;;;;;;14:127:12;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1101;234:6;242;295:2;283:9;274:7;270:23;266:32;263:52;;;311:1;308;301:12;263:52;337:16;;-1:-1:-1;;;;;382:31:12;;372:42;;362:70;;428:1;425;418:12;362:70;500:2;485:18;;479:25;451:5;;-1:-1:-1;;;;;;516:30:12;;513:50;;;559:1;556;549:12;513:50;582:22;;635:4;627:13;;623:27;-1:-1:-1;613:55:12;;664:1;661;654:12;613:55;691:9;;-1:-1:-1;;;;;712:30:12;;709:56;;;745:18;;:::i;:::-;794:2;788:9;886:2;848:17;;-1:-1:-1;;844:31:12;;;877:2;840:40;836:54;824:67;;-1:-1:-1;;;;;906:34:12;;942:22;;;903:62;900:88;;;968:18;;:::i;:::-;1004:2;997:22;1028;;;1069:15;;;1086:2;1065:24;1062:37;-1:-1:-1;1059:57:12;;;1112:1;1109;1102:12;1059:57;1161:6;1156:2;1152;1148:11;1143:2;1135:6;1131:15;1125:43;1214:1;1209:2;1200:6;1192;1188:19;1184:28;1177:39;1235:6;1225:16;;;;;146:1101;;;;;:::o;1460:301::-;1589:3;1627:6;1621:13;1673:6;1666:4;1658:6;1654:17;1649:3;1643:37;1735:1;1699:16;;1724:13;;;-1:-1:-1;1699:16:12;1460:301;-1:-1:-1;1460:301:12:o;:::-;600:1117:1;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_387":{"entryPoint":null,"id":387,"parameterSlots":0,"returnSlots":0},"@_delegate_363":{"entryPoint":93,"id":363,"parameterSlots":1,"returnSlots":0},"@_fallback_379":{"entryPoint":12,"id":379,"parameterSlots":0,"returnSlots":0},"@_implementation_57":{"entryPoint":26,"id":57,"parameterSlots":0,"returnSlots":1},"@getAddressSlot_793":{"entryPoint":null,"id":793,"parameterSlots":1,"returnSlots":1},"@getImplementation_104":{"entryPoint":null,"id":104,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffdfea2646970667358221220135bdee684c63adc98111b5f8ef1566e2b1841823b3a85d9ed6bc17a6c0ebb2064736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x5D JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x58 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x76 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT JUMPDEST 0xDE 0xE6 DUP5 0xC6 GASPRICE 0xDC SWAP9 GT SHL PUSH0 DUP15 CALL JUMP PUSH15 0x2B1841823B3A85D9ED6BC17A6C0EBB KECCAK256 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"600:1117:1:-:0;;;2649:11:3;:9;:11::i;:::-;600:1117:1;2323:83:3;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323:83::o;1583:132:1:-;1650:7;1676:32;811:66:2;1519:53;;;;1441:138;1676:32:1;1669:39;;1583:132;:::o;949:895:3:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049\",\"dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}"}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ERC1967Utils":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"ERC1967InvalidAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"beacon","type":"address"}],"name":"ERC1967InvalidBeacon","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220bfc5b0e91f106319a6a68930e9f2c65f9267f9f6de755a2bcf9673face565ea664736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xC5 0xB0 0xE9 0x1F LT PUSH4 0x19A6A689 ADDRESS 0xE9 CALLCODE 0xC6 PUSH0 SWAP3 PUSH8 0xF9F6DE755A2BCF96 PUSH20 0xFACE565EA664736F6C634300081C003300000000 ","sourceMap":"496:5741:2:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;496:5741:2;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220bfc5b0e91f106319a6a68930e9f2c65f9267f9f6de755a2bcf9673face565ea664736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xC5 0xB0 0xE9 0x1F LT PUSH4 0x19A6A689 ADDRESS 0xE9 CALLCODE 0xC6 PUSH0 SWAP3 PUSH8 0xF9F6DE755A2BCF96 PUSH20 0xFACE565EA664736F6C634300081C003300000000 ","sourceMap":"496:5741:2:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This library provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}"}},"@openzeppelin/contracts/proxy/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]}},\"version\":1}"}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","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":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212207e2c126ae79740cf12b88060a4e2835c57547360e816e3e856cef9228038ddde64736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0x2C126AE79740CF12B88060A4E2835C57547360E816E3E856CEF9228038DDDE PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"233:5815:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;233:5815:6;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212207e2c126ae79740cf12b88060a4e2835c57547360e816e3e856cef9228038ddde64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0x2C126AE79740CF12B88060A4E2835C57547360E816E3E856CEF9228038DDDE PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"233:5815:6:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Errors.sol":{"Errors":{"abi":[{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"FailedDeployment","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"MissingPrecompile","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220a3e22517516cfcb3344bc669a47e4e67f5c0c38dc34c270600545b637975373f64736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xE2 0x25 OR MLOAD PUSH13 0xFCB3344BC669A47E4E67F5C0C3 DUP14 0xC3 0x4C 0x27 MOD STOP SLOAD JUMPDEST PUSH4 0x7975373F PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"411:484:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;411:484:7;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220a3e22517516cfcb3344bc669a47e4e67f5c0c38dc34c270600545b637975373f64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG3 0xE2 0x25 OR MLOAD PUSH13 0xFCB3344BC669A47E4E67F5C0C3 DUP14 0xC3 0x4C 0x27 MOD STOP SLOAD JUMPDEST PUSH4 0x7975373F PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"411:484:7:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"MissingPrecompile\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"MissingPrecompile(address)\":[{\"details\":\"A necessary precompile is missing.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204d00e0de6eeae5870c96446f510968ffe1e1814d33069567c4295734983bbbfb64736f6c634300081c0033","opcodes":"PUSH1 0x55 PUSH1 0x32 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH0 BYTE PUSH1 0x73 EQ PUSH1 0x26 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST ADDRESS PUSH0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4D STOP 0xE0 0xDE PUSH15 0xEAE5870C96446F510968FFE1E1814D CALLER MOD SWAP6 PUSH8 0xC4295734983BBBFB PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1407:2774:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1407:2774:8;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204d00e0de6eeae5870c96446f510968ffe1e1814d33069567c4295734983bbbfb64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4D STOP 0xE0 0xDE PUSH15 0xEAE5870C96446F510968FFE1E1814D CALLER MOD SWAP6 PUSH8 0xC4295734983BBBFB PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1407:2774:8:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}"}},"contracts/Trustlined.sol":{"Trustlined":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"client","type":"address"},{"indexed":true,"internalType":"address","name":"engineProxy","type":"address"},{"indexed":true,"internalType":"address","name":"logic","type":"address"},{"indexed":false,"internalType":"address","name":"initialOwner","type":"address"}],"name":"ValidationEngineDeployed","type":"event"},{"inputs":[],"name":"validationEngine","outputs":[{"internalType":"contract IValidationEngine","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"validationEngine()":"7d4f064e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"engineProxy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"logic\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"ValidationEngineDeployed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"validationEngine\",\"outputs\":[{\"internalType\":\"contract IValidationEngine\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trustline\",\"events\":{\"ValidationEngineDeployed(address,address,address,address)\":{\"details\":\"`client` is the address of the integrating contract (i.e., the contract inheriting from Trustlined).`engineProxy` is the freshly deployed ERC1967 proxy address for the Validation Engine instance.`logic` is the Validation Engine implementation (logic) contract the proxy points to at deployment time.`initialOwner` is the address passed to the engine's `initialize(address)` call (typically the deployer/initializer).\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Both a constructor and initializer functions are defined to support both upgradeable and non-upgradeable deployment scenarios\",\"params\":{\"trustlineValidationEngineLogic\":\"The Validation Engine logic contract address for deploying a proxy (used only if validationEngineAddress is zero)\",\"trustlineValidationEngineProxy\":\"Optional Validation Engine proxy address. If provided (non-zero), it will be used directly instead of deploying a new proxy\"}}},\"stateVariables\":{\"validationEngine\":{\"details\":\"Multiple dapps can share the same ValidationEngine contractThis contract is set by the owner and must implement the IValidationEngine interface\"}},\"title\":\"Trustline's Base Contract\",\"version\":1},\"userdoc\":{\"events\":{\"ValidationEngineDeployed(address,address,address,address)\":{\"notice\":\"Emitted when a new Validation Engine proxy is deployed for this client contract.\"}},\"kind\":\"user\",\"methods\":{\"validationEngine()\":{\"notice\":\"The Trustline ValidationEngine contract address. It must be set before any of the provided functions can be used\"}},\"notice\":\"This library provides functions for verifying the trust status of a transaction\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Trustlined.sol\":\"Trustlined\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049\",\"dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"contracts/Trustlined.sol\":{\"keccak256\":\"0x6ed305bb0d99359886b4571c5d67019895da3028c80ad515365a9df7486c1b8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c33412ef8b9b2a4e99c05a0c72d184833a5cb72a2ed0f9cf4933f614202b8c4f\",\"dweb:/ipfs/QmQTPuUzNpCJPfiqp44HFb6837dkcgQr9GEKARTqu23TUk\"]},\"contracts/interfaces/IValidationEngine.sol\":{\"keccak256\":\"0xabc18c2ce04a797bf6c486d8100ed9d0f2f3002d9ba8c59258a8a32fce895a45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b30e4603cb427d074c73d5af95fb106d804572abb55e25cbf0f5153e3e87282\",\"dweb:/ipfs/QmbPhqBPaMSzdyREoKHJXjZhhY7HtSbqgTv4EpHsA8FL6T\"]}},\"version\":1}"}},"contracts/examples/PaymentFirewall.sol":{"PaymentFirewall":{"abi":[{"inputs":[{"internalType":"address","name":"trustlineValidationEngineLogic","type":"address"},{"internalType":"address","name":"trustlineValidationEngineProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"client","type":"address"},{"indexed":true,"internalType":"address","name":"engineProxy","type":"address"},{"indexed":true,"internalType":"address","name":"logic","type":"address"},{"indexed":false,"internalType":"address","name":"initialOwner","type":"address"}],"name":"ValidationEngineDeployed","type":"event"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"payEthers","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"payTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"validationEngine","outputs":[{"internalType":"contract IValidationEngine","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1122":{"entryPoint":null,"id":1122,"parameterSlots":2,"returnSlots":0},"@_918":{"entryPoint":null,"id":918,"parameterSlots":2,"returnSlots":0},"@__Trustlined_init_931":{"entryPoint":67,"id":931,"parameterSlots":2,"returnSlots":0},"@__Trustlined_init_unchained_1026":{"entryPoint":81,"id":1026,"parameterSlots":2,"returnSlots":0},"abi_decode_address_fromMemory":{"entryPoint":626,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":653,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":702,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_stringliteral_547a8a3231e1f1e0d6e27abe234d0de412a38d4b4c4168a0b714c57c27267f67__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_a45d120a472d0f20a2778eb02314826f5d7ba00dc83759a3782d11ef9a5ace5c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:2269:12","nodeType":"YulBlock","src":"0:2269:12","statements":[{"nativeSrc":"6:3:12","nodeType":"YulBlock","src":"6:3:12","statements":[]},{"body":{"nativeSrc":"74:117:12","nodeType":"YulBlock","src":"74:117:12","statements":[{"nativeSrc":"84:22:12","nodeType":"YulAssignment","src":"84:22:12","value":{"arguments":[{"name":"offset","nativeSrc":"99:6:12","nodeType":"YulIdentifier","src":"99:6:12"}],"functionName":{"name":"mload","nativeSrc":"93:5:12","nodeType":"YulIdentifier","src":"93:5:12"},"nativeSrc":"93:13:12","nodeType":"YulFunctionCall","src":"93:13:12"},"variableNames":[{"name":"value","nativeSrc":"84:5:12","nodeType":"YulIdentifier","src":"84:5:12"}]},{"body":{"nativeSrc":"169:16:12","nodeType":"YulBlock","src":"169:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"178:1:12","nodeType":"YulLiteral","src":"178:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"181:1:12","nodeType":"YulLiteral","src":"181:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"171:6:12","nodeType":"YulIdentifier","src":"171:6:12"},"nativeSrc":"171:12:12","nodeType":"YulFunctionCall","src":"171:12:12"},"nativeSrc":"171:12:12","nodeType":"YulExpressionStatement","src":"171:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"128:5:12","nodeType":"YulIdentifier","src":"128:5:12"},{"arguments":[{"name":"value","nativeSrc":"139:5:12","nodeType":"YulIdentifier","src":"139:5:12"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"154:3:12","nodeType":"YulLiteral","src":"154:3:12","type":"","value":"160"},{"kind":"number","nativeSrc":"159:1:12","nodeType":"YulLiteral","src":"159:1:12","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"150:3:12","nodeType":"YulIdentifier","src":"150:3:12"},"nativeSrc":"150:11:12","nodeType":"YulFunctionCall","src":"150:11:12"},{"kind":"number","nativeSrc":"163:1:12","nodeType":"YulLiteral","src":"163:1:12","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"146:3:12","nodeType":"YulIdentifier","src":"146:3:12"},"nativeSrc":"146:19:12","nodeType":"YulFunctionCall","src":"146:19:12"}],"functionName":{"name":"and","nativeSrc":"135:3:12","nodeType":"YulIdentifier","src":"135:3:12"},"nativeSrc":"135:31:12","nodeType":"YulFunctionCall","src":"135:31:12"}],"functionName":{"name":"eq","nativeSrc":"125:2:12","nodeType":"YulIdentifier","src":"125:2:12"},"nativeSrc":"125:42:12","nodeType":"YulFunctionCall","src":"125:42:12"}],"functionName":{"name":"iszero","nativeSrc":"118:6:12","nodeType":"YulIdentifier","src":"118:6:12"},"nativeSrc":"118:50:12","nodeType":"YulFunctionCall","src":"118:50:12"},"nativeSrc":"115:70:12","nodeType":"YulIf","src":"115:70:12"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"14:177:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"53:6:12","nodeType":"YulTypedName","src":"53:6:12","type":""}],"returnVariables":[{"name":"value","nativeSrc":"64:5:12","nodeType":"YulTypedName","src":"64:5:12","type":""}],"src":"14:177:12"},{"body":{"nativeSrc":"294:195:12","nodeType":"YulBlock","src":"294:195:12","statements":[{"body":{"nativeSrc":"340:16:12","nodeType":"YulBlock","src":"340:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"349:1:12","nodeType":"YulLiteral","src":"349:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"352:1:12","nodeType":"YulLiteral","src":"352:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"342:6:12","nodeType":"YulIdentifier","src":"342:6:12"},"nativeSrc":"342:12:12","nodeType":"YulFunctionCall","src":"342:12:12"},"nativeSrc":"342:12:12","nodeType":"YulExpressionStatement","src":"342:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"315:7:12","nodeType":"YulIdentifier","src":"315:7:12"},{"name":"headStart","nativeSrc":"324:9:12","nodeType":"YulIdentifier","src":"324:9:12"}],"functionName":{"name":"sub","nativeSrc":"311:3:12","nodeType":"YulIdentifier","src":"311:3:12"},"nativeSrc":"311:23:12","nodeType":"YulFunctionCall","src":"311:23:12"},{"kind":"number","nativeSrc":"336:2:12","nodeType":"YulLiteral","src":"336:2:12","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"307:3:12","nodeType":"YulIdentifier","src":"307:3:12"},"nativeSrc":"307:32:12","nodeType":"YulFunctionCall","src":"307:32:12"},"nativeSrc":"304:52:12","nodeType":"YulIf","src":"304:52:12"},{"nativeSrc":"365:50:12","nodeType":"YulAssignment","src":"365:50:12","value":{"arguments":[{"name":"headStart","nativeSrc":"405:9:12","nodeType":"YulIdentifier","src":"405:9:12"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"375:29:12","nodeType":"YulIdentifier","src":"375:29:12"},"nativeSrc":"375:40:12","nodeType":"YulFunctionCall","src":"375:40:12"},"variableNames":[{"name":"value0","nativeSrc":"365:6:12","nodeType":"YulIdentifier","src":"365:6:12"}]},{"nativeSrc":"424:59:12","nodeType":"YulAssignment","src":"424:59:12","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"468:9:12","nodeType":"YulIdentifier","src":"468:9:12"},{"kind":"number","nativeSrc":"479:2:12","nodeType":"YulLiteral","src":"479:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"464:3:12","nodeType":"YulIdentifier","src":"464:3:12"},"nativeSrc":"464:18:12","nodeType":"YulFunctionCall","src":"464:18:12"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"434:29:12","nodeType":"YulIdentifier","src":"434:29:12"},"nativeSrc":"434:49:12","nodeType":"YulFunctionCall","src":"434:49:12"},"variableNames":[{"name":"value1","nativeSrc":"424:6:12","nodeType":"YulIdentifier","src":"424:6:12"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nativeSrc":"196:293:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"252:9:12","nodeType":"YulTypedName","src":"252:9:12","type":""},{"name":"dataEnd","nativeSrc":"263:7:12","nodeType":"YulTypedName","src":"263:7:12","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"275:6:12","nodeType":"YulTypedName","src":"275:6:12","type":""},{"name":"value1","nativeSrc":"283:6:12","nodeType":"YulTypedName","src":"283:6:12","type":""}],"src":"196:293:12"},{"body":{"nativeSrc":"668:169:12","nodeType":"YulBlock","src":"668:169:12","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"685:9:12","nodeType":"YulIdentifier","src":"685:9:12"},{"kind":"number","nativeSrc":"696:2:12","nodeType":"YulLiteral","src":"696:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"678:6:12","nodeType":"YulIdentifier","src":"678:6:12"},"nativeSrc":"678:21:12","nodeType":"YulFunctionCall","src":"678:21:12"},"nativeSrc":"678:21:12","nodeType":"YulExpressionStatement","src":"678:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"719:9:12","nodeType":"YulIdentifier","src":"719:9:12"},{"kind":"number","nativeSrc":"730:2:12","nodeType":"YulLiteral","src":"730:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"715:3:12","nodeType":"YulIdentifier","src":"715:3:12"},"nativeSrc":"715:18:12","nodeType":"YulFunctionCall","src":"715:18:12"},{"kind":"number","nativeSrc":"735:2:12","nodeType":"YulLiteral","src":"735:2:12","type":"","value":"19"}],"functionName":{"name":"mstore","nativeSrc":"708:6:12","nodeType":"YulIdentifier","src":"708:6:12"},"nativeSrc":"708:30:12","nodeType":"YulFunctionCall","src":"708:30:12"},"nativeSrc":"708:30:12","nodeType":"YulExpressionStatement","src":"708:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"758:9:12","nodeType":"YulIdentifier","src":"758:9:12"},{"kind":"number","nativeSrc":"769:2:12","nodeType":"YulLiteral","src":"769:2:12","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"754:3:12","nodeType":"YulIdentifier","src":"754:3:12"},"nativeSrc":"754:18:12","nodeType":"YulFunctionCall","src":"754:18:12"},{"hexValue":"416c726561647920696e697469616c697a6564","kind":"string","nativeSrc":"774:21:12","nodeType":"YulLiteral","src":"774:21:12","type":"","value":"Already initialized"}],"functionName":{"name":"mstore","nativeSrc":"747:6:12","nodeType":"YulIdentifier","src":"747:6:12"},"nativeSrc":"747:49:12","nodeType":"YulFunctionCall","src":"747:49:12"},"nativeSrc":"747:49:12","nodeType":"YulExpressionStatement","src":"747:49:12"},{"nativeSrc":"805:26:12","nodeType":"YulAssignment","src":"805:26:12","value":{"arguments":[{"name":"headStart","nativeSrc":"817:9:12","nodeType":"YulIdentifier","src":"817:9:12"},{"kind":"number","nativeSrc":"828:2:12","nodeType":"YulLiteral","src":"828:2:12","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"813:3:12","nodeType":"YulIdentifier","src":"813:3:12"},"nativeSrc":"813:18:12","nodeType":"YulFunctionCall","src":"813:18:12"},"variableNames":[{"name":"tail","nativeSrc":"805:4:12","nodeType":"YulIdentifier","src":"805:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"494:343:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"645:9:12","nodeType":"YulTypedName","src":"645:9:12","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"659:4:12","nodeType":"YulTypedName","src":"659:4:12","type":""}],"src":"494:343:12"},{"body":{"nativeSrc":"1016:173:12","nodeType":"YulBlock","src":"1016:173:12","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1033:9:12","nodeType":"YulIdentifier","src":"1033:9:12"},{"kind":"number","nativeSrc":"1044:2:12","nodeType":"YulLiteral","src":"1044:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1026:6:12","nodeType":"YulIdentifier","src":"1026:6:12"},"nativeSrc":"1026:21:12","nodeType":"YulFunctionCall","src":"1026:21:12"},"nativeSrc":"1026:21:12","nodeType":"YulExpressionStatement","src":"1026:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1067:9:12","nodeType":"YulIdentifier","src":"1067:9:12"},{"kind":"number","nativeSrc":"1078:2:12","nodeType":"YulLiteral","src":"1078:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1063:3:12","nodeType":"YulIdentifier","src":"1063:3:12"},"nativeSrc":"1063:18:12","nodeType":"YulFunctionCall","src":"1063:18:12"},{"kind":"number","nativeSrc":"1083:2:12","nodeType":"YulLiteral","src":"1083:2:12","type":"","value":"23"}],"functionName":{"name":"mstore","nativeSrc":"1056:6:12","nodeType":"YulIdentifier","src":"1056:6:12"},"nativeSrc":"1056:30:12","nodeType":"YulFunctionCall","src":"1056:30:12"},"nativeSrc":"1056:30:12","nodeType":"YulExpressionStatement","src":"1056:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1106:9:12","nodeType":"YulIdentifier","src":"1106:9:12"},{"kind":"number","nativeSrc":"1117:2:12","nodeType":"YulLiteral","src":"1117:2:12","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1102:3:12","nodeType":"YulIdentifier","src":"1102:3:12"},"nativeSrc":"1102:18:12","nodeType":"YulFunctionCall","src":"1102:18:12"},{"hexValue":"50726f7879206973206e6f74206120636f6e7472616374","kind":"string","nativeSrc":"1122:25:12","nodeType":"YulLiteral","src":"1122:25:12","type":"","value":"Proxy is not a contract"}],"functionName":{"name":"mstore","nativeSrc":"1095:6:12","nodeType":"YulIdentifier","src":"1095:6:12"},"nativeSrc":"1095:53:12","nodeType":"YulFunctionCall","src":"1095:53:12"},"nativeSrc":"1095:53:12","nodeType":"YulExpressionStatement","src":"1095:53:12"},{"nativeSrc":"1157:26:12","nodeType":"YulAssignment","src":"1157:26:12","value":{"arguments":[{"name":"headStart","nativeSrc":"1169:9:12","nodeType":"YulIdentifier","src":"1169:9:12"},{"kind":"number","nativeSrc":"1180:2:12","nodeType":"YulLiteral","src":"1180:2:12","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1165:3:12","nodeType":"YulIdentifier","src":"1165:3:12"},"nativeSrc":"1165:18:12","nodeType":"YulFunctionCall","src":"1165:18:12"},"variableNames":[{"name":"tail","nativeSrc":"1157:4:12","nodeType":"YulIdentifier","src":"1157:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_547a8a3231e1f1e0d6e27abe234d0de412a38d4b4c4168a0b714c57c27267f67__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"842:347:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"993:9:12","nodeType":"YulTypedName","src":"993:9:12","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1007:4:12","nodeType":"YulTypedName","src":"1007:4:12","type":""}],"src":"842:347:12"},{"body":{"nativeSrc":"1368:173:12","nodeType":"YulBlock","src":"1368:173:12","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1385:9:12","nodeType":"YulIdentifier","src":"1385:9:12"},{"kind":"number","nativeSrc":"1396:2:12","nodeType":"YulLiteral","src":"1396:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1378:6:12","nodeType":"YulIdentifier","src":"1378:6:12"},"nativeSrc":"1378:21:12","nodeType":"YulFunctionCall","src":"1378:21:12"},"nativeSrc":"1378:21:12","nodeType":"YulExpressionStatement","src":"1378:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1419:9:12","nodeType":"YulIdentifier","src":"1419:9:12"},{"kind":"number","nativeSrc":"1430:2:12","nodeType":"YulLiteral","src":"1430:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1415:3:12","nodeType":"YulIdentifier","src":"1415:3:12"},"nativeSrc":"1415:18:12","nodeType":"YulFunctionCall","src":"1415:18:12"},{"kind":"number","nativeSrc":"1435:2:12","nodeType":"YulLiteral","src":"1435:2:12","type":"","value":"23"}],"functionName":{"name":"mstore","nativeSrc":"1408:6:12","nodeType":"YulIdentifier","src":"1408:6:12"},"nativeSrc":"1408:30:12","nodeType":"YulFunctionCall","src":"1408:30:12"},"nativeSrc":"1408:30:12","nodeType":"YulExpressionStatement","src":"1408:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1458:9:12","nodeType":"YulIdentifier","src":"1458:9:12"},{"kind":"number","nativeSrc":"1469:2:12","nodeType":"YulLiteral","src":"1469:2:12","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1454:3:12","nodeType":"YulIdentifier","src":"1454:3:12"},"nativeSrc":"1454:18:12","nodeType":"YulFunctionCall","src":"1454:18:12"},{"hexValue":"4c6f676963206973206e6f74206120636f6e7472616374","kind":"string","nativeSrc":"1474:25:12","nodeType":"YulLiteral","src":"1474:25:12","type":"","value":"Logic is not a contract"}],"functionName":{"name":"mstore","nativeSrc":"1447:6:12","nodeType":"YulIdentifier","src":"1447:6:12"},"nativeSrc":"1447:53:12","nodeType":"YulFunctionCall","src":"1447:53:12"},"nativeSrc":"1447:53:12","nodeType":"YulExpressionStatement","src":"1447:53:12"},{"nativeSrc":"1509:26:12","nodeType":"YulAssignment","src":"1509:26:12","value":{"arguments":[{"name":"headStart","nativeSrc":"1521:9:12","nodeType":"YulIdentifier","src":"1521:9:12"},{"kind":"number","nativeSrc":"1532:2:12","nodeType":"YulLiteral","src":"1532:2:12","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1517:3:12","nodeType":"YulIdentifier","src":"1517:3:12"},"nativeSrc":"1517:18:12","nodeType":"YulFunctionCall","src":"1517:18:12"},"variableNames":[{"name":"tail","nativeSrc":"1509:4:12","nodeType":"YulIdentifier","src":"1509:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_a45d120a472d0f20a2778eb02314826f5d7ba00dc83759a3782d11ef9a5ace5c__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"1194:347:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1345:9:12","nodeType":"YulTypedName","src":"1345:9:12","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1359:4:12","nodeType":"YulTypedName","src":"1359:4:12","type":""}],"src":"1194:347:12"},{"body":{"nativeSrc":"1647:102:12","nodeType":"YulBlock","src":"1647:102:12","statements":[{"nativeSrc":"1657:26:12","nodeType":"YulAssignment","src":"1657:26:12","value":{"arguments":[{"name":"headStart","nativeSrc":"1669:9:12","nodeType":"YulIdentifier","src":"1669:9:12"},{"kind":"number","nativeSrc":"1680:2:12","nodeType":"YulLiteral","src":"1680:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1665:3:12","nodeType":"YulIdentifier","src":"1665:3:12"},"nativeSrc":"1665:18:12","nodeType":"YulFunctionCall","src":"1665:18:12"},"variableNames":[{"name":"tail","nativeSrc":"1657:4:12","nodeType":"YulIdentifier","src":"1657:4:12"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1699:9:12","nodeType":"YulIdentifier","src":"1699:9:12"},{"arguments":[{"name":"value0","nativeSrc":"1714:6:12","nodeType":"YulIdentifier","src":"1714:6:12"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1730:3:12","nodeType":"YulLiteral","src":"1730:3:12","type":"","value":"160"},{"kind":"number","nativeSrc":"1735:1:12","nodeType":"YulLiteral","src":"1735:1:12","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1726:3:12","nodeType":"YulIdentifier","src":"1726:3:12"},"nativeSrc":"1726:11:12","nodeType":"YulFunctionCall","src":"1726:11:12"},{"kind":"number","nativeSrc":"1739:1:12","nodeType":"YulLiteral","src":"1739:1:12","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1722:3:12","nodeType":"YulIdentifier","src":"1722:3:12"},"nativeSrc":"1722:19:12","nodeType":"YulFunctionCall","src":"1722:19:12"}],"functionName":{"name":"and","nativeSrc":"1710:3:12","nodeType":"YulIdentifier","src":"1710:3:12"},"nativeSrc":"1710:32:12","nodeType":"YulFunctionCall","src":"1710:32:12"}],"functionName":{"name":"mstore","nativeSrc":"1692:6:12","nodeType":"YulIdentifier","src":"1692:6:12"},"nativeSrc":"1692:51:12","nodeType":"YulFunctionCall","src":"1692:51:12"},"nativeSrc":"1692:51:12","nodeType":"YulExpressionStatement","src":"1692:51:12"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1546:203:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1616:9:12","nodeType":"YulTypedName","src":"1616:9:12","type":""},{"name":"value0","nativeSrc":"1627:6:12","nodeType":"YulTypedName","src":"1627:6:12","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1638:4:12","nodeType":"YulTypedName","src":"1638:4:12","type":""}],"src":"1546:203:12"},{"body":{"nativeSrc":"1901:366:12","nodeType":"YulBlock","src":"1901:366:12","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1918:9:12","nodeType":"YulIdentifier","src":"1918:9:12"},{"arguments":[{"name":"value0","nativeSrc":"1933:6:12","nodeType":"YulIdentifier","src":"1933:6:12"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1949:3:12","nodeType":"YulLiteral","src":"1949:3:12","type":"","value":"160"},{"kind":"number","nativeSrc":"1954:1:12","nodeType":"YulLiteral","src":"1954:1:12","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1945:3:12","nodeType":"YulIdentifier","src":"1945:3:12"},"nativeSrc":"1945:11:12","nodeType":"YulFunctionCall","src":"1945:11:12"},{"kind":"number","nativeSrc":"1958:1:12","nodeType":"YulLiteral","src":"1958:1:12","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1941:3:12","nodeType":"YulIdentifier","src":"1941:3:12"},"nativeSrc":"1941:19:12","nodeType":"YulFunctionCall","src":"1941:19:12"}],"functionName":{"name":"and","nativeSrc":"1929:3:12","nodeType":"YulIdentifier","src":"1929:3:12"},"nativeSrc":"1929:32:12","nodeType":"YulFunctionCall","src":"1929:32:12"}],"functionName":{"name":"mstore","nativeSrc":"1911:6:12","nodeType":"YulIdentifier","src":"1911:6:12"},"nativeSrc":"1911:51:12","nodeType":"YulFunctionCall","src":"1911:51:12"},"nativeSrc":"1911:51:12","nodeType":"YulExpressionStatement","src":"1911:51:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1982:9:12","nodeType":"YulIdentifier","src":"1982:9:12"},{"kind":"number","nativeSrc":"1993:2:12","nodeType":"YulLiteral","src":"1993:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1978:3:12","nodeType":"YulIdentifier","src":"1978:3:12"},"nativeSrc":"1978:18:12","nodeType":"YulFunctionCall","src":"1978:18:12"},{"kind":"number","nativeSrc":"1998:2:12","nodeType":"YulLiteral","src":"1998:2:12","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"1971:6:12","nodeType":"YulIdentifier","src":"1971:6:12"},"nativeSrc":"1971:30:12","nodeType":"YulFunctionCall","src":"1971:30:12"},"nativeSrc":"1971:30:12","nodeType":"YulExpressionStatement","src":"1971:30:12"},{"nativeSrc":"2010:27:12","nodeType":"YulVariableDeclaration","src":"2010:27:12","value":{"arguments":[{"name":"value1","nativeSrc":"2030:6:12","nodeType":"YulIdentifier","src":"2030:6:12"}],"functionName":{"name":"mload","nativeSrc":"2024:5:12","nodeType":"YulIdentifier","src":"2024:5:12"},"nativeSrc":"2024:13:12","nodeType":"YulFunctionCall","src":"2024:13:12"},"variables":[{"name":"length","nativeSrc":"2014:6:12","nodeType":"YulTypedName","src":"2014:6:12","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2057:9:12","nodeType":"YulIdentifier","src":"2057:9:12"},{"kind":"number","nativeSrc":"2068:2:12","nodeType":"YulLiteral","src":"2068:2:12","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2053:3:12","nodeType":"YulIdentifier","src":"2053:3:12"},"nativeSrc":"2053:18:12","nodeType":"YulFunctionCall","src":"2053:18:12"},{"name":"length","nativeSrc":"2073:6:12","nodeType":"YulIdentifier","src":"2073:6:12"}],"functionName":{"name":"mstore","nativeSrc":"2046:6:12","nodeType":"YulIdentifier","src":"2046:6:12"},"nativeSrc":"2046:34:12","nodeType":"YulFunctionCall","src":"2046:34:12"},"nativeSrc":"2046:34:12","nodeType":"YulExpressionStatement","src":"2046:34:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2099:9:12","nodeType":"YulIdentifier","src":"2099:9:12"},{"kind":"number","nativeSrc":"2110:2:12","nodeType":"YulLiteral","src":"2110:2:12","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2095:3:12","nodeType":"YulIdentifier","src":"2095:3:12"},"nativeSrc":"2095:18:12","nodeType":"YulFunctionCall","src":"2095:18:12"},{"arguments":[{"name":"value1","nativeSrc":"2119:6:12","nodeType":"YulIdentifier","src":"2119:6:12"},{"kind":"number","nativeSrc":"2127:2:12","nodeType":"YulLiteral","src":"2127:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2115:3:12","nodeType":"YulIdentifier","src":"2115:3:12"},"nativeSrc":"2115:15:12","nodeType":"YulFunctionCall","src":"2115:15:12"},{"name":"length","nativeSrc":"2132:6:12","nodeType":"YulIdentifier","src":"2132:6:12"}],"functionName":{"name":"mcopy","nativeSrc":"2089:5:12","nodeType":"YulIdentifier","src":"2089:5:12"},"nativeSrc":"2089:50:12","nodeType":"YulFunctionCall","src":"2089:50:12"},"nativeSrc":"2089:50:12","nodeType":"YulExpressionStatement","src":"2089:50:12"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2163:9:12","nodeType":"YulIdentifier","src":"2163:9:12"},{"name":"length","nativeSrc":"2174:6:12","nodeType":"YulIdentifier","src":"2174:6:12"}],"functionName":{"name":"add","nativeSrc":"2159:3:12","nodeType":"YulIdentifier","src":"2159:3:12"},"nativeSrc":"2159:22:12","nodeType":"YulFunctionCall","src":"2159:22:12"},{"kind":"number","nativeSrc":"2183:2:12","nodeType":"YulLiteral","src":"2183:2:12","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2155:3:12","nodeType":"YulIdentifier","src":"2155:3:12"},"nativeSrc":"2155:31:12","nodeType":"YulFunctionCall","src":"2155:31:12"},{"kind":"number","nativeSrc":"2188:1:12","nodeType":"YulLiteral","src":"2188:1:12","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2148:6:12","nodeType":"YulIdentifier","src":"2148:6:12"},"nativeSrc":"2148:42:12","nodeType":"YulFunctionCall","src":"2148:42:12"},"nativeSrc":"2148:42:12","nodeType":"YulExpressionStatement","src":"2148:42:12"},{"nativeSrc":"2199:62:12","nodeType":"YulAssignment","src":"2199:62:12","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2215:9:12","nodeType":"YulIdentifier","src":"2215:9:12"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2234:6:12","nodeType":"YulIdentifier","src":"2234:6:12"},{"kind":"number","nativeSrc":"2242:2:12","nodeType":"YulLiteral","src":"2242:2:12","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2230:3:12","nodeType":"YulIdentifier","src":"2230:3:12"},"nativeSrc":"2230:15:12","nodeType":"YulFunctionCall","src":"2230:15:12"},{"arguments":[{"kind":"number","nativeSrc":"2251:2:12","nodeType":"YulLiteral","src":"2251:2:12","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2247:3:12","nodeType":"YulIdentifier","src":"2247:3:12"},"nativeSrc":"2247:7:12","nodeType":"YulFunctionCall","src":"2247:7:12"}],"functionName":{"name":"and","nativeSrc":"2226:3:12","nodeType":"YulIdentifier","src":"2226:3:12"},"nativeSrc":"2226:29:12","nodeType":"YulFunctionCall","src":"2226:29:12"}],"functionName":{"name":"add","nativeSrc":"2211:3:12","nodeType":"YulIdentifier","src":"2211:3:12"},"nativeSrc":"2211:45:12","nodeType":"YulFunctionCall","src":"2211:45:12"},{"kind":"number","nativeSrc":"2258:2:12","nodeType":"YulLiteral","src":"2258:2:12","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2207:3:12","nodeType":"YulIdentifier","src":"2207:3:12"},"nativeSrc":"2207:54:12","nodeType":"YulFunctionCall","src":"2207:54:12"},"variableNames":[{"name":"tail","nativeSrc":"2199:4:12","nodeType":"YulIdentifier","src":"2199:4:12"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"1754:513:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1862:9:12","nodeType":"YulTypedName","src":"1862:9:12","type":""},{"name":"value1","nativeSrc":"1873:6:12","nodeType":"YulTypedName","src":"1873:6:12","type":""},{"name":"value0","nativeSrc":"1881:6:12","nodeType":"YulTypedName","src":"1881:6:12","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1892:4:12","nodeType":"YulTypedName","src":"1892:4:12","type":""}],"src":"1754:513:12"}]},"contents":"{\n { }\n function abi_decode_address_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address_fromMemory(headStart)\n value1 := abi_decode_address_fromMemory(add(headStart, 32))\n }\n function abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 19)\n mstore(add(headStart, 64), \"Already initialized\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_547a8a3231e1f1e0d6e27abe234d0de412a38d4b4c4168a0b714c57c27267f67__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 23)\n mstore(add(headStart, 64), \"Proxy is not a contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_a45d120a472d0f20a2778eb02314826f5d7ba00dc83759a3782d11ef9a5ace5c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 23)\n mstore(add(headStart, 64), \"Logic is not a contract\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), 64)\n let length := mload(value1)\n mstore(add(headStart, 64), length)\n mcopy(add(headStart, 96), add(value1, 32), length)\n mstore(add(add(headStart, length), 96), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n }\n}","id":12,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561000f575f5ffd5b50604051610ccf380380610ccf83398101604081905261002e9161028d565b818161003a8282610043565b50505050610302565b61004d8282610051565b5050565b5f546001600160a01b0316156100ae5760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b03811615610136575f816001600160a01b03163b116101165760405162461bcd60e51b815260206004820152601760248201527f50726f7879206973206e6f74206120636f6e747261637400000000000000000060448201526064016100a5565b5f80546001600160a01b0383166001600160a01b03199091161790555050565b5f826001600160a01b03163b1161018f5760405162461bcd60e51b815260206004820152601760248201527f4c6f676963206973206e6f74206120636f6e747261637400000000000000000060448201526064016100a5565b6040513360248201819052905f9060440160408051601f198184030181529181526020820180516001600160e01b031663189acdbd60e31b179052519091505f90859083906101dd90610265565b6101e89291906102be565b604051809103905ff080158015610201573d5f5f3e3d5ffd5b505f80546001600160a01b0319166001600160a01b0383811691821790925560405186831681529293509087169130907fdd2b45b3a7206829b6ff077a468ad28c22d407de65990543cb4e4a8e8f8ba5c19060200160405180910390a45050505050565b6103dd806108f283390190565b80516001600160a01b0381168114610288575f5ffd5b919050565b5f5f6040838503121561029e575f5ffd5b6102a783610272565b91506102b560208401610272565b90509250929050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b6105e38061030f5f395ff3fe608060405260043610610033575f3560e01c80632be277aa14610037578063666c6f23146100585780637d4f064e1461006b575b5f5ffd5b348015610042575f5ffd5b50610056610051366004610436565b6100bf565b005b610056610066366004610474565b61024a565b348015610076575f5ffd5b505f546100969073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6040805160018082528183019092525f916020808301908036833701905050905083815f815181106100f3576100f3610496565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506101368161038c565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8581166024830152604482018490525f91908516906323b872dd906064016020604051808303815f875af11580156101b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d591906104c3565b905080610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e61626c6520746f2070617920746f6b656e7300000000000000000000000060448201526064015b60405180910390fd5b5050505050565b6040805160018082528183019092525f916020808301908036833701905050905081815f8151811061027e5761027e610496565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506102c18161038c565b5f8273ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f8114610317576040519150601f19603f3d011682016040523d82523d5f602084013e61031c565b606091505b5050905080610387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e61626c6520746f2070617920657468657273000000000000000000000000604482015260640161023a565b505050565b5f80546040517f6cfd0c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691636cfd0c09916103e9913391349190369088906004016104e2565b5f604051808303815f87803b158015610400575f5ffd5b505af1158015610243573d5f5f3e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610433575f5ffd5b50565b5f5f5f60608486031215610448575f5ffd5b833561045381610412565b9250602084013561046381610412565b929592945050506040919091013590565b5f60208284031215610484575f5ffd5b813561048f81610412565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156104d3575f5ffd5b8151801515811461048f575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260806040820152826080820152828460a08301375f60a084830181018290527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683018381038201606085015284519181018290526020850191839160c001905b8083101561059f5773ffffffffffffffffffffffffffffffffffffffff8451168252602082019150602084019350600183019250610566565b50999850505050505050505056fea264697066735822122087c461a3df0071ee8b59e067faed4b35dc0fe7089dc2e91b9f434c4494dd06b664736f6c634300081c003360806040526040516103dd3803806103dd8339810160408190526100229161023c565b61002c8282610033565b5050610321565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030b565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024d575f5ffd5b82516001600160a01b0381168114610263575f5ffd5b60208401519092506001600160401b0381111561027e575f5ffd5b8301601f8101851361028e575f5ffd5b80516001600160401b038111156102a7576102a7610228565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d5576102d5610228565b6040528181528282016020018710156102ec575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60b08061032d5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffdfea2646970667358221220135bdee684c63adc98111b5f8ef1566e2b1841823b3a85d9ed6bc17a6c0ebb2064736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xCCF CODESIZE SUB DUP1 PUSH2 0xCCF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x28D JUMP JUMPDEST DUP2 DUP2 PUSH2 0x3A DUP3 DUP3 PUSH2 0x43 JUMP JUMPDEST POP POP POP POP PUSH2 0x302 JUMP JUMPDEST PUSH2 0x4D DUP3 DUP3 PUSH2 0x51 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0xAE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x136 JUMPI PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT PUSH2 0x116 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F7879206973206E6F74206120636F6E7472616374000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA5 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT PUSH2 0x18F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C6F676963206973206E6F74206120636F6E7472616374000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xA5 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 PUSH0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x189ACDBD PUSH1 0xE3 SHL OR SWAP1 MSTORE MLOAD SWAP1 SWAP2 POP PUSH0 SWAP1 DUP6 SWAP1 DUP4 SWAP1 PUSH2 0x1DD SWAP1 PUSH2 0x265 JUMP JUMPDEST PUSH2 0x1E8 SWAP3 SWAP2 SWAP1 PUSH2 0x2BE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x201 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP PUSH0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x40 MLOAD DUP7 DUP4 AND DUP2 MSTORE SWAP3 SWAP4 POP SWAP1 DUP8 AND SWAP2 ADDRESS SWAP1 PUSH32 0xDD2B45B3A7206829B6FF077A468AD28C22D407DE65990543CB4E4A8E8F8BA5C1 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3DD DUP1 PUSH2 0x8F2 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x288 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x29E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2A7 DUP4 PUSH2 0x272 JUMP JUMPDEST SWAP2 POP PUSH2 0x2B5 PUSH1 0x20 DUP5 ADD PUSH2 0x272 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 DUP3 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE DUP1 PUSH1 0x20 DUP6 ADD PUSH1 0x60 DUP6 ADD MCOPY PUSH0 PUSH1 0x60 DUP3 DUP6 ADD ADD MSTORE PUSH1 0x60 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP5 ADD ADD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x5E3 DUP1 PUSH2 0x30F PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x33 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2BE277AA EQ PUSH2 0x37 JUMPI DUP1 PUSH4 0x666C6F23 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0x7D4F064E EQ PUSH2 0x6B JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x56 PUSH2 0x51 CALLDATASIZE PUSH1 0x4 PUSH2 0x436 JUMP JUMPDEST PUSH2 0xBF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x56 PUSH2 0x66 CALLDATASIZE PUSH1 0x4 PUSH2 0x474 JUMP JUMPDEST PUSH2 0x24A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 SLOAD PUSH2 0x96 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 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 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xF3 JUMPI PUSH2 0xF3 PUSH2 0x496 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x136 DUP2 PUSH2 0x38C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE PUSH0 SWAP2 SWAP1 DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D5 SWAP2 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2070617920746F6B656E73000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP2 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x27E JUMPI PUSH2 0x27E PUSH2 0x496 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x2C1 DUP2 PUSH2 0x38C JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLVALUE PUSH1 0x40 MLOAD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x317 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x387 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2070617920657468657273000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6CFD0C0900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x6CFD0C09 SWAP2 PUSH2 0x3E9 SWAP2 CALLER SWAP2 CALLVALUE SWAP2 SWAP1 CALLDATASIZE SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x400 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x243 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x433 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x448 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x453 DUP2 PUSH2 0x412 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x463 DUP2 PUSH2 0x412 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x484 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x48F DUP2 PUSH2 0x412 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x48F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0xA0 DUP5 DUP4 ADD DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP7 ADD AND DUP4 ADD DUP4 DUP2 SUB DUP3 ADD PUSH1 0x60 DUP6 ADD MSTORE DUP5 MLOAD SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x20 DUP6 ADD SWAP2 DUP4 SWAP2 PUSH1 0xC0 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x59F JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 MLOAD AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0x566 JUMP JUMPDEST POP SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP8 0xC4 PUSH2 0xA3DF STOP PUSH18 0xEE8B59E067FAED4B35DC0FE7089DC2E91B9F NUMBER 0x4C PREVRANDAO SWAP5 0xDD MOD 0xB6 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x3DD CODESIZE SUB DUP1 PUSH2 0x3DD DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x23C JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x321 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x91 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x85 JUMPI PUSH2 0x80 DUP3 DUP3 PUSH2 0x10C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8D PUSH2 0x17F JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0xCB JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x128 SWAP2 SWAP1 PUSH2 0x30B JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x160 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x165 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x176 DUP6 DUP4 DUP4 PUSH2 0x1A0 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19E JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B5 JUMPI PUSH2 0x1B0 DUP3 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x1F8 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1F5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xC2 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x20F JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x263 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x27E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x28E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2A7 JUMPI PUSH2 0x2A7 PUSH2 0x228 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2D5 JUMPI PUSH2 0x2D5 PUSH2 0x228 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x2EC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xB0 DUP1 PUSH2 0x32D PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x5D JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x58 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x76 JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT JUMPDEST 0xDE 0xE6 DUP5 0xC6 GASPRICE 0xDC SWAP9 GT SHL PUSH0 DUP15 CALL JUMP PUSH15 0x2B1841823B3A85D9ED6BC17A6C0EBB KECCAK256 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"389:1167:10:-:0;;;434:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;537:30;569;2058:81:9;537:30:10;569;2058:17:9;:81::i;:::-;1956:190;;434:169:10;;389:1167;;2152:124:9;2228:41;2256:5;2263;2228:27;:41::i;:::-;2152:124;;:::o;2282:950::-;2413:1;2384:16;-1:-1:-1;;;;;2384:16:9;2376:39;2368:71;;;;-1:-1:-1;;;2368:71:9;;696:2:12;2368:71:9;;;678:21:12;735:2;715:18;;;708:30;774:21;754:18;;;747:49;813:18;;2368:71:9;;;;;;;;;-1:-1:-1;;;;;2454:19:9;;;2450:776;;2573:1;2553:5;-1:-1:-1;;;;;2553:17:9;;:21;2545:57;;;;-1:-1:-1;;;2545:57:9;;1044:2:12;2545:57:9;;;1026:21:12;1083:2;1063:18;;;1056:30;1122:25;1102:18;;;1095:53;1165:18;;2545:57:9;842:347:12;2545:57:9;2616:16;:43;;-1:-1:-1;;;;;2616:43:9;;-1:-1:-1;;;;;;2616:43:9;;;;;;2152:124;;:::o;2450:776::-;2770:1;2750:5;-1:-1:-1;;;;;2750:17:9;;:21;2742:57;;;;-1:-1:-1;;;2742:57:9;;1396:2:12;2742:57:9;;;1378:21:12;1435:2;1415:18;;;1408:30;1474:25;1454:18;;;1447:53;1517:18;;2742:57:9;1194:347:12;2742:57:9;2939:60;;2837:10;2939:60;;;1692:51:12;;;2837:10:9;2814:20;;1665:18:12;;2939:60:9;;;-1:-1:-1;;2939:60:9;;;;;;;;;;;;;;-1:-1:-1;;;;;2939:60:9;-1:-1:-1;;;2939:60:9;;;3038:29;2939:60;;-1:-1:-1;;;3055:5:9;;2939:60;;3038:29;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3083:16:9;:44;;-1:-1:-1;;;;;;3083:44:9;-1:-1:-1;;;;;3083:44:9;;;;;;;;;3147:68;;1710:32:12;;;1692:51;;3083:44:9;;-1:-1:-1;3147:68:9;;;;3180:4;;3147:68;;1680:2:12;1665:18;3147:68:9;;;;;;;2676:550;;;2282:950;;:::o;389:1167:10:-;;;;;;;;:::o;14:177:12:-;93:13;;-1:-1:-1;;;;;135:31:12;;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;1754:513::-;1958:1;1954;1949:3;1945:11;1941:19;1933:6;1929:32;1918:9;1911:51;1998:2;1993;1982:9;1978:18;1971:30;1892:4;2030:6;2024:13;2073:6;2068:2;2057:9;2053:18;2046:34;2132:6;2127:2;2119:6;2115:15;2110:2;2099:9;2095:18;2089:50;2188:1;2183:2;2174:6;2163:9;2159:22;2155:31;2148:42;2258:2;2251;2247:7;2242:2;2234:6;2230:15;2226:29;2215:9;2211:45;2207:54;2199:62;;;1754:513;;;;;:::o;:::-;389:1167:10;;;;;;"},"deployedBytecode":{"functionDebugData":{"@payEthers_1165":{"entryPoint":586,"id":1165,"parameterSlots":1,"returnSlots":0},"@payTokens_1214":{"entryPoint":191,"id":1214,"parameterSlots":3,"returnSlots":0},"@requireTrustline_1084":{"entryPoint":908,"id":1084,"parameterSlots":1,"returnSlots":0},"@validationEngine_904":{"entryPoint":null,"id":904,"parameterSlots":0,"returnSlots":0},"abi_decode_tuple_t_address_payable":{"entryPoint":1140,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":1078,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":1219,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_bytes_calldata_ptr_t_array$_t_address_$dyn_memory_ptr__to_t_address_t_uint256_t_bytes_memory_ptr_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":1250,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_contract$_IValidationEngine_$1308__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3ada5563b608b4f12ef921b7de8a60eef3445e269146e5af08d99e18136078aa__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c056992782810757ac218a0ddf8c5ba73b3c93859b191993a129d4ce88ee4211__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x32":{"entryPoint":1174,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":1042,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:4372:12","nodeType":"YulBlock","src":"0:4372:12","statements":[{"nativeSrc":"6:3:12","nodeType":"YulBlock","src":"6:3:12","statements":[]},{"body":{"nativeSrc":"59:109:12","nodeType":"YulBlock","src":"59:109:12","statements":[{"body":{"nativeSrc":"146:16:12","nodeType":"YulBlock","src":"146:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"155:1:12","nodeType":"YulLiteral","src":"155:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"158:1:12","nodeType":"YulLiteral","src":"158:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"148:6:12","nodeType":"YulIdentifier","src":"148:6:12"},"nativeSrc":"148:12:12","nodeType":"YulFunctionCall","src":"148:12:12"},"nativeSrc":"148:12:12","nodeType":"YulExpressionStatement","src":"148:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"82:5:12","nodeType":"YulIdentifier","src":"82:5:12"},{"arguments":[{"name":"value","nativeSrc":"93:5:12","nodeType":"YulIdentifier","src":"93:5:12"},{"kind":"number","nativeSrc":"100:42:12","nodeType":"YulLiteral","src":"100:42:12","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"89:3:12","nodeType":"YulIdentifier","src":"89:3:12"},"nativeSrc":"89:54:12","nodeType":"YulFunctionCall","src":"89:54:12"}],"functionName":{"name":"eq","nativeSrc":"79:2:12","nodeType":"YulIdentifier","src":"79:2:12"},"nativeSrc":"79:65:12","nodeType":"YulFunctionCall","src":"79:65:12"}],"functionName":{"name":"iszero","nativeSrc":"72:6:12","nodeType":"YulIdentifier","src":"72:6:12"},"nativeSrc":"72:73:12","nodeType":"YulFunctionCall","src":"72:73:12"},"nativeSrc":"69:93:12","nodeType":"YulIf","src":"69:93:12"}]},"name":"validator_revert_address","nativeSrc":"14:154:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"48:5:12","nodeType":"YulTypedName","src":"48:5:12","type":""}],"src":"14:154:12"},{"body":{"nativeSrc":"277:352:12","nodeType":"YulBlock","src":"277:352:12","statements":[{"body":{"nativeSrc":"323:16:12","nodeType":"YulBlock","src":"323:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"332:1:12","nodeType":"YulLiteral","src":"332:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"335:1:12","nodeType":"YulLiteral","src":"335:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"325:6:12","nodeType":"YulIdentifier","src":"325:6:12"},"nativeSrc":"325:12:12","nodeType":"YulFunctionCall","src":"325:12:12"},"nativeSrc":"325:12:12","nodeType":"YulExpressionStatement","src":"325:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"298:7:12","nodeType":"YulIdentifier","src":"298:7:12"},{"name":"headStart","nativeSrc":"307:9:12","nodeType":"YulIdentifier","src":"307:9:12"}],"functionName":{"name":"sub","nativeSrc":"294:3:12","nodeType":"YulIdentifier","src":"294:3:12"},"nativeSrc":"294:23:12","nodeType":"YulFunctionCall","src":"294:23:12"},{"kind":"number","nativeSrc":"319:2:12","nodeType":"YulLiteral","src":"319:2:12","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"290:3:12","nodeType":"YulIdentifier","src":"290:3:12"},"nativeSrc":"290:32:12","nodeType":"YulFunctionCall","src":"290:32:12"},"nativeSrc":"287:52:12","nodeType":"YulIf","src":"287:52:12"},{"nativeSrc":"348:36:12","nodeType":"YulVariableDeclaration","src":"348:36:12","value":{"arguments":[{"name":"headStart","nativeSrc":"374:9:12","nodeType":"YulIdentifier","src":"374:9:12"}],"functionName":{"name":"calldataload","nativeSrc":"361:12:12","nodeType":"YulIdentifier","src":"361:12:12"},"nativeSrc":"361:23:12","nodeType":"YulFunctionCall","src":"361:23:12"},"variables":[{"name":"value","nativeSrc":"352:5:12","nodeType":"YulTypedName","src":"352:5:12","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"418:5:12","nodeType":"YulIdentifier","src":"418:5:12"}],"functionName":{"name":"validator_revert_address","nativeSrc":"393:24:12","nodeType":"YulIdentifier","src":"393:24:12"},"nativeSrc":"393:31:12","nodeType":"YulFunctionCall","src":"393:31:12"},"nativeSrc":"393:31:12","nodeType":"YulExpressionStatement","src":"393:31:12"},{"nativeSrc":"433:15:12","nodeType":"YulAssignment","src":"433:15:12","value":{"name":"value","nativeSrc":"443:5:12","nodeType":"YulIdentifier","src":"443:5:12"},"variableNames":[{"name":"value0","nativeSrc":"433:6:12","nodeType":"YulIdentifier","src":"433:6:12"}]},{"nativeSrc":"457:47:12","nodeType":"YulVariableDeclaration","src":"457:47:12","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"489:9:12","nodeType":"YulIdentifier","src":"489:9:12"},{"kind":"number","nativeSrc":"500:2:12","nodeType":"YulLiteral","src":"500:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"485:3:12","nodeType":"YulIdentifier","src":"485:3:12"},"nativeSrc":"485:18:12","nodeType":"YulFunctionCall","src":"485:18:12"}],"functionName":{"name":"calldataload","nativeSrc":"472:12:12","nodeType":"YulIdentifier","src":"472:12:12"},"nativeSrc":"472:32:12","nodeType":"YulFunctionCall","src":"472:32:12"},"variables":[{"name":"value_1","nativeSrc":"461:7:12","nodeType":"YulTypedName","src":"461:7:12","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"538:7:12","nodeType":"YulIdentifier","src":"538:7:12"}],"functionName":{"name":"validator_revert_address","nativeSrc":"513:24:12","nodeType":"YulIdentifier","src":"513:24:12"},"nativeSrc":"513:33:12","nodeType":"YulFunctionCall","src":"513:33:12"},"nativeSrc":"513:33:12","nodeType":"YulExpressionStatement","src":"513:33:12"},{"nativeSrc":"555:17:12","nodeType":"YulAssignment","src":"555:17:12","value":{"name":"value_1","nativeSrc":"565:7:12","nodeType":"YulIdentifier","src":"565:7:12"},"variableNames":[{"name":"value1","nativeSrc":"555:6:12","nodeType":"YulIdentifier","src":"555:6:12"}]},{"nativeSrc":"581:42:12","nodeType":"YulAssignment","src":"581:42:12","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"608:9:12","nodeType":"YulIdentifier","src":"608:9:12"},{"kind":"number","nativeSrc":"619:2:12","nodeType":"YulLiteral","src":"619:2:12","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"604:3:12","nodeType":"YulIdentifier","src":"604:3:12"},"nativeSrc":"604:18:12","nodeType":"YulFunctionCall","src":"604:18:12"}],"functionName":{"name":"calldataload","nativeSrc":"591:12:12","nodeType":"YulIdentifier","src":"591:12:12"},"nativeSrc":"591:32:12","nodeType":"YulFunctionCall","src":"591:32:12"},"variableNames":[{"name":"value2","nativeSrc":"581:6:12","nodeType":"YulIdentifier","src":"581:6:12"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"173:456:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"227:9:12","nodeType":"YulTypedName","src":"227:9:12","type":""},{"name":"dataEnd","nativeSrc":"238:7:12","nodeType":"YulTypedName","src":"238:7:12","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"250:6:12","nodeType":"YulTypedName","src":"250:6:12","type":""},{"name":"value1","nativeSrc":"258:6:12","nodeType":"YulTypedName","src":"258:6:12","type":""},{"name":"value2","nativeSrc":"266:6:12","nodeType":"YulTypedName","src":"266:6:12","type":""}],"src":"173:456:12"},{"body":{"nativeSrc":"712:177:12","nodeType":"YulBlock","src":"712:177:12","statements":[{"body":{"nativeSrc":"758:16:12","nodeType":"YulBlock","src":"758:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"767:1:12","nodeType":"YulLiteral","src":"767:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"770:1:12","nodeType":"YulLiteral","src":"770:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"760:6:12","nodeType":"YulIdentifier","src":"760:6:12"},"nativeSrc":"760:12:12","nodeType":"YulFunctionCall","src":"760:12:12"},"nativeSrc":"760:12:12","nodeType":"YulExpressionStatement","src":"760:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"733:7:12","nodeType":"YulIdentifier","src":"733:7:12"},{"name":"headStart","nativeSrc":"742:9:12","nodeType":"YulIdentifier","src":"742:9:12"}],"functionName":{"name":"sub","nativeSrc":"729:3:12","nodeType":"YulIdentifier","src":"729:3:12"},"nativeSrc":"729:23:12","nodeType":"YulFunctionCall","src":"729:23:12"},{"kind":"number","nativeSrc":"754:2:12","nodeType":"YulLiteral","src":"754:2:12","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"725:3:12","nodeType":"YulIdentifier","src":"725:3:12"},"nativeSrc":"725:32:12","nodeType":"YulFunctionCall","src":"725:32:12"},"nativeSrc":"722:52:12","nodeType":"YulIf","src":"722:52:12"},{"nativeSrc":"783:36:12","nodeType":"YulVariableDeclaration","src":"783:36:12","value":{"arguments":[{"name":"headStart","nativeSrc":"809:9:12","nodeType":"YulIdentifier","src":"809:9:12"}],"functionName":{"name":"calldataload","nativeSrc":"796:12:12","nodeType":"YulIdentifier","src":"796:12:12"},"nativeSrc":"796:23:12","nodeType":"YulFunctionCall","src":"796:23:12"},"variables":[{"name":"value","nativeSrc":"787:5:12","nodeType":"YulTypedName","src":"787:5:12","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"853:5:12","nodeType":"YulIdentifier","src":"853:5:12"}],"functionName":{"name":"validator_revert_address","nativeSrc":"828:24:12","nodeType":"YulIdentifier","src":"828:24:12"},"nativeSrc":"828:31:12","nodeType":"YulFunctionCall","src":"828:31:12"},"nativeSrc":"828:31:12","nodeType":"YulExpressionStatement","src":"828:31:12"},{"nativeSrc":"868:15:12","nodeType":"YulAssignment","src":"868:15:12","value":{"name":"value","nativeSrc":"878:5:12","nodeType":"YulIdentifier","src":"878:5:12"},"variableNames":[{"name":"value0","nativeSrc":"868:6:12","nodeType":"YulIdentifier","src":"868:6:12"}]}]},"name":"abi_decode_tuple_t_address_payable","nativeSrc":"634:255:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"678:9:12","nodeType":"YulTypedName","src":"678:9:12","type":""},{"name":"dataEnd","nativeSrc":"689:7:12","nodeType":"YulTypedName","src":"689:7:12","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"701:6:12","nodeType":"YulTypedName","src":"701:6:12","type":""}],"src":"634:255:12"},{"body":{"nativeSrc":"1021:125:12","nodeType":"YulBlock","src":"1021:125:12","statements":[{"nativeSrc":"1031:26:12","nodeType":"YulAssignment","src":"1031:26:12","value":{"arguments":[{"name":"headStart","nativeSrc":"1043:9:12","nodeType":"YulIdentifier","src":"1043:9:12"},{"kind":"number","nativeSrc":"1054:2:12","nodeType":"YulLiteral","src":"1054:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1039:3:12","nodeType":"YulIdentifier","src":"1039:3:12"},"nativeSrc":"1039:18:12","nodeType":"YulFunctionCall","src":"1039:18:12"},"variableNames":[{"name":"tail","nativeSrc":"1031:4:12","nodeType":"YulIdentifier","src":"1031:4:12"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1073:9:12","nodeType":"YulIdentifier","src":"1073:9:12"},{"arguments":[{"name":"value0","nativeSrc":"1088:6:12","nodeType":"YulIdentifier","src":"1088:6:12"},{"kind":"number","nativeSrc":"1096:42:12","nodeType":"YulLiteral","src":"1096:42:12","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1084:3:12","nodeType":"YulIdentifier","src":"1084:3:12"},"nativeSrc":"1084:55:12","nodeType":"YulFunctionCall","src":"1084:55:12"}],"functionName":{"name":"mstore","nativeSrc":"1066:6:12","nodeType":"YulIdentifier","src":"1066:6:12"},"nativeSrc":"1066:74:12","nodeType":"YulFunctionCall","src":"1066:74:12"},"nativeSrc":"1066:74:12","nodeType":"YulExpressionStatement","src":"1066:74:12"}]},"name":"abi_encode_tuple_t_contract$_IValidationEngine_$1308__to_t_address__fromStack_reversed","nativeSrc":"894:252:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"990:9:12","nodeType":"YulTypedName","src":"990:9:12","type":""},{"name":"value0","nativeSrc":"1001:6:12","nodeType":"YulTypedName","src":"1001:6:12","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1012:4:12","nodeType":"YulTypedName","src":"1012:4:12","type":""}],"src":"894:252:12"},{"body":{"nativeSrc":"1183:152:12","nodeType":"YulBlock","src":"1183:152:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1200:1:12","nodeType":"YulLiteral","src":"1200:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"1203:77:12","nodeType":"YulLiteral","src":"1203:77:12","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"1193:6:12","nodeType":"YulIdentifier","src":"1193:6:12"},"nativeSrc":"1193:88:12","nodeType":"YulFunctionCall","src":"1193:88:12"},"nativeSrc":"1193:88:12","nodeType":"YulExpressionStatement","src":"1193:88:12"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1297:1:12","nodeType":"YulLiteral","src":"1297:1:12","type":"","value":"4"},{"kind":"number","nativeSrc":"1300:4:12","nodeType":"YulLiteral","src":"1300:4:12","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"1290:6:12","nodeType":"YulIdentifier","src":"1290:6:12"},"nativeSrc":"1290:15:12","nodeType":"YulFunctionCall","src":"1290:15:12"},"nativeSrc":"1290:15:12","nodeType":"YulExpressionStatement","src":"1290:15:12"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1321:1:12","nodeType":"YulLiteral","src":"1321:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"1324:4:12","nodeType":"YulLiteral","src":"1324:4:12","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1314:6:12","nodeType":"YulIdentifier","src":"1314:6:12"},"nativeSrc":"1314:15:12","nodeType":"YulFunctionCall","src":"1314:15:12"},"nativeSrc":"1314:15:12","nodeType":"YulExpressionStatement","src":"1314:15:12"}]},"name":"panic_error_0x41","nativeSrc":"1151:184:12","nodeType":"YulFunctionDefinition","src":"1151:184:12"},{"body":{"nativeSrc":"1372:152:12","nodeType":"YulBlock","src":"1372:152:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1389:1:12","nodeType":"YulLiteral","src":"1389:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"1392:77:12","nodeType":"YulLiteral","src":"1392:77:12","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"1382:6:12","nodeType":"YulIdentifier","src":"1382:6:12"},"nativeSrc":"1382:88:12","nodeType":"YulFunctionCall","src":"1382:88:12"},"nativeSrc":"1382:88:12","nodeType":"YulExpressionStatement","src":"1382:88:12"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1486:1:12","nodeType":"YulLiteral","src":"1486:1:12","type":"","value":"4"},{"kind":"number","nativeSrc":"1489:4:12","nodeType":"YulLiteral","src":"1489:4:12","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"1479:6:12","nodeType":"YulIdentifier","src":"1479:6:12"},"nativeSrc":"1479:15:12","nodeType":"YulFunctionCall","src":"1479:15:12"},"nativeSrc":"1479:15:12","nodeType":"YulExpressionStatement","src":"1479:15:12"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1510:1:12","nodeType":"YulLiteral","src":"1510:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"1513:4:12","nodeType":"YulLiteral","src":"1513:4:12","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1503:6:12","nodeType":"YulIdentifier","src":"1503:6:12"},"nativeSrc":"1503:15:12","nodeType":"YulFunctionCall","src":"1503:15:12"},"nativeSrc":"1503:15:12","nodeType":"YulExpressionStatement","src":"1503:15:12"}]},"name":"panic_error_0x32","nativeSrc":"1340:184:12","nodeType":"YulFunctionDefinition","src":"1340:184:12"},{"body":{"nativeSrc":"1686:260:12","nodeType":"YulBlock","src":"1686:260:12","statements":[{"nativeSrc":"1696:26:12","nodeType":"YulAssignment","src":"1696:26:12","value":{"arguments":[{"name":"headStart","nativeSrc":"1708:9:12","nodeType":"YulIdentifier","src":"1708:9:12"},{"kind":"number","nativeSrc":"1719:2:12","nodeType":"YulLiteral","src":"1719:2:12","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1704:3:12","nodeType":"YulIdentifier","src":"1704:3:12"},"nativeSrc":"1704:18:12","nodeType":"YulFunctionCall","src":"1704:18:12"},"variableNames":[{"name":"tail","nativeSrc":"1696:4:12","nodeType":"YulIdentifier","src":"1696:4:12"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1738:9:12","nodeType":"YulIdentifier","src":"1738:9:12"},{"arguments":[{"name":"value0","nativeSrc":"1753:6:12","nodeType":"YulIdentifier","src":"1753:6:12"},{"kind":"number","nativeSrc":"1761:42:12","nodeType":"YulLiteral","src":"1761:42:12","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1749:3:12","nodeType":"YulIdentifier","src":"1749:3:12"},"nativeSrc":"1749:55:12","nodeType":"YulFunctionCall","src":"1749:55:12"}],"functionName":{"name":"mstore","nativeSrc":"1731:6:12","nodeType":"YulIdentifier","src":"1731:6:12"},"nativeSrc":"1731:74:12","nodeType":"YulFunctionCall","src":"1731:74:12"},"nativeSrc":"1731:74:12","nodeType":"YulExpressionStatement","src":"1731:74:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1825:9:12","nodeType":"YulIdentifier","src":"1825:9:12"},{"kind":"number","nativeSrc":"1836:2:12","nodeType":"YulLiteral","src":"1836:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1821:3:12","nodeType":"YulIdentifier","src":"1821:3:12"},"nativeSrc":"1821:18:12","nodeType":"YulFunctionCall","src":"1821:18:12"},{"arguments":[{"name":"value1","nativeSrc":"1845:6:12","nodeType":"YulIdentifier","src":"1845:6:12"},{"kind":"number","nativeSrc":"1853:42:12","nodeType":"YulLiteral","src":"1853:42:12","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1841:3:12","nodeType":"YulIdentifier","src":"1841:3:12"},"nativeSrc":"1841:55:12","nodeType":"YulFunctionCall","src":"1841:55:12"}],"functionName":{"name":"mstore","nativeSrc":"1814:6:12","nodeType":"YulIdentifier","src":"1814:6:12"},"nativeSrc":"1814:83:12","nodeType":"YulFunctionCall","src":"1814:83:12"},"nativeSrc":"1814:83:12","nodeType":"YulExpressionStatement","src":"1814:83:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1917:9:12","nodeType":"YulIdentifier","src":"1917:9:12"},{"kind":"number","nativeSrc":"1928:2:12","nodeType":"YulLiteral","src":"1928:2:12","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1913:3:12","nodeType":"YulIdentifier","src":"1913:3:12"},"nativeSrc":"1913:18:12","nodeType":"YulFunctionCall","src":"1913:18:12"},{"name":"value2","nativeSrc":"1933:6:12","nodeType":"YulIdentifier","src":"1933:6:12"}],"functionName":{"name":"mstore","nativeSrc":"1906:6:12","nodeType":"YulIdentifier","src":"1906:6:12"},"nativeSrc":"1906:34:12","nodeType":"YulFunctionCall","src":"1906:34:12"},"nativeSrc":"1906:34:12","nodeType":"YulExpressionStatement","src":"1906:34:12"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"1529:417:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1639:9:12","nodeType":"YulTypedName","src":"1639:9:12","type":""},{"name":"value2","nativeSrc":"1650:6:12","nodeType":"YulTypedName","src":"1650:6:12","type":""},{"name":"value1","nativeSrc":"1658:6:12","nodeType":"YulTypedName","src":"1658:6:12","type":""},{"name":"value0","nativeSrc":"1666:6:12","nodeType":"YulTypedName","src":"1666:6:12","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1677:4:12","nodeType":"YulTypedName","src":"1677:4:12","type":""}],"src":"1529:417:12"},{"body":{"nativeSrc":"2029:199:12","nodeType":"YulBlock","src":"2029:199:12","statements":[{"body":{"nativeSrc":"2075:16:12","nodeType":"YulBlock","src":"2075:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2084:1:12","nodeType":"YulLiteral","src":"2084:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"2087:1:12","nodeType":"YulLiteral","src":"2087:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2077:6:12","nodeType":"YulIdentifier","src":"2077:6:12"},"nativeSrc":"2077:12:12","nodeType":"YulFunctionCall","src":"2077:12:12"},"nativeSrc":"2077:12:12","nodeType":"YulExpressionStatement","src":"2077:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2050:7:12","nodeType":"YulIdentifier","src":"2050:7:12"},{"name":"headStart","nativeSrc":"2059:9:12","nodeType":"YulIdentifier","src":"2059:9:12"}],"functionName":{"name":"sub","nativeSrc":"2046:3:12","nodeType":"YulIdentifier","src":"2046:3:12"},"nativeSrc":"2046:23:12","nodeType":"YulFunctionCall","src":"2046:23:12"},{"kind":"number","nativeSrc":"2071:2:12","nodeType":"YulLiteral","src":"2071:2:12","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2042:3:12","nodeType":"YulIdentifier","src":"2042:3:12"},"nativeSrc":"2042:32:12","nodeType":"YulFunctionCall","src":"2042:32:12"},"nativeSrc":"2039:52:12","nodeType":"YulIf","src":"2039:52:12"},{"nativeSrc":"2100:29:12","nodeType":"YulVariableDeclaration","src":"2100:29:12","value":{"arguments":[{"name":"headStart","nativeSrc":"2119:9:12","nodeType":"YulIdentifier","src":"2119:9:12"}],"functionName":{"name":"mload","nativeSrc":"2113:5:12","nodeType":"YulIdentifier","src":"2113:5:12"},"nativeSrc":"2113:16:12","nodeType":"YulFunctionCall","src":"2113:16:12"},"variables":[{"name":"value","nativeSrc":"2104:5:12","nodeType":"YulTypedName","src":"2104:5:12","type":""}]},{"body":{"nativeSrc":"2182:16:12","nodeType":"YulBlock","src":"2182:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2191:1:12","nodeType":"YulLiteral","src":"2191:1:12","type":"","value":"0"},{"kind":"number","nativeSrc":"2194:1:12","nodeType":"YulLiteral","src":"2194:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2184:6:12","nodeType":"YulIdentifier","src":"2184:6:12"},"nativeSrc":"2184:12:12","nodeType":"YulFunctionCall","src":"2184:12:12"},"nativeSrc":"2184:12:12","nodeType":"YulExpressionStatement","src":"2184:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2151:5:12","nodeType":"YulIdentifier","src":"2151:5:12"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2172:5:12","nodeType":"YulIdentifier","src":"2172:5:12"}],"functionName":{"name":"iszero","nativeSrc":"2165:6:12","nodeType":"YulIdentifier","src":"2165:6:12"},"nativeSrc":"2165:13:12","nodeType":"YulFunctionCall","src":"2165:13:12"}],"functionName":{"name":"iszero","nativeSrc":"2158:6:12","nodeType":"YulIdentifier","src":"2158:6:12"},"nativeSrc":"2158:21:12","nodeType":"YulFunctionCall","src":"2158:21:12"}],"functionName":{"name":"eq","nativeSrc":"2148:2:12","nodeType":"YulIdentifier","src":"2148:2:12"},"nativeSrc":"2148:32:12","nodeType":"YulFunctionCall","src":"2148:32:12"}],"functionName":{"name":"iszero","nativeSrc":"2141:6:12","nodeType":"YulIdentifier","src":"2141:6:12"},"nativeSrc":"2141:40:12","nodeType":"YulFunctionCall","src":"2141:40:12"},"nativeSrc":"2138:60:12","nodeType":"YulIf","src":"2138:60:12"},{"nativeSrc":"2207:15:12","nodeType":"YulAssignment","src":"2207:15:12","value":{"name":"value","nativeSrc":"2217:5:12","nodeType":"YulIdentifier","src":"2217:5:12"},"variableNames":[{"name":"value0","nativeSrc":"2207:6:12","nodeType":"YulIdentifier","src":"2207:6:12"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"1951:277:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1995:9:12","nodeType":"YulTypedName","src":"1995:9:12","type":""},{"name":"dataEnd","nativeSrc":"2006:7:12","nodeType":"YulTypedName","src":"2006:7:12","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2018:6:12","nodeType":"YulTypedName","src":"2018:6:12","type":""}],"src":"1951:277:12"},{"body":{"nativeSrc":"2407:170:12","nodeType":"YulBlock","src":"2407:170:12","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2424:9:12","nodeType":"YulIdentifier","src":"2424:9:12"},{"kind":"number","nativeSrc":"2435:2:12","nodeType":"YulLiteral","src":"2435:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2417:6:12","nodeType":"YulIdentifier","src":"2417:6:12"},"nativeSrc":"2417:21:12","nodeType":"YulFunctionCall","src":"2417:21:12"},"nativeSrc":"2417:21:12","nodeType":"YulExpressionStatement","src":"2417:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2458:9:12","nodeType":"YulIdentifier","src":"2458:9:12"},{"kind":"number","nativeSrc":"2469:2:12","nodeType":"YulLiteral","src":"2469:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2454:3:12","nodeType":"YulIdentifier","src":"2454:3:12"},"nativeSrc":"2454:18:12","nodeType":"YulFunctionCall","src":"2454:18:12"},{"kind":"number","nativeSrc":"2474:2:12","nodeType":"YulLiteral","src":"2474:2:12","type":"","value":"20"}],"functionName":{"name":"mstore","nativeSrc":"2447:6:12","nodeType":"YulIdentifier","src":"2447:6:12"},"nativeSrc":"2447:30:12","nodeType":"YulFunctionCall","src":"2447:30:12"},"nativeSrc":"2447:30:12","nodeType":"YulExpressionStatement","src":"2447:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2497:9:12","nodeType":"YulIdentifier","src":"2497:9:12"},{"kind":"number","nativeSrc":"2508:2:12","nodeType":"YulLiteral","src":"2508:2:12","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2493:3:12","nodeType":"YulIdentifier","src":"2493:3:12"},"nativeSrc":"2493:18:12","nodeType":"YulFunctionCall","src":"2493:18:12"},{"hexValue":"556e61626c6520746f2070617920746f6b656e73","kind":"string","nativeSrc":"2513:22:12","nodeType":"YulLiteral","src":"2513:22:12","type":"","value":"Unable to pay tokens"}],"functionName":{"name":"mstore","nativeSrc":"2486:6:12","nodeType":"YulIdentifier","src":"2486:6:12"},"nativeSrc":"2486:50:12","nodeType":"YulFunctionCall","src":"2486:50:12"},"nativeSrc":"2486:50:12","nodeType":"YulExpressionStatement","src":"2486:50:12"},{"nativeSrc":"2545:26:12","nodeType":"YulAssignment","src":"2545:26:12","value":{"arguments":[{"name":"headStart","nativeSrc":"2557:9:12","nodeType":"YulIdentifier","src":"2557:9:12"},{"kind":"number","nativeSrc":"2568:2:12","nodeType":"YulLiteral","src":"2568:2:12","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2553:3:12","nodeType":"YulIdentifier","src":"2553:3:12"},"nativeSrc":"2553:18:12","nodeType":"YulFunctionCall","src":"2553:18:12"},"variableNames":[{"name":"tail","nativeSrc":"2545:4:12","nodeType":"YulIdentifier","src":"2545:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_3ada5563b608b4f12ef921b7de8a60eef3445e269146e5af08d99e18136078aa__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"2233:344:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2384:9:12","nodeType":"YulTypedName","src":"2384:9:12","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2398:4:12","nodeType":"YulTypedName","src":"2398:4:12","type":""}],"src":"2233:344:12"},{"body":{"nativeSrc":"2773:14:12","nodeType":"YulBlock","src":"2773:14:12","statements":[{"nativeSrc":"2775:10:12","nodeType":"YulAssignment","src":"2775:10:12","value":{"name":"pos","nativeSrc":"2782:3:12","nodeType":"YulIdentifier","src":"2782:3:12"},"variableNames":[{"name":"end","nativeSrc":"2775:3:12","nodeType":"YulIdentifier","src":"2775:3:12"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"2582:205:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"2757:3:12","nodeType":"YulTypedName","src":"2757:3:12","type":""}],"returnVariables":[{"name":"end","nativeSrc":"2765:3:12","nodeType":"YulTypedName","src":"2765:3:12","type":""}],"src":"2582:205:12"},{"body":{"nativeSrc":"2966:170:12","nodeType":"YulBlock","src":"2966:170:12","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2983:9:12","nodeType":"YulIdentifier","src":"2983:9:12"},{"kind":"number","nativeSrc":"2994:2:12","nodeType":"YulLiteral","src":"2994:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2976:6:12","nodeType":"YulIdentifier","src":"2976:6:12"},"nativeSrc":"2976:21:12","nodeType":"YulFunctionCall","src":"2976:21:12"},"nativeSrc":"2976:21:12","nodeType":"YulExpressionStatement","src":"2976:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3017:9:12","nodeType":"YulIdentifier","src":"3017:9:12"},{"kind":"number","nativeSrc":"3028:2:12","nodeType":"YulLiteral","src":"3028:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3013:3:12","nodeType":"YulIdentifier","src":"3013:3:12"},"nativeSrc":"3013:18:12","nodeType":"YulFunctionCall","src":"3013:18:12"},{"kind":"number","nativeSrc":"3033:2:12","nodeType":"YulLiteral","src":"3033:2:12","type":"","value":"20"}],"functionName":{"name":"mstore","nativeSrc":"3006:6:12","nodeType":"YulIdentifier","src":"3006:6:12"},"nativeSrc":"3006:30:12","nodeType":"YulFunctionCall","src":"3006:30:12"},"nativeSrc":"3006:30:12","nodeType":"YulExpressionStatement","src":"3006:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3056:9:12","nodeType":"YulIdentifier","src":"3056:9:12"},{"kind":"number","nativeSrc":"3067:2:12","nodeType":"YulLiteral","src":"3067:2:12","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3052:3:12","nodeType":"YulIdentifier","src":"3052:3:12"},"nativeSrc":"3052:18:12","nodeType":"YulFunctionCall","src":"3052:18:12"},{"hexValue":"556e61626c6520746f2070617920657468657273","kind":"string","nativeSrc":"3072:22:12","nodeType":"YulLiteral","src":"3072:22:12","type":"","value":"Unable to pay ethers"}],"functionName":{"name":"mstore","nativeSrc":"3045:6:12","nodeType":"YulIdentifier","src":"3045:6:12"},"nativeSrc":"3045:50:12","nodeType":"YulFunctionCall","src":"3045:50:12"},"nativeSrc":"3045:50:12","nodeType":"YulExpressionStatement","src":"3045:50:12"},{"nativeSrc":"3104:26:12","nodeType":"YulAssignment","src":"3104:26:12","value":{"arguments":[{"name":"headStart","nativeSrc":"3116:9:12","nodeType":"YulIdentifier","src":"3116:9:12"},{"kind":"number","nativeSrc":"3127:2:12","nodeType":"YulLiteral","src":"3127:2:12","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3112:3:12","nodeType":"YulIdentifier","src":"3112:3:12"},"nativeSrc":"3112:18:12","nodeType":"YulFunctionCall","src":"3112:18:12"},"variableNames":[{"name":"tail","nativeSrc":"3104:4:12","nodeType":"YulIdentifier","src":"3104:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_c056992782810757ac218a0ddf8c5ba73b3c93859b191993a129d4ce88ee4211__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"2792:344:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2943:9:12","nodeType":"YulTypedName","src":"2943:9:12","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2957:4:12","nodeType":"YulTypedName","src":"2957:4:12","type":""}],"src":"2792:344:12"},{"body":{"nativeSrc":"3404:966:12","nodeType":"YulBlock","src":"3404:966:12","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3421:9:12","nodeType":"YulIdentifier","src":"3421:9:12"},{"arguments":[{"name":"value0","nativeSrc":"3436:6:12","nodeType":"YulIdentifier","src":"3436:6:12"},{"kind":"number","nativeSrc":"3444:42:12","nodeType":"YulLiteral","src":"3444:42:12","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"3432:3:12","nodeType":"YulIdentifier","src":"3432:3:12"},"nativeSrc":"3432:55:12","nodeType":"YulFunctionCall","src":"3432:55:12"}],"functionName":{"name":"mstore","nativeSrc":"3414:6:12","nodeType":"YulIdentifier","src":"3414:6:12"},"nativeSrc":"3414:74:12","nodeType":"YulFunctionCall","src":"3414:74:12"},"nativeSrc":"3414:74:12","nodeType":"YulExpressionStatement","src":"3414:74:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3508:9:12","nodeType":"YulIdentifier","src":"3508:9:12"},{"kind":"number","nativeSrc":"3519:2:12","nodeType":"YulLiteral","src":"3519:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3504:3:12","nodeType":"YulIdentifier","src":"3504:3:12"},"nativeSrc":"3504:18:12","nodeType":"YulFunctionCall","src":"3504:18:12"},{"name":"value1","nativeSrc":"3524:6:12","nodeType":"YulIdentifier","src":"3524:6:12"}],"functionName":{"name":"mstore","nativeSrc":"3497:6:12","nodeType":"YulIdentifier","src":"3497:6:12"},"nativeSrc":"3497:34:12","nodeType":"YulFunctionCall","src":"3497:34:12"},"nativeSrc":"3497:34:12","nodeType":"YulExpressionStatement","src":"3497:34:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3551:9:12","nodeType":"YulIdentifier","src":"3551:9:12"},{"kind":"number","nativeSrc":"3562:2:12","nodeType":"YulLiteral","src":"3562:2:12","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3547:3:12","nodeType":"YulIdentifier","src":"3547:3:12"},"nativeSrc":"3547:18:12","nodeType":"YulFunctionCall","src":"3547:18:12"},{"kind":"number","nativeSrc":"3567:3:12","nodeType":"YulLiteral","src":"3567:3:12","type":"","value":"128"}],"functionName":{"name":"mstore","nativeSrc":"3540:6:12","nodeType":"YulIdentifier","src":"3540:6:12"},"nativeSrc":"3540:31:12","nodeType":"YulFunctionCall","src":"3540:31:12"},"nativeSrc":"3540:31:12","nodeType":"YulExpressionStatement","src":"3540:31:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3591:9:12","nodeType":"YulIdentifier","src":"3591:9:12"},{"kind":"number","nativeSrc":"3602:3:12","nodeType":"YulLiteral","src":"3602:3:12","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"3587:3:12","nodeType":"YulIdentifier","src":"3587:3:12"},"nativeSrc":"3587:19:12","nodeType":"YulFunctionCall","src":"3587:19:12"},{"name":"value3","nativeSrc":"3608:6:12","nodeType":"YulIdentifier","src":"3608:6:12"}],"functionName":{"name":"mstore","nativeSrc":"3580:6:12","nodeType":"YulIdentifier","src":"3580:6:12"},"nativeSrc":"3580:35:12","nodeType":"YulFunctionCall","src":"3580:35:12"},"nativeSrc":"3580:35:12","nodeType":"YulExpressionStatement","src":"3580:35:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3641:9:12","nodeType":"YulIdentifier","src":"3641:9:12"},{"kind":"number","nativeSrc":"3652:3:12","nodeType":"YulLiteral","src":"3652:3:12","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"3637:3:12","nodeType":"YulIdentifier","src":"3637:3:12"},"nativeSrc":"3637:19:12","nodeType":"YulFunctionCall","src":"3637:19:12"},{"name":"value2","nativeSrc":"3658:6:12","nodeType":"YulIdentifier","src":"3658:6:12"},{"name":"value3","nativeSrc":"3666:6:12","nodeType":"YulIdentifier","src":"3666:6:12"}],"functionName":{"name":"calldatacopy","nativeSrc":"3624:12:12","nodeType":"YulIdentifier","src":"3624:12:12"},"nativeSrc":"3624:49:12","nodeType":"YulFunctionCall","src":"3624:49:12"},"nativeSrc":"3624:49:12","nodeType":"YulExpressionStatement","src":"3624:49:12"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3697:9:12","nodeType":"YulIdentifier","src":"3697:9:12"},{"name":"value3","nativeSrc":"3708:6:12","nodeType":"YulIdentifier","src":"3708:6:12"}],"functionName":{"name":"add","nativeSrc":"3693:3:12","nodeType":"YulIdentifier","src":"3693:3:12"},"nativeSrc":"3693:22:12","nodeType":"YulFunctionCall","src":"3693:22:12"},{"kind":"number","nativeSrc":"3717:3:12","nodeType":"YulLiteral","src":"3717:3:12","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"3689:3:12","nodeType":"YulIdentifier","src":"3689:3:12"},"nativeSrc":"3689:32:12","nodeType":"YulFunctionCall","src":"3689:32:12"},{"kind":"number","nativeSrc":"3723:1:12","nodeType":"YulLiteral","src":"3723:1:12","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3682:6:12","nodeType":"YulIdentifier","src":"3682:6:12"},"nativeSrc":"3682:43:12","nodeType":"YulFunctionCall","src":"3682:43:12"},"nativeSrc":"3682:43:12","nodeType":"YulExpressionStatement","src":"3682:43:12"},{"nativeSrc":"3734:114:12","nodeType":"YulVariableDeclaration","src":"3734:114:12","value":{"arguments":[{"name":"headStart","nativeSrc":"3748:9:12","nodeType":"YulIdentifier","src":"3748:9:12"},{"arguments":[{"arguments":[{"name":"value3","nativeSrc":"3767:6:12","nodeType":"YulIdentifier","src":"3767:6:12"},{"kind":"number","nativeSrc":"3775:2:12","nodeType":"YulLiteral","src":"3775:2:12","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3763:3:12","nodeType":"YulIdentifier","src":"3763:3:12"},"nativeSrc":"3763:15:12","nodeType":"YulFunctionCall","src":"3763:15:12"},{"kind":"number","nativeSrc":"3780:66:12","nodeType":"YulLiteral","src":"3780:66:12","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nativeSrc":"3759:3:12","nodeType":"YulIdentifier","src":"3759:3:12"},"nativeSrc":"3759:88:12","nodeType":"YulFunctionCall","src":"3759:88:12"}],"functionName":{"name":"add","nativeSrc":"3744:3:12","nodeType":"YulIdentifier","src":"3744:3:12"},"nativeSrc":"3744:104:12","nodeType":"YulFunctionCall","src":"3744:104:12"},"variables":[{"name":"_1","nativeSrc":"3738:2:12","nodeType":"YulTypedName","src":"3738:2:12","type":""}]},{"nativeSrc":"3857:23:12","nodeType":"YulVariableDeclaration","src":"3857:23:12","value":{"arguments":[{"name":"_1","nativeSrc":"3872:2:12","nodeType":"YulIdentifier","src":"3872:2:12"},{"kind":"number","nativeSrc":"3876:3:12","nodeType":"YulLiteral","src":"3876:3:12","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"3868:3:12","nodeType":"YulIdentifier","src":"3868:3:12"},"nativeSrc":"3868:12:12","nodeType":"YulFunctionCall","src":"3868:12:12"},"variables":[{"name":"end","nativeSrc":"3861:3:12","nodeType":"YulTypedName","src":"3861:3:12","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3900:9:12","nodeType":"YulIdentifier","src":"3900:9:12"},{"kind":"number","nativeSrc":"3911:2:12","nodeType":"YulLiteral","src":"3911:2:12","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3896:3:12","nodeType":"YulIdentifier","src":"3896:3:12"},"nativeSrc":"3896:18:12","nodeType":"YulFunctionCall","src":"3896:18:12"},{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3924:2:12","nodeType":"YulIdentifier","src":"3924:2:12"},{"name":"headStart","nativeSrc":"3928:9:12","nodeType":"YulIdentifier","src":"3928:9:12"}],"functionName":{"name":"sub","nativeSrc":"3920:3:12","nodeType":"YulIdentifier","src":"3920:3:12"},"nativeSrc":"3920:18:12","nodeType":"YulFunctionCall","src":"3920:18:12"},{"kind":"number","nativeSrc":"3940:3:12","nodeType":"YulLiteral","src":"3940:3:12","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"3916:3:12","nodeType":"YulIdentifier","src":"3916:3:12"},"nativeSrc":"3916:28:12","nodeType":"YulFunctionCall","src":"3916:28:12"}],"functionName":{"name":"mstore","nativeSrc":"3889:6:12","nodeType":"YulIdentifier","src":"3889:6:12"},"nativeSrc":"3889:56:12","nodeType":"YulFunctionCall","src":"3889:56:12"},"nativeSrc":"3889:56:12","nodeType":"YulExpressionStatement","src":"3889:56:12"},{"nativeSrc":"3954:14:12","nodeType":"YulVariableDeclaration","src":"3954:14:12","value":{"name":"end","nativeSrc":"3965:3:12","nodeType":"YulIdentifier","src":"3965:3:12"},"variables":[{"name":"pos","nativeSrc":"3958:3:12","nodeType":"YulTypedName","src":"3958:3:12","type":""}]},{"nativeSrc":"3977:27:12","nodeType":"YulVariableDeclaration","src":"3977:27:12","value":{"arguments":[{"name":"value4","nativeSrc":"3997:6:12","nodeType":"YulIdentifier","src":"3997:6:12"}],"functionName":{"name":"mload","nativeSrc":"3991:5:12","nodeType":"YulIdentifier","src":"3991:5:12"},"nativeSrc":"3991:13:12","nodeType":"YulFunctionCall","src":"3991:13:12"},"variables":[{"name":"length","nativeSrc":"3981:6:12","nodeType":"YulTypedName","src":"3981:6:12","type":""}]},{"expression":{"arguments":[{"name":"end","nativeSrc":"4020:3:12","nodeType":"YulIdentifier","src":"4020:3:12"},{"name":"length","nativeSrc":"4025:6:12","nodeType":"YulIdentifier","src":"4025:6:12"}],"functionName":{"name":"mstore","nativeSrc":"4013:6:12","nodeType":"YulIdentifier","src":"4013:6:12"},"nativeSrc":"4013:19:12","nodeType":"YulFunctionCall","src":"4013:19:12"},"nativeSrc":"4013:19:12","nodeType":"YulExpressionStatement","src":"4013:19:12"},{"nativeSrc":"4041:19:12","nodeType":"YulAssignment","src":"4041:19:12","value":{"arguments":[{"name":"_1","nativeSrc":"4052:2:12","nodeType":"YulIdentifier","src":"4052:2:12"},{"kind":"number","nativeSrc":"4056:3:12","nodeType":"YulLiteral","src":"4056:3:12","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"4048:3:12","nodeType":"YulIdentifier","src":"4048:3:12"},"nativeSrc":"4048:12:12","nodeType":"YulFunctionCall","src":"4048:12:12"},"variableNames":[{"name":"pos","nativeSrc":"4041:3:12","nodeType":"YulIdentifier","src":"4041:3:12"}]},{"nativeSrc":"4069:29:12","nodeType":"YulVariableDeclaration","src":"4069:29:12","value":{"arguments":[{"name":"value4","nativeSrc":"4087:6:12","nodeType":"YulIdentifier","src":"4087:6:12"},{"kind":"number","nativeSrc":"4095:2:12","nodeType":"YulLiteral","src":"4095:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4083:3:12","nodeType":"YulIdentifier","src":"4083:3:12"},"nativeSrc":"4083:15:12","nodeType":"YulFunctionCall","src":"4083:15:12"},"variables":[{"name":"srcPtr","nativeSrc":"4073:6:12","nodeType":"YulTypedName","src":"4073:6:12","type":""}]},{"nativeSrc":"4107:10:12","nodeType":"YulVariableDeclaration","src":"4107:10:12","value":{"kind":"number","nativeSrc":"4116:1:12","nodeType":"YulLiteral","src":"4116:1:12","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"4111:1:12","nodeType":"YulTypedName","src":"4111:1:12","type":""}]},{"body":{"nativeSrc":"4175:169:12","nodeType":"YulBlock","src":"4175:169:12","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4196:3:12","nodeType":"YulIdentifier","src":"4196:3:12"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"4211:6:12","nodeType":"YulIdentifier","src":"4211:6:12"}],"functionName":{"name":"mload","nativeSrc":"4205:5:12","nodeType":"YulIdentifier","src":"4205:5:12"},"nativeSrc":"4205:13:12","nodeType":"YulFunctionCall","src":"4205:13:12"},{"kind":"number","nativeSrc":"4220:42:12","nodeType":"YulLiteral","src":"4220:42:12","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"4201:3:12","nodeType":"YulIdentifier","src":"4201:3:12"},"nativeSrc":"4201:62:12","nodeType":"YulFunctionCall","src":"4201:62:12"}],"functionName":{"name":"mstore","nativeSrc":"4189:6:12","nodeType":"YulIdentifier","src":"4189:6:12"},"nativeSrc":"4189:75:12","nodeType":"YulFunctionCall","src":"4189:75:12"},"nativeSrc":"4189:75:12","nodeType":"YulExpressionStatement","src":"4189:75:12"},{"nativeSrc":"4277:19:12","nodeType":"YulAssignment","src":"4277:19:12","value":{"arguments":[{"name":"pos","nativeSrc":"4288:3:12","nodeType":"YulIdentifier","src":"4288:3:12"},{"kind":"number","nativeSrc":"4293:2:12","nodeType":"YulLiteral","src":"4293:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4284:3:12","nodeType":"YulIdentifier","src":"4284:3:12"},"nativeSrc":"4284:12:12","nodeType":"YulFunctionCall","src":"4284:12:12"},"variableNames":[{"name":"pos","nativeSrc":"4277:3:12","nodeType":"YulIdentifier","src":"4277:3:12"}]},{"nativeSrc":"4309:25:12","nodeType":"YulAssignment","src":"4309:25:12","value":{"arguments":[{"name":"srcPtr","nativeSrc":"4323:6:12","nodeType":"YulIdentifier","src":"4323:6:12"},{"kind":"number","nativeSrc":"4331:2:12","nodeType":"YulLiteral","src":"4331:2:12","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4319:3:12","nodeType":"YulIdentifier","src":"4319:3:12"},"nativeSrc":"4319:15:12","nodeType":"YulFunctionCall","src":"4319:15:12"},"variableNames":[{"name":"srcPtr","nativeSrc":"4309:6:12","nodeType":"YulIdentifier","src":"4309:6:12"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"4137:1:12","nodeType":"YulIdentifier","src":"4137:1:12"},{"name":"length","nativeSrc":"4140:6:12","nodeType":"YulIdentifier","src":"4140:6:12"}],"functionName":{"name":"lt","nativeSrc":"4134:2:12","nodeType":"YulIdentifier","src":"4134:2:12"},"nativeSrc":"4134:13:12","nodeType":"YulFunctionCall","src":"4134:13:12"},"nativeSrc":"4126:218:12","nodeType":"YulForLoop","post":{"nativeSrc":"4148:18:12","nodeType":"YulBlock","src":"4148:18:12","statements":[{"nativeSrc":"4150:14:12","nodeType":"YulAssignment","src":"4150:14:12","value":{"arguments":[{"name":"i","nativeSrc":"4159:1:12","nodeType":"YulIdentifier","src":"4159:1:12"},{"kind":"number","nativeSrc":"4162:1:12","nodeType":"YulLiteral","src":"4162:1:12","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"4155:3:12","nodeType":"YulIdentifier","src":"4155:3:12"},"nativeSrc":"4155:9:12","nodeType":"YulFunctionCall","src":"4155:9:12"},"variableNames":[{"name":"i","nativeSrc":"4150:1:12","nodeType":"YulIdentifier","src":"4150:1:12"}]}]},"pre":{"nativeSrc":"4130:3:12","nodeType":"YulBlock","src":"4130:3:12","statements":[]},"src":"4126:218:12"},{"nativeSrc":"4353:11:12","nodeType":"YulAssignment","src":"4353:11:12","value":{"name":"pos","nativeSrc":"4361:3:12","nodeType":"YulIdentifier","src":"4361:3:12"},"variableNames":[{"name":"tail","nativeSrc":"4353:4:12","nodeType":"YulIdentifier","src":"4353:4:12"}]}]},"name":"abi_encode_tuple_t_address_t_uint256_t_bytes_calldata_ptr_t_array$_t_address_$dyn_memory_ptr__to_t_address_t_uint256_t_bytes_memory_ptr_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"3141:1229:12","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3341:9:12","nodeType":"YulTypedName","src":"3341:9:12","type":""},{"name":"value4","nativeSrc":"3352:6:12","nodeType":"YulTypedName","src":"3352:6:12","type":""},{"name":"value3","nativeSrc":"3360:6:12","nodeType":"YulTypedName","src":"3360:6:12","type":""},{"name":"value2","nativeSrc":"3368:6:12","nodeType":"YulTypedName","src":"3368:6:12","type":""},{"name":"value1","nativeSrc":"3376:6:12","nodeType":"YulTypedName","src":"3376:6:12","type":""},{"name":"value0","nativeSrc":"3384:6:12","nodeType":"YulTypedName","src":"3384:6:12","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3395:4:12","nodeType":"YulTypedName","src":"3395:4:12","type":""}],"src":"3141:1229:12"}]},"contents":"{\n { }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\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 value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_address_payable(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_contract$_IValidationEngine_$1308__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 64), value2)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_3ada5563b608b4f12ef921b7de8a60eef3445e269146e5af08d99e18136078aa__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Unable to pay tokens\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function abi_encode_tuple_t_stringliteral_c056992782810757ac218a0ddf8c5ba73b3c93859b191993a129d4ce88ee4211__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 20)\n mstore(add(headStart, 64), \"Unable to pay ethers\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_uint256_t_bytes_calldata_ptr_t_array$_t_address_$dyn_memory_ptr__to_t_address_t_uint256_t_bytes_memory_ptr_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), 128)\n mstore(add(headStart, 128), value3)\n calldatacopy(add(headStart, 160), value2, value3)\n mstore(add(add(headStart, value3), 160), 0)\n let _1 := add(headStart, and(add(value3, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n let end := add(_1, 160)\n mstore(add(headStart, 96), add(sub(_1, headStart), 160))\n let pos := end\n let length := mload(value4)\n mstore(end, length)\n pos := add(_1, 192)\n let srcPtr := add(value4, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n pos := add(pos, 32)\n srcPtr := add(srcPtr, 32)\n }\n tail := pos\n }\n}","id":12,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405260043610610033575f3560e01c80632be277aa14610037578063666c6f23146100585780637d4f064e1461006b575b5f5ffd5b348015610042575f5ffd5b50610056610051366004610436565b6100bf565b005b610056610066366004610474565b61024a565b348015610076575f5ffd5b505f546100969073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6040805160018082528183019092525f916020808301908036833701905050905083815f815181106100f3576100f3610496565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506101368161038c565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8581166024830152604482018490525f91908516906323b872dd906064016020604051808303815f875af11580156101b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d591906104c3565b905080610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e61626c6520746f2070617920746f6b656e7300000000000000000000000060448201526064015b60405180910390fd5b5050505050565b6040805160018082528183019092525f916020808301908036833701905050905081815f8151811061027e5761027e610496565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506102c18161038c565b5f8273ffffffffffffffffffffffffffffffffffffffff16346040515f6040518083038185875af1925050503d805f8114610317576040519150601f19603f3d011682016040523d82523d5f602084013e61031c565b606091505b5050905080610387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e61626c6520746f2070617920657468657273000000000000000000000000604482015260640161023a565b505050565b5f80546040517f6cfd0c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691636cfd0c09916103e9913391349190369088906004016104e2565b5f604051808303815f87803b158015610400575f5ffd5b505af1158015610243573d5f5f3e3d5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610433575f5ffd5b50565b5f5f5f60608486031215610448575f5ffd5b833561045381610412565b9250602084013561046381610412565b929592945050506040919091013590565b5f60208284031215610484575f5ffd5b813561048f81610412565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156104d3575f5ffd5b8151801515811461048f575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015260806040820152826080820152828460a08301375f60a084830181018290527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683018381038201606085015284519181018290526020850191839160c001905b8083101561059f5773ffffffffffffffffffffffffffffffffffffffff8451168252602082019150602084019350600183019250610566565b50999850505050505050505056fea264697066735822122087c461a3df0071ee8b59e067faed4b35dc0fe7089dc2e91b9f434c4494dd06b664736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x33 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2BE277AA EQ PUSH2 0x37 JUMPI DUP1 PUSH4 0x666C6F23 EQ PUSH2 0x58 JUMPI DUP1 PUSH4 0x7D4F064E EQ PUSH2 0x6B JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x56 PUSH2 0x51 CALLDATASIZE PUSH1 0x4 PUSH2 0x436 JUMP JUMPDEST PUSH2 0xBF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x56 PUSH2 0x66 CALLDATASIZE PUSH1 0x4 PUSH2 0x474 JUMP JUMPDEST PUSH2 0x24A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 SLOAD PUSH2 0x96 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 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 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0xF3 JUMPI PUSH2 0xF3 PUSH2 0x496 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x136 DUP2 PUSH2 0x38C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE PUSH0 SWAP2 SWAP1 DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D5 SWAP2 SWAP1 PUSH2 0x4C3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x243 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2070617920746F6B656E73000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP2 DUP2 PUSH0 DUP2 MLOAD DUP2 LT PUSH2 0x27E JUMPI PUSH2 0x27E PUSH2 0x496 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x2C1 DUP2 PUSH2 0x38C JUMP JUMPDEST PUSH0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLVALUE PUSH1 0x40 MLOAD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x317 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x387 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E61626C6520746F2070617920657468657273000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x23A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6CFD0C0900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x6CFD0C09 SWAP2 PUSH2 0x3E9 SWAP2 CALLER SWAP2 CALLVALUE SWAP2 SWAP1 CALLDATASIZE SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x400 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x243 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x433 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x448 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x453 DUP2 PUSH2 0x412 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x463 DUP2 PUSH2 0x412 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x484 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x48F DUP2 PUSH2 0x412 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x48F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x40 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE DUP3 DUP5 PUSH1 0xA0 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0xA0 DUP5 DUP4 ADD DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP7 ADD AND DUP4 ADD DUP4 DUP2 SUB DUP3 ADD PUSH1 0x60 DUP6 ADD MSTORE DUP5 MLOAD SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x20 DUP6 ADD SWAP2 DUP4 SWAP2 PUSH1 0xC0 ADD SWAP1 JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x59F JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 MLOAD AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x1 DUP4 ADD SWAP3 POP PUSH2 0x566 JUMP JUMPDEST POP SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP8 0xC4 PUSH2 0xA3DF STOP PUSH18 0xEE8B59E067FAED4B35DC0FE7089DC2E91B9F NUMBER 0x4C PREVRANDAO SWAP5 0xDD MOD 0xB6 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"389:1167:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1213:341;;;;;;;;;;-1:-1:-1;1213:341:10;;;;;:::i;:::-;;:::i;:::-;;707:309;;;;;;:::i;:::-;;:::i;1439:41:9:-;;;;;;;;;;-1:-1:-1;1439:41:9;;;;;;;;;;;1096:42:12;1084:55;;;1066:74;;1054:2;1039:18;1439:41:9;;;;;;;1213:341:10;1331:16;;;1345:1;1331:16;;;;;;;;;1302:26;;1331:16;;;;;;;;;;;-1:-1:-1;1331:16:10;1302:45;;1372:11;1357:9;1367:1;1357:12;;;;;;;;:::i;:::-;;;;;;:26;;;;;;;;;;;1393:27;1410:9;1393:16;:27::i;:::-;1442:58;;;;;1469:10;1442:58;;;1731:74:12;1442:26:10;1841:55:12;;;1821:18;;;1814:83;1913:18;;;1906:34;;;1430:9:10;;1442:26;;;;;;1704:18:12;;1442:58:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1430:70;;1518:4;1510:37;;;;;;;2435:2:12;1510:37:10;;;2417:21:12;2474:2;2454:18;;;2447:30;2513:22;2493:18;;;2486:50;2553:18;;1510:37:10;;;;;;;;;1292:262;;1213:341;;;:::o;707:309::-;809:16;;;823:1;809:16;;;;;;;;;780:26;;809:16;;;;;;;;;;;-1:-1:-1;809:16:10;780:45;;850:11;835:9;845:1;835:12;;;;;;;;:::i;:::-;;;;;;:26;;;;;;;;;;;871:27;888:9;871:16;:27::i;:::-;909:9;924:11;:16;;948:9;924:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;908:54;;;980:4;972:37;;;;;;;2994:2:12;972:37:10;;;2976:21:12;3033:2;3013:18;;;3006:30;3072:22;3052:18;;;3045:50;3112:18;;972:37:10;2792:344:12;972:37:10;770:246;;707:309;:::o;4078:157:9:-;4151:16;;;:77;;;;;:16;;;;;:33;;:77;;4185:10;;4197:9;;4151:16;4208:8;;4218:9;;4151:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:154:12;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:456::-;250:6;258;266;319:2;307:9;298:7;294:23;290:32;287:52;;;335:1;332;325:12;287:52;374:9;361:23;393:31;418:5;393:31;:::i;:::-;443:5;-1:-1:-1;500:2:12;485:18;;472:32;513:33;472:32;513:33;:::i;:::-;173:456;;565:7;;-1:-1:-1;;;619:2:12;604:18;;;;591:32;;173:456::o;634:255::-;701:6;754:2;742:9;733:7;729:23;725:32;722:52;;;770:1;767;760:12;722:52;809:9;796:23;828:31;853:5;828:31;:::i;:::-;878:5;634:255;-1:-1:-1;;;634:255:12:o;1340:184::-;1392:77;1389:1;1382:88;1489:4;1486:1;1479:15;1513:4;1510:1;1503:15;1951:277;2018:6;2071:2;2059:9;2050:7;2046:23;2042:32;2039:52;;;2087:1;2084;2077:12;2039:52;2119:9;2113:16;2172:5;2165:13;2158:21;2151:5;2148:32;2138:60;;2194:1;2191;2184:12;3141:1229;3444:42;3436:6;3432:55;3421:9;3414:74;3524:6;3519:2;3508:9;3504:18;3497:34;3567:3;3562:2;3551:9;3547:18;3540:31;3608:6;3602:3;3591:9;3587:19;3580:35;3666:6;3658;3652:3;3641:9;3637:19;3624:49;3723:1;3717:3;3693:22;;;3689:32;;3682:43;;;3780:66;3775:2;3763:15;;3759:88;3744:104;;3920:18;;;3916:28;;3911:2;3896:18;;3889:56;3991:13;;3868:12;;;4013:19;;;4095:2;4083:15;;;3723:1;;4056:3;4048:12;;4126:218;4140:6;4137:1;4134:13;4126:218;;;4220:42;4211:6;4205:13;4201:62;4196:3;4189:75;4293:2;4288:3;4284:12;4277:19;;4331:2;4323:6;4319:15;4309:25;;4162:1;4159;4155:9;4150:14;;4126:218;;;-1:-1:-1;4361:3:12;3141:1229;-1:-1:-1;;;;;;;;;3141:1229:12:o"},"methodIdentifiers":{"payEthers(address)":"666c6f23","payTokens(address,address,uint256)":"2be277aa","validationEngine()":"7d4f064e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"trustlineValidationEngineLogic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustlineValidationEngineProxy\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"engineProxy\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"logic\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"ValidationEngineDeployed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"payEthers\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"payTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validationEngine\",\"outputs\":[{\"internalType\":\"contract IValidationEngine\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trustline\",\"events\":{\"ValidationEngineDeployed(address,address,address,address)\":{\"details\":\"`client` is the address of the integrating contract (i.e., the contract inheriting from Trustlined).`engineProxy` is the freshly deployed ERC1967 proxy address for the Validation Engine instance.`logic` is the Validation Engine implementation (logic) contract the proxy points to at deployment time.`initialOwner` is the address passed to the engine's `initialize(address)` call (typically the deployer/initializer).\"}},\"kind\":\"dev\",\"methods\":{\"payEthers(address)\":{\"params\":{\"destination\":\"The recipient address\"}},\"payTokens(address,address,uint256)\":{\"params\":{\"destination\":\"The recipient address\",\"token\":\"The ERC20 token address\",\"value\":\"The amount of tokens to pay\"}}},\"title\":\"PaymentFirewall\",\"version\":1},\"userdoc\":{\"events\":{\"ValidationEngineDeployed(address,address,address,address)\":{\"notice\":\"Emitted when a new Validation Engine proxy is deployed for this client contract.\"}},\"kind\":\"user\",\"methods\":{\"payEthers(address)\":{\"notice\":\"Pay native ethers to a recipient\"},\"payTokens(address,address,uint256)\":{\"notice\":\"Pay ERC20 tokens to a recipient\"},\"validationEngine()\":{\"notice\":\"The Trustline ValidationEngine contract address. It must be set before any of the provided functions can be used\"}},\"notice\":\"This contract is a firewall ensuring all funds going in and out are compliant\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/examples/PaymentFirewall.sol\":\"PaymentFirewall\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf7b192fd82acf6187970c80548f624b1b9c80425b62fa49e7fdb538a52de049\",\"dweb:/ipfs/QmWXG1YCde1tqDYTbNwjkZDWVgPEjzaQGSDqWkyKLzaNua\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"contracts/Trustlined.sol\":{\"keccak256\":\"0x6ed305bb0d99359886b4571c5d67019895da3028c80ad515365a9df7486c1b8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c33412ef8b9b2a4e99c05a0c72d184833a5cb72a2ed0f9cf4933f614202b8c4f\",\"dweb:/ipfs/QmQTPuUzNpCJPfiqp44HFb6837dkcgQr9GEKARTqu23TUk\"]},\"contracts/examples/PaymentFirewall.sol\":{\"keccak256\":\"0xe145f8197c56b77caf14b51884c755f768b4a6750e553bb186cd910dac013c65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://467d8594004d624482537b1d5f29cd827643ee3dc050b135a61d9ddd25d41e7c\",\"dweb:/ipfs/QmTwCdERgA1QzkWmhq7au3kozwh5nXt2vjeCxEzdSJtYni\"]},\"contracts/interfaces/IValidationEngine.sol\":{\"keccak256\":\"0xabc18c2ce04a797bf6c486d8100ed9d0f2f3002d9ba8c59258a8a32fce895a45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b30e4603cb427d074c73d5af95fb106d804572abb55e25cbf0f5153e3e87282\",\"dweb:/ipfs/QmbPhqBPaMSzdyREoKHJXjZhhY7HtSbqgTv4EpHsA8FL6T\"]}},\"version\":1}"}},"contracts/interfaces/IValidationEngine.sol":{"IValidationEngine":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"checkTrustlineStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum IValidationEngine.ValidationMode","name":"mode","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"checkTrustlineStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"checkTrustlineStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"requireTrustline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"requireTrustline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IValidationEngine.ValidationMode","name":"mode","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"requireTrustline","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"checkTrustlineStatus(address,uint256,bytes)":"16128135","checkTrustlineStatus(address,uint256,bytes,address[])":"8ad79ae3","checkTrustlineStatus(uint8,address,uint256,bytes,address[])":"1a27f395","requireTrustline(address,uint256,bytes)":"1b93c32f","requireTrustline(address,uint256,bytes,address[])":"6cfd0c09","requireTrustline(uint8,address,uint256,bytes,address[])":"ff7c9eff"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"checkTrustlineStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IValidationEngine.ValidationMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"name\":\"checkTrustlineStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"name\":\"checkTrustlineStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"requireTrustline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"name\":\"requireTrustline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IValidationEngine.ValidationMode\",\"name\":\"mode\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"name\":\"requireTrustline\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Trustline\",\"details\":\"This interface is used by the Trustlined contract to interact with Trustline's Validation contract\",\"kind\":\"dev\",\"methods\":{\"checkTrustlineStatus(address,uint256,bytes)\":{\"params\":{\"data\":\"Transaction payload data\",\"sender\":\"The transaction sender\",\"value\":\"Transaction value in wei\"}},\"checkTrustlineStatus(address,uint256,bytes,address[])\":{\"params\":{\"addresses\":\"An array of addresses that will be verified by the policy\",\"data\":\"Transaction payload data\",\"sender\":\"The transaction sender\",\"value\":\"Transaction value in wei\"}},\"checkTrustlineStatus(uint8,address,uint256,bytes,address[])\":{\"details\":\"This call is required only in complex scenariosWARNING: Improper use of this call may introduce security vulnerabilities in the calling contract\",\"params\":{\"addresses\":\"An array of addresses that will be verified by the policy\",\"data\":\"Transaction payload data\",\"mode\":\"The validation mode\",\"sender\":\"The transaction sender\",\"value\":\"Transaction value in wei\"}},\"requireTrustline(address,uint256,bytes)\":{\"details\":\"reverts if the transaction is not compliant\",\"params\":{\"data\":\"Transaction payload data\",\"sender\":\"The transaction sender\",\"value\":\"Transaction value in wei\"}},\"requireTrustline(address,uint256,bytes,address[])\":{\"details\":\"reverts if the transaction is not compliant\",\"params\":{\"addresses\":\"An array of addresses that will be verified by the policy\",\"data\":\"Transaction payload data\",\"sender\":\"The transaction sender\",\"value\":\"Transaction value in wei\"}},\"requireTrustline(uint8,address,uint256,bytes,address[])\":{\"details\":\"This call is required only in complex scenariosWARNING: Improper use of this call may introduce security vulnerabilities in the calling contract\",\"params\":{\"addresses\":\"An array of addresses that will be verified by the policy\",\"data\":\"Transaction payload data\",\"mode\":\"The validation mode\",\"sender\":\"The transaction sender\",\"value\":\"Transaction value in wei\"}}},\"title\":\"Trustline's Validation interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkTrustlineStatus(address,uint256,bytes)\":{\"notice\":\"Checks whether a transaction is trusted and verifies msg.sender against sanctions lists\"},\"checkTrustlineStatus(address,uint256,bytes,address[])\":{\"notice\":\"Checks whether a transaction is trusted and verifies msg.sender + addresses[] against sanctions lists\"},\"checkTrustlineStatus(uint8,address,uint256,bytes,address[])\":{\"notice\":\"Checks whether a transaction is trusted and verifies msg.sender + addresses[] against sanctions lists (advanced)\"},\"requireTrustline(address,uint256,bytes)\":{\"notice\":\"Requires a trusted transaction and a non\\u2011sanctioned msg.sender\"},\"requireTrustline(address,uint256,bytes,address[])\":{\"notice\":\"Requires a trusted transaction and non\\u2011sanctioned msg.sender + addresses[]\"},\"requireTrustline(uint8,address,uint256,bytes,address[])\":{\"notice\":\"Requires a trusted transaction and non\\u2011sanctioned msg.sender + addresses[] (advanced)\"}},\"notice\":\"This interface defines the functions that must be implemented by the validation contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IValidationEngine.sol\":\"IValidationEngine\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IValidationEngine.sol\":{\"keccak256\":\"0xabc18c2ce04a797bf6c486d8100ed9d0f2f3002d9ba8c59258a8a32fce895a45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b30e4603cb427d074c73d5af95fb106d804572abb55e25cbf0f5153e3e87282\",\"dweb:/ipfs/QmbPhqBPaMSzdyREoKHJXjZhhY7HtSbqgTv4EpHsA8FL6T\"]}},\"version\":1}"}}}}}