diff --git a/README.md b/README.md index cd4bd08..0c730e7 100644 --- a/README.md +++ b/README.md @@ -203,16 +203,16 @@ The following is a list of contracts that are deployed by this script. │ proxy-hook │ WalletProxyHook │ 0x1f56dbAD5e8319F0DE9a323E24A31b5077dEB1a4 │ │ SEQ-0001 │ SequenceMainModuleUpgradableDuoV1 │ 0x94Fb1E5196B4eE5A1c9ad737a505CE12bAe7Ca85 │ │ SEQ-0001 │ SequenceMainModuleUpgradableDuoV2 │ 0x4f8ce847174b32cBe21b3887Be894e0DEBC28952 │ -│ sequence_v3/rc_4 │ Erc4337FactoryWrapperV3 │ 0x00000000000003c0C955C8AE06FB13cDd19a7ac6 │ -│ sequence_v3/rc_4 │ GuestV3 │ 0x0000000000601fcA38f0cCA649453F6739436d6C │ -│ sequence_v3/rc_4 │ PasskeysV3 │ 0x0000000000005204F3711851EAD52CC9c241499a │ -│ sequence_v3/rc_4 │ RecoveryV3 │ 0x000000000001FC499c3E177DD56Febb0A4bc15b7 │ -│ sequence_v3/rc_4 │ SequenceV3/rc4FactoryV3 │ 0x00000000000018A77519fcCCa060c2537c9D6d3F │ -│ sequence_v3/rc_4 │ SessionsV3 │ 0x00000000000030Bcc832F7d657f50D6Be35C92b3 │ -│ sequence_v3/rc_4 │ Stage1Module433707V3 │ 0x0000000000003add039FF84b064B7347Fc23C444 │ -│ sequence_v3/rc_4 │ Stage1ModuleV3 │ 0x0000000000003DF093bc4257E6dCE45D937EF161 │ -│ sequence_v3/rc_4 │ Stage2Module.valueV3 │ 0x10bE1Abf3cD0918bb1079ECc6b8220c177F34088 │ -│ sequence_v3/rc_4 │ Stage2Module433707.valueV3 │ 0x4B3E5735665057A0A15eE448A7293bC01e3b4De9 │ +│ sequence_v3/rc_5 │ Erc4337FactoryWrapperV3 │ 0x00000000000003c0C955C8AE06FB13cDd19a7ac6 │ +│ sequence_v3/rc_5 │ GuestV3 │ 0x0000000000006Ac72ed1d192fa28f0058D3F8806 │ +│ sequence_v3/rc_5 │ PasskeysV3 │ 0x0000000000005204F3711851EAD52CC9c241499a │ +│ sequence_v3/rc_5 │ RecoveryV3 │ 0x000000000000AB36D17eB1150116371520565205 │ +│ sequence_v3/rc_5 │ SequenceV3/rc5FactoryV3 │ 0x00000000000018A77519fcCCa060c2537c9D6d3F │ +│ sequence_v3/rc_5 │ SessionsV3 │ 0x00000000000030Bcc832F7d657f50D6Be35C92b3 │ +│ sequence_v3/rc_5 │ Stage1Module433707V3 │ 0x0000000000009caFdeDb6f64Bf5F31a22124B2a8 │ +│ sequence_v3/rc_5 │ Stage1ModuleV3 │ 0x0000000000001f3C39d61698ab21131a12134454 │ +│ sequence_v3/rc_5 │ Stage2Module.valueV3 │ 0xD0ae8eF93b7DA4eabb32Ec4d81b7a501DCa04D4C │ +│ sequence_v3/rc_5 │ Stage2Module433707.valueV3 │ 0xcBca3328a731deffE6Ce4c2fb51b585c3c37FB92 │ │ sequence-v1 │ GuestModuleV1 │ 0x02390F3E6E5FD1C6786CB78FD3027C117a9955A7 │ │ sequence-v1 │ MainModuleUpgradeableV1 │ 0x7EFE6cE415956c5f80C6530cC6cc81b4808F6118 │ │ sequence-v1 │ MainModuleV1 │ 0xd01F11855bCcb95f88D7A48492F66410d4637313 │ diff --git a/jobs/sequence_v3/build-info/rc-5/guest.json b/jobs/sequence_v3/build-info/rc-5/guest.json new file mode 100644 index 0000000..cdb3194 --- /dev/null +++ b/jobs/sequence_v3/build-info/rc-5/guest.json @@ -0,0 +1 @@ +{"id":"3f6c4257c9e1cf1b","source_id_to_path":{"0":"src/Guest.sol","1":"src/modules/Calls.sol","2":"src/modules/Nonce.sol","3":"src/modules/Payload.sol","4":"src/modules/ReentrancyGuard.sol","5":"src/modules/Storage.sol","6":"src/modules/auth/BaseAuth.sol","7":"src/modules/auth/BaseSig.sol","8":"src/modules/auth/SelfAuth.sol","9":"src/modules/interfaces/IAuth.sol","10":"src/modules/interfaces/ICheckpointer.sol","11":"src/modules/interfaces/IDelegatedExtension.sol","12":"src/modules/interfaces/IERC1271.sol","13":"src/modules/interfaces/IPartialAuth.sol","14":"src/modules/interfaces/ISapient.sol","15":"src/utils/LibBytes.sol","16":"src/utils/LibOptim.sol"},"language":"Solidity","_format":"ethers-rs-sol-build-info-1","input":{"version":"0.8.28","language":"Solidity","sources":{"src/Guest.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Calls } from \"./modules/Calls.sol\";\nimport { Payload } from \"./modules/Payload.sol\";\n\nimport { LibOptim } from \"./utils/LibOptim.sol\";\n\n/// @title Guest\n/// @author Agustin Aguilar, William Hua, Michael Standen\n/// @notice Guest for dispatching calls\ncontract Guest {\n\n /// @notice Error thrown when a delegate call is not allowed\n error DelegateCallNotAllowed(uint256 index);\n\n /// @notice Fallback function\n /// @dev Dispatches the guest call\n fallback() external payable {\n Payload.Decoded memory decoded = Payload.fromPackedCalls(msg.data);\n bytes32 opHash = Payload.hash(decoded);\n _dispatchGuest(decoded, opHash);\n }\n\n function _dispatchGuest(Payload.Decoded memory _decoded, bytes32 _opHash) internal {\n bool errorFlag = false;\n\n uint256 numCalls = _decoded.calls.length;\n for (uint256 i = 0; i < numCalls; i++) {\n Payload.Call memory call = _decoded.calls[i];\n\n // Skip onlyFallback calls if no error occurred\n if (call.onlyFallback && !errorFlag) {\n emit Calls.CallSkipped(_opHash, i);\n continue;\n }\n\n // Reset the error flag\n // onlyFallback calls only apply when the immediately preceding transaction fails\n errorFlag = false;\n\n uint256 gasLimit = call.gasLimit;\n if (gasLimit != 0 && gasleft() < gasLimit) {\n revert Calls.NotEnoughGas(_decoded, i, gasleft());\n }\n\n if (call.delegateCall) {\n revert DelegateCallNotAllowed(i);\n }\n\n bool success = LibOptim.call(call.to, call.value, gasLimit == 0 ? gasleft() : gasLimit, call.data);\n if (!success) {\n if (call.behaviorOnError == Payload.BEHAVIOR_IGNORE_ERROR) {\n errorFlag = true;\n emit Calls.CallFailed(_opHash, i, LibOptim.returnData());\n continue;\n }\n\n if (call.behaviorOnError == Payload.BEHAVIOR_REVERT_ON_ERROR) {\n revert Calls.Reverted(_decoded, i, LibOptim.returnData());\n }\n\n if (call.behaviorOnError == Payload.BEHAVIOR_ABORT_ON_ERROR) {\n emit Calls.CallAborted(_opHash, i, LibOptim.returnData());\n break;\n }\n }\n\n emit Calls.CallSucceeded(_opHash, i);\n }\n }\n\n}\n"},"src/modules/Calls.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { LibOptim } from \"../utils/LibOptim.sol\";\nimport { Nonce } from \"./Nonce.sol\";\nimport { Payload } from \"./Payload.sol\";\n\nimport { ReentrancyGuard } from \"./ReentrancyGuard.sol\";\nimport { BaseAuth } from \"./auth/BaseAuth.sol\";\nimport { IDelegatedExtension } from \"./interfaces/IDelegatedExtension.sol\";\n\n/// @title Calls\n/// @author Agustin Aguilar, Michael Standen, William Hua\n/// @notice Contract for executing calls\nabstract contract Calls is ReentrancyGuard, BaseAuth, Nonce {\n\n /// @notice Emitted when a call succeeds\n event CallSucceeded(bytes32 indexed _opHash, uint256 _index);\n /// @notice Emitted when a call fails\n event CallFailed(bytes32 indexed _opHash, uint256 _index, bytes _returnData);\n /// @notice Emitted when a call is aborted\n event CallAborted(bytes32 indexed _opHash, uint256 _index, bytes _returnData);\n /// @notice Emitted when a call is skipped\n event CallSkipped(bytes32 indexed _opHash, uint256 _index);\n\n /// @notice Error thrown when a call reverts\n error Reverted(Payload.Decoded _payload, uint256 _index, bytes _returnData);\n /// @notice Error thrown when a signature is invalid\n error InvalidSignature(Payload.Decoded _payload, bytes _signature);\n /// @notice Error thrown when there is not enough gas\n error NotEnoughGas(Payload.Decoded _payload, uint256 _index, uint256 _gasLeft);\n\n /// @notice Execute a call\n /// @param _payload The payload\n /// @param _signature The signature\n function execute(\n bytes calldata _payload,\n bytes calldata _signature\n ) external payable virtual nonReentrant {\n uint256 startingGas = gasleft();\n Payload.Decoded memory decoded = Payload.fromPackedCalls(_payload);\n\n _consumeNonce(decoded.space, decoded.nonce);\n (bool isValid, bytes32 opHash) = signatureValidation(decoded, _signature);\n\n if (!isValid) {\n revert InvalidSignature(decoded, _signature);\n }\n\n _execute(startingGas, opHash, decoded);\n }\n\n /// @notice Execute a call\n /// @dev Callable only by the contract itself\n /// @param _payload The payload\n function selfExecute(\n bytes calldata _payload\n ) external payable virtual onlySelf {\n uint256 startingGas = gasleft();\n Payload.Decoded memory decoded = Payload.fromPackedCalls(_payload);\n bytes32 opHash = Payload.hash(decoded);\n _execute(startingGas, opHash, decoded);\n }\n\n function _execute(\n uint256 _startingGas,\n bytes32 _opHash,\n Payload.Decoded memory _decoded\n ) private {\n bool errorFlag = false;\n\n uint256 numCalls = _decoded.calls.length;\n for (uint256 i = 0; i < numCalls; i++) {\n Payload.Call memory call = _decoded.calls[i];\n\n // Skip onlyFallback calls if no error occurred\n if (call.onlyFallback && !errorFlag) {\n emit CallSkipped(_opHash, i);\n continue;\n }\n\n // Reset the error flag\n // onlyFallback calls only apply when the immediately preceding transaction fails\n errorFlag = false;\n\n uint256 gasLimit = call.gasLimit;\n if (gasLimit != 0 && gasleft() < gasLimit) {\n revert NotEnoughGas(_decoded, i, gasleft());\n }\n\n bool success;\n if (call.delegateCall) {\n (success) = LibOptim.delegatecall(\n call.to,\n gasLimit == 0 ? gasleft() : gasLimit,\n abi.encodeWithSelector(\n IDelegatedExtension.handleSequenceDelegateCall.selector,\n _opHash,\n _startingGas,\n i,\n numCalls,\n _decoded.space,\n call.data\n )\n );\n } else {\n (success) = LibOptim.call(call.to, call.value, gasLimit == 0 ? gasleft() : gasLimit, call.data);\n }\n\n if (!success) {\n if (call.behaviorOnError == Payload.BEHAVIOR_IGNORE_ERROR) {\n errorFlag = true;\n emit CallFailed(_opHash, i, LibOptim.returnData());\n continue;\n }\n\n if (call.behaviorOnError == Payload.BEHAVIOR_REVERT_ON_ERROR) {\n revert Reverted(_decoded, i, LibOptim.returnData());\n }\n\n if (call.behaviorOnError == Payload.BEHAVIOR_ABORT_ON_ERROR) {\n emit CallAborted(_opHash, i, LibOptim.returnData());\n break;\n }\n }\n\n emit CallSucceeded(_opHash, i);\n }\n }\n\n}\n"},"src/modules/Nonce.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Storage } from \"./Storage.sol\";\n\n/// @title Nonce\n/// @author Agustin Aguilar\n/// @notice Manages the nonce of the wallet\ncontract Nonce {\n\n /// @notice Emitted when the nonce is changed\n event NonceChange(uint256 _space, uint256 _newNonce);\n\n /// @notice Error thrown when the nonce is bad\n error BadNonce(uint256 _space, uint256 _provided, uint256 _current);\n\n /// @dev keccak256(\"org.arcadeum.module.calls.nonce\")\n bytes32 private constant NONCE_KEY = bytes32(0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e);\n\n /// @notice Read the nonce\n /// @param _space The space\n /// @return nonce The nonce\n function readNonce(\n uint256 _space\n ) public view virtual returns (uint256) {\n return uint256(Storage.readBytes32Map(NONCE_KEY, bytes32(_space)));\n }\n\n function _writeNonce(uint256 _space, uint256 _nonce) internal {\n Storage.writeBytes32Map(NONCE_KEY, bytes32(_space), bytes32(_nonce));\n }\n\n function _consumeNonce(uint256 _space, uint256 _nonce) internal {\n uint256 currentNonce = readNonce(_space);\n if (currentNonce != _nonce) {\n revert BadNonce(_space, _nonce, currentNonce);\n }\n\n unchecked {\n uint256 newNonce = _nonce + 1;\n\n _writeNonce(_space, newNonce);\n emit NonceChange(_space, newNonce);\n return;\n }\n }\n\n}\n"},"src/modules/Payload.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { LibBytes } from \"../utils/LibBytes.sol\";\n\nusing LibBytes for bytes;\n\n/// @title Payload\n/// @author Agustin Aguilar, Michael Standen, William Hua\n/// @notice Library for encoding and decoding payloads\nlibrary Payload {\n\n /// @notice Error thrown when the kind is invalid\n error InvalidKind(uint8 kind);\n\n /// @notice Error thrown when the encoding is invalid\n error InvalidPackedLength();\n\n /// @dev keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\")\n bytes32 private constant EIP712_DOMAIN_TYPEHASH = 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f;\n\n /// @dev keccak256(\"Sequence Wallet\")\n bytes32 private constant EIP712_DOMAIN_NAME_SEQUENCE =\n 0x4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c56318;\n\n /// @dev keccak256(\"3\")\n bytes32 private constant EIP712_DOMAIN_VERSION_SEQUENCE =\n 0x2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de;\n\n function domainSeparator(bool _noChainId, address _wallet) internal view returns (bytes32 _domainSeparator) {\n return keccak256(\n abi.encode(\n EIP712_DOMAIN_TYPEHASH,\n EIP712_DOMAIN_NAME_SEQUENCE,\n EIP712_DOMAIN_VERSION_SEQUENCE,\n _noChainId ? uint256(0) : uint256(block.chainid),\n _wallet\n )\n );\n }\n\n /// @dev keccak256(\"Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\")\n bytes32 private constant CALL_TYPEHASH = 0x0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437;\n\n /// @dev keccak256(\"Calls(Call[] calls,uint256 space,uint256 nonce,address[] wallets)Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\")\n bytes32 private constant CALLS_TYPEHASH = 0x11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a2;\n\n /// @dev keccak256(\"Message(bytes message,address[] wallets)\")\n bytes32 private constant MESSAGE_TYPEHASH = 0xe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466;\n\n /// @dev keccak256(\"ConfigUpdate(bytes32 imageHash,address[] wallets)\")\n bytes32 private constant CONFIG_UPDATE_TYPEHASH = 0x11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4;\n\n /// @notice Kind of transaction\n uint8 public constant KIND_TRANSACTIONS = 0x00;\n /// @notice Kind of digest\n uint8 public constant KIND_MESSAGE = 0x01;\n /// @notice Kind of config update\n uint8 public constant KIND_CONFIG_UPDATE = 0x02;\n /// @notice Kind of message\n uint8 public constant KIND_DIGEST = 0x03;\n\n /// @notice Behavior on error: ignore error\n uint8 public constant BEHAVIOR_IGNORE_ERROR = 0x00;\n /// @notice Behavior on error: revert on error\n uint8 public constant BEHAVIOR_REVERT_ON_ERROR = 0x01;\n /// @notice Behavior on error: abort on error\n uint8 public constant BEHAVIOR_ABORT_ON_ERROR = 0x02;\n\n /// @notice Payload call information\n /// @param to Address of the target contract\n /// @param value Value to send with the call\n /// @param data Data to send with the call\n /// @param gasLimit Gas limit for the call\n /// @param delegateCall If the call is a delegate call\n /// @param onlyFallback If the call should only be executed in an error scenario\n /// @param behaviorOnError Behavior on error\n struct Call {\n address to;\n uint256 value;\n bytes data;\n uint256 gasLimit;\n bool delegateCall;\n bool onlyFallback;\n uint256 behaviorOnError;\n }\n\n /// @notice Decoded payload\n /// @param kind Kind of payload\n /// @param noChainId If the chain ID should be omitted\n /// @param calls Array of calls (transaction kind)\n /// @param space Nonce space for the calls (transaction kind)\n /// @param nonce Nonce value for the calls (transaction kind)\n /// @param message Message to validate (message kind)\n /// @param imageHash Image hash to update to (config update kind)\n /// @param digest Digest to validate (digest kind)\n /// @param parentWallets Parent wallets\n struct Decoded {\n uint8 kind;\n bool noChainId;\n // Transaction kind\n Call[] calls;\n uint256 space;\n uint256 nonce;\n // Message kind\n bytes message;\n // Config update kind\n bytes32 imageHash;\n // Digest kind for 1271\n bytes32 digest;\n // Parent wallets\n address[] parentWallets;\n }\n\n function fromMessage(\n bytes memory message\n ) internal pure returns (Decoded memory _decoded) {\n _decoded.kind = KIND_MESSAGE;\n _decoded.message = message;\n }\n\n function fromConfigUpdate(\n bytes32 imageHash\n ) internal pure returns (Decoded memory _decoded) {\n _decoded.kind = KIND_CONFIG_UPDATE;\n _decoded.imageHash = imageHash;\n }\n\n function fromDigest(\n bytes32 digest\n ) internal pure returns (Decoded memory _decoded) {\n _decoded.kind = KIND_DIGEST;\n _decoded.digest = digest;\n }\n\n function fromPackedCalls(\n bytes calldata packed\n ) internal view returns (Decoded memory _decoded) {\n _decoded.kind = KIND_TRANSACTIONS;\n\n // Read the global flag\n (uint256 globalFlag, uint256 pointer) = packed.readFirstUint8();\n\n // First bit determines if space is zero or not\n if (globalFlag & 0x01 == 0x01) {\n _decoded.space = 0;\n } else {\n (_decoded.space, pointer) = packed.readUint160(pointer);\n }\n\n // Next 3 bits determine the size of the nonce\n uint256 nonceSize = (globalFlag >> 1) & 0x07;\n\n if (nonceSize > 0) {\n // Read the nonce\n (_decoded.nonce, pointer) = packed.readUintX(pointer, nonceSize);\n }\n\n uint256 numCalls;\n\n // Bit 5 determines if the batch contains a single call\n if (globalFlag & 0x10 == 0x10) {\n numCalls = 1;\n } else {\n // Bit 6 determines if the number of calls uses 1 byte or 2 bytes\n if (globalFlag & 0x20 == 0x20) {\n (numCalls, pointer) = packed.readUint16(pointer);\n } else {\n (numCalls, pointer) = packed.readUint8(pointer);\n }\n }\n\n // Read the calls\n _decoded.calls = new Call[](numCalls);\n\n for (uint256 i = 0; i < numCalls; i++) {\n uint8 flags;\n (flags, pointer) = packed.readUint8(pointer);\n\n // First bit determines if this is a call to self\n // or a call to another address\n if (flags & 0x01 == 0x01) {\n // Call to self\n _decoded.calls[i].to = address(this);\n } else {\n // Call to another address\n (_decoded.calls[i].to, pointer) = packed.readAddress(pointer);\n }\n\n // Second bit determines if the call has value or not\n if (flags & 0x02 == 0x02) {\n (_decoded.calls[i].value, pointer) = packed.readUint256(pointer);\n }\n\n // Third bit determines if the call has data or not\n if (flags & 0x04 == 0x04) {\n // 3 bytes determine the size of the calldata\n uint256 calldataSize;\n (calldataSize, pointer) = packed.readUint24(pointer);\n _decoded.calls[i].data = packed[pointer:pointer + calldataSize];\n pointer += calldataSize;\n }\n\n // Fourth bit determines if the call has a gas limit or not\n if (flags & 0x08 == 0x08) {\n (_decoded.calls[i].gasLimit, pointer) = packed.readUint256(pointer);\n }\n\n // Fifth bit determines if the call is a delegate call or not\n _decoded.calls[i].delegateCall = (flags & 0x10 == 0x10);\n\n // Sixth bit determines if the call is fallback only\n _decoded.calls[i].onlyFallback = (flags & 0x20 == 0x20);\n\n // Last 2 bits are directly mapped to the behavior on error\n _decoded.calls[i].behaviorOnError = (flags & 0xC0) >> 6;\n }\n\n if (pointer != packed.length) {\n revert InvalidPackedLength();\n }\n\n return _decoded;\n }\n\n function hashCall(\n Call memory c\n ) internal pure returns (bytes32) {\n return keccak256(\n abi.encode(\n CALL_TYPEHASH, c.to, c.value, keccak256(c.data), c.gasLimit, c.delegateCall, c.onlyFallback, c.behaviorOnError\n )\n );\n }\n\n function hashCalls(\n Call[] memory calls\n ) internal pure returns (bytes32) {\n // In EIP712, an array is often hashed as the keccak256 of the concatenated\n // hashes of each item. So we hash each Call, pack them, and hash again.\n bytes32[] memory callHashes = new bytes32[](calls.length);\n for (uint256 i = 0; i < calls.length; i++) {\n callHashes[i] = hashCall(calls[i]);\n }\n return keccak256(abi.encodePacked(callHashes));\n }\n\n function toEIP712(\n Decoded memory _decoded\n ) internal pure returns (bytes32) {\n bytes32 walletsHash = keccak256(abi.encodePacked(_decoded.parentWallets));\n\n if (_decoded.kind == KIND_TRANSACTIONS) {\n bytes32 callsHash = hashCalls(_decoded.calls);\n return keccak256(abi.encode(CALLS_TYPEHASH, callsHash, _decoded.space, _decoded.nonce, walletsHash));\n } else if (_decoded.kind == KIND_MESSAGE) {\n return keccak256(abi.encode(MESSAGE_TYPEHASH, keccak256(_decoded.message), walletsHash));\n } else if (_decoded.kind == KIND_CONFIG_UPDATE) {\n return keccak256(abi.encode(CONFIG_UPDATE_TYPEHASH, _decoded.imageHash, walletsHash));\n } else if (_decoded.kind == KIND_DIGEST) {\n // Top-level: Use MESSAGE_TYPEHASH but assume the digest is already the hashed message\n return keccak256(abi.encode(MESSAGE_TYPEHASH, _decoded.digest, walletsHash));\n } else {\n // Unknown kind\n revert InvalidKind(_decoded.kind);\n }\n }\n\n function hash(\n Decoded memory _decoded\n ) internal view returns (bytes32) {\n bytes32 domain = domainSeparator(_decoded.noChainId, address(this));\n bytes32 structHash = toEIP712(_decoded);\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domain, structHash));\n }\n\n function hashFor(Decoded memory _decoded, address _wallet) internal view returns (bytes32) {\n bytes32 domain = domainSeparator(_decoded.noChainId, _wallet);\n bytes32 structHash = toEIP712(_decoded);\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domain, structHash));\n }\n\n}\n"},"src/modules/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport { Storage } from \"./Storage.sol\";\n\nabstract contract ReentrancyGuard {\n\n bytes32 private constant _INITIAL_VALUE = bytes32(0);\n bytes32 private constant _NOT_ENTERED = bytes32(uint256(1));\n bytes32 private constant _ENTERED = bytes32(uint256(2));\n\n /// @dev keccak256(\"org.sequence.module.reentrancyguard.status\")\n bytes32 private constant STATUS_KEY = bytes32(0xfc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde);\n\n /// @notice Error thrown when a reentrant call is detected\n error ReentrantCall();\n\n /// @notice Prevents a contract from calling itself, directly or indirectly\n modifier nonReentrant() {\n // On the first call to nonReentrant\n // _status will be _NOT_ENTERED or _INITIAL_VALUE\n if (Storage.readBytes32(STATUS_KEY) == _ENTERED) {\n revert ReentrantCall();\n }\n\n // Any calls to nonReentrant after this point will fail\n Storage.writeBytes32(STATUS_KEY, _ENTERED);\n\n _;\n\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n // Notice that because constructors are not available\n // we always start with _INITIAL_VALUE, not _NOT_ENTERED\n Storage.writeBytes32(STATUS_KEY, _NOT_ENTERED);\n }\n\n}\n"},"src/modules/Storage.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\n/// @title Storage\n/// @author Agustin Aguilar\n/// @notice Library for storing data at certain storage slots\nlibrary Storage {\n\n function writeBytes32(bytes32 _key, bytes32 _val) internal {\n assembly {\n sstore(_key, _val)\n }\n }\n\n function readBytes32(\n bytes32 _key\n ) internal view returns (bytes32 val) {\n assembly {\n val := sload(_key)\n }\n }\n\n function writeBytes32Map(bytes32 _key, bytes32 _subKey, bytes32 _val) internal {\n bytes32 key = keccak256(abi.encode(_key, _subKey));\n assembly {\n sstore(key, _val)\n }\n }\n\n function readBytes32Map(bytes32 _key, bytes32 _subKey) internal view returns (bytes32 val) {\n bytes32 key = keccak256(abi.encode(_key, _subKey));\n assembly {\n val := sload(key)\n }\n }\n\n}\n"},"src/modules/auth/BaseAuth.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Payload } from \"../Payload.sol\";\n\nimport { Storage } from \"../Storage.sol\";\nimport { IAuth } from \"../interfaces/IAuth.sol\";\nimport { IERC1271, IERC1271_MAGIC_VALUE_HASH } from \"../interfaces/IERC1271.sol\";\n\nimport { IPartialAuth } from \"../interfaces/IPartialAuth.sol\";\nimport { ISapient } from \"../interfaces/ISapient.sol\";\nimport { BaseSig } from \"./BaseSig.sol\";\n\nimport { SelfAuth } from \"./SelfAuth.sol\";\n\nusing Payload for Payload.Decoded;\n\n/// @title BaseAuth\n/// @author Agustin Aguilar, Michael Standen\n/// @notice Base contract for the auth module\nabstract contract BaseAuth is IAuth, IPartialAuth, ISapient, IERC1271, SelfAuth {\n\n /// @dev keccak256(\"org.sequence.module.auth.static\")\n bytes32 private constant STATIC_SIGNATURE_KEY =\n bytes32(0xc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e86);\n\n /// @notice Error thrown when the sapient signature is invalid\n error InvalidSapientSignature(Payload.Decoded _payload, bytes _signature);\n /// @notice Error thrown when the signature weight is invalid\n error InvalidSignatureWeight(uint256 _threshold, uint256 _weight);\n /// @notice Error thrown when the static signature has expired\n error InvalidStaticSignatureExpired(bytes32 _opHash, uint256 _expires);\n /// @notice Error thrown when the static signature has the wrong caller\n error InvalidStaticSignatureWrongCaller(bytes32 _opHash, address _caller, address _expectedCaller);\n\n /// @notice Event emitted when a static signature is set\n event StaticSignatureSet(bytes32 _hash, address _address, uint96 _timestamp);\n\n function _getStaticSignature(\n bytes32 _hash\n ) internal view returns (address, uint256) {\n uint256 word = uint256(Storage.readBytes32Map(STATIC_SIGNATURE_KEY, _hash));\n return (address(uint160(word >> 96)), uint256(uint96(word)));\n }\n\n function _setStaticSignature(bytes32 _hash, address _address, uint256 _timestamp) internal {\n Storage.writeBytes32Map(\n STATIC_SIGNATURE_KEY, _hash, bytes32(uint256(uint160(_address)) << 96 | (_timestamp & 0xffffffffffffffffffffffff))\n );\n }\n\n /// @notice Get the static signature for a specific hash\n /// @param _hash The hash to get the static signature for\n /// @return address The address associated with the static signature\n /// @return timestamp The timestamp of the static signature\n function getStaticSignature(\n bytes32 _hash\n ) external view returns (address, uint256) {\n return _getStaticSignature(_hash);\n }\n\n /// @notice Set the static signature for a specific hash\n /// @param _hash The hash to set the static signature for\n /// @param _address The address to associate with the static signature\n /// @param _timestamp The timestamp of the static signature\n /// @dev Only callable by the wallet itself\n function setStaticSignature(bytes32 _hash, address _address, uint96 _timestamp) external onlySelf {\n _setStaticSignature(_hash, _address, _timestamp);\n emit StaticSignatureSet(_hash, _address, _timestamp);\n }\n\n /// @notice Update the image hash\n /// @param _imageHash The new image hash\n /// @dev Only callable by the wallet itself\n function updateImageHash(\n bytes32 _imageHash\n ) external virtual onlySelf {\n _updateImageHash(_imageHash);\n }\n\n function signatureValidation(\n Payload.Decoded memory _payload,\n bytes calldata _signature\n ) internal view virtual returns (bool isValid, bytes32 opHash) {\n // Read first bit to determine if static signature is used\n bytes1 signatureFlag = _signature[0];\n\n if (signatureFlag & 0x80 == 0x80) {\n // Load the no chain id flag\n _payload.noChainId = signatureFlag & 0x02 == 0x02;\n opHash = _payload.hash();\n\n (address addr, uint256 timestamp) = _getStaticSignature(opHash);\n if (timestamp <= block.timestamp) {\n revert InvalidStaticSignatureExpired(opHash, timestamp);\n }\n\n if (addr != address(0) && addr != msg.sender) {\n revert InvalidStaticSignatureWrongCaller(opHash, msg.sender, addr);\n }\n\n return (true, opHash);\n }\n\n // Static signature is not used, recover and validate imageHash\n\n uint256 threshold;\n uint256 weight;\n bytes32 imageHash;\n\n (threshold, weight, imageHash,, opHash) =\n BaseSig.recover(_payload, _signature, BaseSig.RecoverMode.Initial, address(0));\n\n // Validate the weight\n if (weight < threshold) {\n revert InvalidSignatureWeight(threshold, weight);\n }\n\n isValid = _isValidImage(imageHash);\n }\n\n /// @inheritdoc ISapient\n function recoverSapientSignature(\n Payload.Decoded memory _payload,\n bytes calldata _signature\n ) external view returns (bytes32) {\n // Copy parent wallets + add caller at the end\n address[] memory parentWallets = new address[](_payload.parentWallets.length + 1);\n\n for (uint256 i = 0; i < _payload.parentWallets.length; i++) {\n parentWallets[i] = _payload.parentWallets[i];\n }\n\n parentWallets[_payload.parentWallets.length] = msg.sender;\n _payload.parentWallets = parentWallets;\n\n (bool isValid,) = signatureValidation(_payload, _signature);\n if (!isValid) {\n revert InvalidSapientSignature(_payload, _signature);\n }\n\n return bytes32(uint256(1));\n }\n\n /// @inheritdoc IERC1271\n function isValidSignature(bytes32 _hash, bytes calldata _signature) public view returns (bytes4) {\n Payload.Decoded memory payload = Payload.fromDigest(_hash);\n\n (bool isValid,) = signatureValidation(payload, _signature);\n if (!isValid) {\n return bytes4(0);\n }\n\n return IERC1271_MAGIC_VALUE_HASH;\n }\n\n /// @inheritdoc IPartialAuth\n function recoverPartialSignature(\n Payload.Decoded memory _payload,\n bytes calldata _signature\n )\n external\n view\n returns (\n uint256 threshold,\n uint256 weight,\n bool isValidImage,\n bytes32 imageHash,\n uint256 checkpoint,\n bytes32 opHash\n )\n {\n (threshold, weight, imageHash, checkpoint, opHash) =\n BaseSig.recover(_payload, _signature, BaseSig.RecoverMode.Initial, address(0));\n isValidImage = _isValidImage(imageHash);\n }\n\n}\n"},"src/modules/auth/BaseSig.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { LibBytes } from \"../../utils/LibBytes.sol\";\nimport { LibOptim } from \"../../utils/LibOptim.sol\";\nimport { Payload } from \"../Payload.sol\";\n\nimport { ICheckpointer, Snapshot } from \"../interfaces/ICheckpointer.sol\";\nimport { IERC1271, IERC1271_MAGIC_VALUE_HASH } from \"../interfaces/IERC1271.sol\";\nimport { ISapient, ISapientCompact } from \"../interfaces/ISapient.sol\";\n\nusing LibBytes for bytes;\nusing Payload for Payload.Decoded;\n\n/// @title BaseSig\n/// @author Agustin Aguilar, Michael Standen, William Hua, Shun Kakinoki\n/// @notice Library for recovering signatures from the base-auth payload\nlibrary BaseSig {\n\n uint256 internal constant FLAG_SIGNATURE_HASH = 0;\n uint256 internal constant FLAG_ADDRESS = 1;\n uint256 internal constant FLAG_SIGNATURE_ERC1271 = 2;\n uint256 internal constant FLAG_NODE = 3;\n uint256 internal constant FLAG_BRANCH = 4;\n uint256 internal constant FLAG_SUBDIGEST = 5;\n uint256 internal constant FLAG_NESTED = 6;\n uint256 internal constant FLAG_SIGNATURE_ETH_SIGN = 7;\n uint256 internal constant FLAG_SIGNATURE_ANY_ADDRESS_SUBDIGEST = 8;\n uint256 internal constant FLAG_SIGNATURE_SAPIENT = 9;\n uint256 internal constant FLAG_SIGNATURE_SAPIENT_COMPACT = 10;\n\n /// @notice Error thrown when the weight is too low for a chained signature\n error LowWeightChainedSignature(bytes _signature, uint256 _threshold, uint256 _weight);\n /// @notice Error thrown when the ERC1271 signature is invalid\n error InvalidERC1271Signature(bytes32 _opHash, address _signer, bytes _signature);\n /// @notice Error thrown when the checkpoint order is wrong\n error WrongChainedCheckpointOrder(uint256 _nextCheckpoint, uint256 _checkpoint);\n /// @notice Error thrown when the snapshot is unused\n error UnusedSnapshot(Snapshot _snapshot);\n /// @notice Error thrown when the signature flag is invalid\n error InvalidSignatureFlag(uint256 _flag);\n /// @notice Error thrown when a chained signature is nested inside another chained signature\n error ChainedSignatureNestedInChainedSignature();\n\n enum RecoverMode {\n Initial,\n UseProvidedCheckpointer,\n SkipSnapshotRead\n }\n\n function _leafForAddressAndWeight(address _addr, uint256 _weight) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"Sequence signer:\\n\", _addr, _weight));\n }\n\n function _leafForNested(bytes32 _node, uint256 _threshold, uint256 _weight) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"Sequence nested config:\\n\", _node, _threshold, _weight));\n }\n\n function _leafForSapient(address _addr, uint256 _weight, bytes32 _imageHash) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"Sequence sapient config:\\n\", _addr, _weight, _imageHash));\n }\n\n function _leafForHardcodedSubdigest(\n bytes32 _subdigest\n ) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"Sequence static digest:\\n\", _subdigest));\n }\n\n function _leafForAnyAddressSubdigest(\n bytes32 _anyAddressSubdigest\n ) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"Sequence any address subdigest:\\n\", _anyAddressSubdigest));\n }\n\n function recover(\n Payload.Decoded memory _payload,\n bytes calldata _signature,\n RecoverMode _recoverMode,\n address _checkpointer\n ) internal view returns (uint256 threshold, uint256 weight, bytes32 imageHash, uint256 checkpoint, bytes32 opHash) {\n // First byte is the signature flag\n (uint256 signatureFlag, uint256 rindex) = _signature.readFirstUint8();\n\n // The possible flags are:\n // - 0000 00XX (bits [1..0]): signature type (00 = normal, 01/11 = chained, 10 = no chain id)\n // - 000X XX00 (bits [4..2]): checkpoint size (000 = 0 bytes, 001 = 1 byte, 010 = 2 bytes...)\n // - 00X0 0000 (bit [5]): threshold size (0 = 1 byte, 1 = 2 bytes)\n // - 0X00 0000 (bit [6]): set if imageHash checkpointer is used\n // - X000 0000 (bit [7]): reserved by base-auth\n\n Snapshot memory snapshot;\n\n // Recover the imageHash checkpointer if any\n // but checkpointer passed as argument takes precedence\n // since it can be defined by the chained signatures\n if (_recoverMode != RecoverMode.UseProvidedCheckpointer) {\n // Clear the provided checkpointer because we will either\n // read our own, or it is zero\n _checkpointer = address(0);\n\n if (signatureFlag & 0x40 == 0x40) {\n (_checkpointer, rindex) = _signature.readAddress(rindex);\n\n if (_recoverMode != RecoverMode.SkipSnapshotRead) {\n // Next 3 bytes determine the checkpointer data size\n uint256 checkpointerDataSize;\n (checkpointerDataSize, rindex) = _signature.readUint24(rindex);\n\n // Read the checkpointer data\n bytes memory checkpointerData = _signature[rindex:rindex + checkpointerDataSize];\n\n // Call the middleware\n snapshot = ICheckpointer(_checkpointer).snapshotFor(address(this), checkpointerData);\n\n rindex += checkpointerDataSize;\n }\n }\n }\n\n // If signature type is 01 or 11 we do a chained signature\n if (signatureFlag & 0x01 == 0x01) {\n if (_recoverMode != RecoverMode.Initial) {\n revert ChainedSignatureNestedInChainedSignature();\n }\n return recoverChained(_payload, _checkpointer, snapshot, _signature[rindex:]);\n }\n\n // If the signature type is 10 we do a no chain id signature\n _payload.noChainId = signatureFlag & 0x02 == 0x02;\n\n {\n // Recover the checkpoint using the size defined by the flag\n uint256 checkpointSize = (signatureFlag & 0x1c) >> 2;\n (checkpoint, rindex) = _signature.readUintX(rindex, checkpointSize);\n }\n\n // Recover the threshold, using the flag for the size\n {\n uint256 thresholdSize = ((signatureFlag & 0x20) >> 5) + 1;\n (threshold, rindex) = _signature.readUintX(rindex, thresholdSize);\n }\n\n // Recover the tree\n opHash = _payload.hash();\n (weight, imageHash) = recoverBranch(_payload, opHash, _signature[rindex:]);\n\n imageHash = LibOptim.fkeccak256(imageHash, bytes32(threshold));\n imageHash = LibOptim.fkeccak256(imageHash, bytes32(checkpoint));\n imageHash = LibOptim.fkeccak256(imageHash, bytes32(uint256(uint160(_checkpointer))));\n\n // If the snapshot is used, either the imageHash must match\n // or the checkpoint must be greater than the snapshot checkpoint\n if (snapshot.imageHash != bytes32(0) && snapshot.imageHash != imageHash && checkpoint <= snapshot.checkpoint) {\n revert UnusedSnapshot(snapshot);\n }\n }\n\n function recoverChained(\n Payload.Decoded memory _payload,\n address _checkpointer,\n Snapshot memory _snapshot,\n bytes calldata _signature\n ) internal view returns (uint256 threshold, uint256 weight, bytes32 imageHash, uint256 checkpoint, bytes32 opHash) {\n Payload.Decoded memory linkedPayload;\n linkedPayload.kind = Payload.KIND_CONFIG_UPDATE;\n\n uint256 rindex;\n uint256 prevCheckpoint = type(uint256).max;\n\n while (rindex < _signature.length) {\n uint256 nrindex;\n\n {\n uint256 sigSize;\n (sigSize, rindex) = _signature.readUint24(rindex);\n nrindex = sigSize + rindex;\n }\n\n RecoverMode recoverMode =\n nrindex == _signature.length ? RecoverMode.UseProvidedCheckpointer : RecoverMode.SkipSnapshotRead;\n\n if (prevCheckpoint == type(uint256).max) {\n (threshold, weight, imageHash, checkpoint, opHash) =\n recover(_payload, _signature[rindex:nrindex], recoverMode, _checkpointer);\n } else {\n (threshold, weight, imageHash, checkpoint,) =\n recover(linkedPayload, _signature[rindex:nrindex], recoverMode, _checkpointer);\n }\n\n if (weight < threshold) {\n revert LowWeightChainedSignature(_signature[rindex:nrindex], threshold, weight);\n }\n rindex = nrindex;\n\n if (_snapshot.imageHash == imageHash) {\n _snapshot.imageHash = bytes32(0);\n }\n\n if (checkpoint >= prevCheckpoint) {\n revert WrongChainedCheckpointOrder(checkpoint, prevCheckpoint);\n }\n\n linkedPayload.imageHash = imageHash;\n prevCheckpoint = checkpoint;\n }\n\n if (_snapshot.imageHash != bytes32(0) && checkpoint <= _snapshot.checkpoint) {\n revert UnusedSnapshot(_snapshot);\n }\n }\n\n function recoverBranch(\n Payload.Decoded memory _payload,\n bytes32 _opHash,\n bytes calldata _signature\n ) internal view returns (uint256 weight, bytes32 root) {\n unchecked {\n uint256 rindex;\n\n // Iterate until the image is completed\n while (rindex < _signature.length) {\n // The first byte is half flag (the top nibble)\n // and the second set of 4 bits can freely be used by the part\n\n // Read next item type\n uint256 firstByte;\n (firstByte, rindex) = _signature.readUint8(rindex);\n\n // The top 4 bits are the flag\n uint256 flag = (firstByte & 0xf0) >> 4;\n\n // Signature hash (0x00)\n if (flag == FLAG_SIGNATURE_HASH) {\n // Free bits layout:\n // - bits [3..0]: Weight (0000 = dynamic, 0001 = 1, ..., 1111 = 15)\n // We read 64 bytes for an ERC-2098 compact signature (r, yParityAndS).\n // The top bit of yParityAndS is yParity, the remaining 255 bits are s.\n\n uint8 addrWeight = uint8(firstByte & 0x0f);\n if (addrWeight == 0) {\n (addrWeight, rindex) = _signature.readUint8(rindex);\n }\n\n bytes32 r;\n bytes32 s;\n uint8 v;\n (r, s, v, rindex) = _signature.readRSVCompact(rindex);\n\n address addr = ecrecover(_opHash, v, r, s);\n\n weight += addrWeight;\n bytes32 node = _leafForAddressAndWeight(addr, addrWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Address (0x01) (without signature)\n if (flag == FLAG_ADDRESS) {\n // Free bits layout:\n // - bits [3..0]: Weight (0000 = dynamic, 0001 = 1, 0010 = 2, ...)\n\n // Read weight\n uint8 addrWeight = uint8(firstByte & 0x0f);\n if (addrWeight == 0) {\n (addrWeight, rindex) = _signature.readUint8(rindex);\n }\n\n // Read address\n address addr;\n (addr, rindex) = _signature.readAddress(rindex);\n\n // Compute the merkle root WITHOUT adding the weight\n bytes32 node = _leafForAddressAndWeight(addr, addrWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Signature ERC1271 (0x02)\n if (flag == FLAG_SIGNATURE_ERC1271) {\n // Free bits layout:\n // - XX00 : Signature size size (00 = 0 byte, 01 = 1 byte, 10 = 2 bytes, 11 = 3 bytes)\n // - 00XX : Weight (00 = dynamic, 01 = 1, 10 = 2, 11 = 3)\n\n // Read weight\n uint8 addrWeight = uint8(firstByte & 0x03);\n if (addrWeight == 0) {\n (addrWeight, rindex) = _signature.readUint8(rindex);\n }\n\n // Read signer\n address addr;\n (addr, rindex) = _signature.readAddress(rindex);\n\n // Read signature size\n uint256 sizeSize = uint8(firstByte & 0x0c) >> 2;\n uint256 size;\n (size, rindex) = _signature.readUintX(rindex, sizeSize);\n\n // Read dynamic size signature\n uint256 nrindex = rindex + size;\n\n // Call the ERC1271 contract to check if the signature is valid\n if (IERC1271(addr).isValidSignature(_opHash, _signature[rindex:nrindex]) != IERC1271_MAGIC_VALUE_HASH) {\n revert InvalidERC1271Signature(_opHash, addr, _signature[rindex:nrindex]);\n }\n rindex = nrindex;\n // Add the weight and compute the merkle root\n weight += addrWeight;\n bytes32 node = _leafForAddressAndWeight(addr, addrWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Node (0x03)\n if (flag == FLAG_NODE) {\n // Free bits left unused\n\n // Read node hash\n bytes32 node;\n (node, rindex) = _signature.readBytes32(rindex);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Branch (0x04)\n if (flag == FLAG_BRANCH) {\n // Free bits layout:\n // - XXXX : Size size (0000 = 0 byte, 0001 = 1 byte, 0010 = 2 bytes, ...)\n\n // Read size\n uint256 sizeSize = uint8(firstByte & 0x0f);\n uint256 size;\n (size, rindex) = _signature.readUintX(rindex, sizeSize);\n\n // Enter a branch of the signature merkle tree\n uint256 nrindex = rindex + size;\n\n (uint256 nweight, bytes32 node) = recoverBranch(_payload, _opHash, _signature[rindex:nrindex]);\n rindex = nrindex;\n\n weight += nweight;\n root = LibOptim.fkeccak256(root, node);\n continue;\n }\n\n // Nested (0x06)\n if (flag == FLAG_NESTED) {\n // Unused free bits:\n // - XX00 : Weight (00 = dynamic, 01 = 1, 10 = 2, 11 = 3)\n // - 00XX : Threshold (00 = dynamic, 01 = 1, 10 = 2, 11 = 3)\n\n // Enter a branch of the signature merkle tree\n // but with an internal threshold and an external fixed weight\n uint256 externalWeight = uint8(firstByte & 0x0c) >> 2;\n if (externalWeight == 0) {\n (externalWeight, rindex) = _signature.readUint8(rindex);\n }\n\n uint256 internalThreshold = uint8(firstByte & 0x03);\n if (internalThreshold == 0) {\n (internalThreshold, rindex) = _signature.readUint16(rindex);\n }\n\n uint256 size;\n (size, rindex) = _signature.readUint24(rindex);\n uint256 nrindex = rindex + size;\n\n (uint256 internalWeight, bytes32 internalRoot) = recoverBranch(_payload, _opHash, _signature[rindex:nrindex]);\n rindex = nrindex;\n\n if (internalWeight >= internalThreshold) {\n weight += externalWeight;\n }\n\n bytes32 node = _leafForNested(internalRoot, internalThreshold, externalWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Subdigest (0x05)\n if (flag == FLAG_SUBDIGEST) {\n // Free bits left unused\n\n // A hardcoded always accepted digest\n // it pushes the weight to the maximum\n bytes32 hardcoded;\n (hardcoded, rindex) = _signature.readBytes32(rindex);\n if (hardcoded == _opHash) {\n weight = type(uint256).max;\n }\n\n bytes32 node = _leafForHardcodedSubdigest(hardcoded);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Signature ETH Sign (0x07)\n if (flag == FLAG_SIGNATURE_ETH_SIGN) {\n // Free bits layout:\n // - bits [3..0]: Weight (0000 = dynamic, 0001 = 1, ..., 1111 = 15)\n // We read 64 bytes for an ERC-2098 compact signature (r, yParityAndS).\n // The top bit of yParityAndS is yParity, the remaining 255 bits are s.\n\n uint8 addrWeight = uint8(firstByte & 0x0f);\n if (addrWeight == 0) {\n (addrWeight, rindex) = _signature.readUint8(rindex);\n }\n\n bytes32 r;\n bytes32 s;\n uint8 v;\n (r, s, v, rindex) = _signature.readRSVCompact(rindex);\n\n address addr = ecrecover(keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", _opHash)), v, r, s);\n\n weight += addrWeight;\n bytes32 node = _leafForAddressAndWeight(addr, addrWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Signature Any address subdigest (0x08)\n // similar to subdigest, but allows for counter-factual payloads\n if (flag == FLAG_SIGNATURE_ANY_ADDRESS_SUBDIGEST) {\n // Free bits left unused\n\n // A hardcoded always accepted digest\n // it pushes the weight to the maximum\n bytes32 hardcoded;\n (hardcoded, rindex) = _signature.readBytes32(rindex);\n bytes32 anyAddressOpHash = _payload.hashFor(address(0));\n if (hardcoded == anyAddressOpHash) {\n weight = type(uint256).max;\n }\n\n bytes32 node = _leafForAnyAddressSubdigest(hardcoded);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Signature Sapient (0x09)\n if (flag == FLAG_SIGNATURE_SAPIENT) {\n // Free bits layout:\n // - XX00 : Signature size size (00 = 0 byte, 01 = 1 byte, 10 = 2 bytes, 11 = 3 bytes)\n // - 00XX : Weight (00 = dynamic, 01 = 1, 10 = 2, 11 = 3)\n\n // Read signer and weight\n uint8 addrWeight = uint8(firstByte & 0x03);\n if (addrWeight == 0) {\n (addrWeight, rindex) = _signature.readUint8(rindex);\n }\n\n address addr;\n (addr, rindex) = _signature.readAddress(rindex);\n\n // Read signature size\n uint256 size;\n {\n uint256 sizeSize = uint8(firstByte & 0x0c) >> 2;\n (size, rindex) = _signature.readUintX(rindex, sizeSize);\n }\n\n // Read dynamic size signature\n uint256 nrindex = rindex + size;\n\n // Call the ERC1271 contract to check if the signature is valid\n bytes32 sapientImageHash = ISapient(addr).recoverSapientSignature(_payload, _signature[rindex:nrindex]);\n rindex = nrindex;\n\n // Add the weight and compute the merkle root\n weight += addrWeight;\n bytes32 node = _leafForSapient(addr, addrWeight, sapientImageHash);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Signature Sapient Compact (0x0A)\n if (flag == FLAG_SIGNATURE_SAPIENT_COMPACT) {\n // Free bits layout:\n // - XX00 : Signature size size (00 = 0 byte, 01 = 1 byte, 10 = 2 bytes, 11 = 3 bytes)\n // - 00XX : Weight (00 = dynamic, 01 = 1, 10 = 2, 11 = 3)\n\n // Read signer and weight\n uint8 addrWeight = uint8(firstByte & 0x03);\n if (addrWeight == 0) {\n (addrWeight, rindex) = _signature.readUint8(rindex);\n }\n\n address addr;\n (addr, rindex) = _signature.readAddress(rindex);\n\n // Read signature size\n uint256 sizeSize = uint8(firstByte & 0x0c) >> 2;\n uint256 size;\n (size, rindex) = _signature.readUintX(rindex, sizeSize);\n\n // Read dynamic size signature\n uint256 nrindex = rindex + size;\n\n // Call the Sapient contract to check if the signature is valid\n bytes32 sapientImageHash =\n ISapientCompact(addr).recoverSapientSignatureCompact(_opHash, _signature[rindex:nrindex]);\n rindex = nrindex;\n // Add the weight and compute the merkle root\n weight += addrWeight;\n bytes32 node = _leafForSapient(addr, addrWeight, sapientImageHash);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n revert InvalidSignatureFlag(flag);\n }\n }\n }\n\n}\n"},"src/modules/auth/SelfAuth.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\n/// @title SelfAuth\n/// @author Agustin Aguilar, Michael Standen\n/// @notice Modifier for checking if the caller is the same as the contract\nabstract contract SelfAuth {\n\n /// @notice Error thrown when the caller is not the same as the contract\n error OnlySelf(address _sender);\n\n modifier onlySelf() {\n if (msg.sender != address(this)) {\n revert OnlySelf(msg.sender);\n }\n _;\n }\n\n}\n"},"src/modules/interfaces/IAuth.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\n/// @title IAuth\n/// @author Agustin Aguilar, Michael Standen, William Hua\n/// @notice Internal interface for the auth modules\nabstract contract IAuth {\n\n function _isValidImage(\n bytes32 imageHash\n ) internal view virtual returns (bool isValid);\n\n function _updateImageHash(\n bytes32 imageHash\n ) internal virtual;\n\n}\n"},"src/modules/interfaces/ICheckpointer.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\n/// @notice Snapshot for a specific wallet\n/// @param imageHash Image hash of the wallet\n/// @param checkpoint Checkpoint identifier\nstruct Snapshot {\n bytes32 imageHash;\n uint256 checkpoint;\n}\n\n/// @title ICheckpointer\n/// @author Agustin Aguilar\n/// @notice Interface for the checkpointer module\ninterface ICheckpointer {\n\n /// @notice Get the snapshot for a specific wallet\n /// @param _wallet The wallet address\n /// @param _proof The proof\n /// @return snapshot The snapshot\n function snapshotFor(address _wallet, bytes calldata _proof) external view returns (Snapshot memory snapshot);\n\n}\n"},"src/modules/interfaces/IDelegatedExtension.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\n/// @title IDelegatedExtension\n/// @author Agustin Aguilar\n/// @notice Interface for the delegated extension module\ninterface IDelegatedExtension {\n\n /// @notice Handle a sequence delegate call\n /// @param _opHash The operation hash\n /// @param _startingGas The starting gas\n /// @param _index The index\n /// @param _numCalls The number of calls\n /// @param _space The space\n /// @param _data The data\n function handleSequenceDelegateCall(\n bytes32 _opHash,\n uint256 _startingGas,\n uint256 _index,\n uint256 _numCalls,\n uint256 _space,\n bytes calldata _data\n ) external;\n\n}\n"},"src/modules/interfaces/IERC1271.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\nbytes4 constant IERC1271_MAGIC_VALUE_HASH = 0x1626ba7e;\nbytes4 constant IERC1271_MAGIC_VALUE_BYTES = 0x20c13b0b;\n\n/// @title IERC1271\n/// @notice Interface for ERC1271\ninterface IERC1271 {\n\n /// @notice Verifies whether the provided signature is valid with respect to the provided hash\n /// @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n /// > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\"isValidSignature(bytes32,bytes)\")\n /// > This function MAY modify Ethereum's state\n /// @param _hash keccak256 hash that was signed\n /// @param _signature Signature byte array associated with _data\n /// @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\n function isValidSignature(bytes32 _hash, bytes calldata _signature) external view returns (bytes4 magicValue);\n\n}\n\n/// @title IERC1271Data\n/// @notice Deprecated interface for ERC1271 using bytes instead of bytes32\ninterface IERC1271Data {\n\n /// @notice Verifies whether the provided signature is valid with respect to the provided hash\n /// @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n /// > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n /// > This function MAY modify Ethereum's state\n /// @param _data Data that was signed\n /// @param _signature Signature byte array associated with _data\n /// @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\n function isValidSignature(bytes calldata _data, bytes calldata _signature) external view returns (bytes4 magicValue);\n\n}\n"},"src/modules/interfaces/IPartialAuth.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Payload } from \"../Payload.sol\";\n\n/// @title IPartialAuth\n/// @author Agustin Aguilar\n/// @notice Interface for the partial auth module\ninterface IPartialAuth {\n\n /// @notice Recover the partial signature\n /// @param _payload The payload\n /// @param _signature The signature to recover\n /// @return threshold The signature threshold\n /// @return weight The derived weight\n /// @return isValidImage Whether the image hash is valid\n /// @return imageHash The derived image hash\n /// @return checkpoint The checkpoint identifier\n /// @return opHash The hash of the payload\n function recoverPartialSignature(\n Payload.Decoded calldata _payload,\n bytes calldata _signature\n )\n external\n view\n returns (\n uint256 threshold,\n uint256 weight,\n bool isValidImage,\n bytes32 imageHash,\n uint256 checkpoint,\n bytes32 opHash\n );\n\n}\n"},"src/modules/interfaces/ISapient.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Payload } from \"../Payload.sol\";\n\n/// @title ISapient\n/// @author Agustin Aguilar, Michael Standen\n/// @notice Sapient signers take an explicit payload and return their own \"imageHash\" as result\n/// @dev The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration\ninterface ISapient {\n\n /// @notice Recovers the image hash of a given signature\n /// @param payload The payload to recover the signature from\n /// @param signature The signature to recover the image hash from\n /// @return imageHash The recovered image hash\n function recoverSapientSignature(\n Payload.Decoded calldata payload,\n bytes calldata signature\n ) external view returns (bytes32 imageHash);\n\n}\n\n/// @title ISapientCompact\n/// @author Agustin Aguilar, Michael Standen\n/// @notice Sapient signers take a compacted payload and return their own \"imageHash\" as result\n/// @dev The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration\ninterface ISapientCompact {\n\n /// @notice Recovers the image hash of a given signature, using a hashed payload\n /// @param digest The digest of the payload\n /// @param signature The signature to recover the image hash from\n /// @return imageHash The recovered image hash\n function recoverSapientSignatureCompact(\n bytes32 digest,\n bytes calldata signature\n ) external view returns (bytes32 imageHash);\n\n}\n"},"src/utils/LibBytes.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\n/// @title Library for reading data from bytes arrays\n/// @author Agustin Aguilar (aa@horizon.io), Michael Standen (mstan@horizon.io)\n/// @notice This library contains functions for reading data from bytes arrays.\n/// @dev These functions do not check if the input index is within the bounds of the data array.\n/// @dev Reading out of bounds may return dirty values.\nlibrary LibBytes {\n\n function readFirstUint8(\n bytes calldata _data\n ) internal pure returns (uint8 a, uint256 newPointer) {\n assembly {\n let word := calldataload(_data.offset)\n a := shr(248, word)\n newPointer := 1\n }\n }\n\n function readUint8(bytes calldata _data, uint256 _index) internal pure returns (uint8 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(248, word)\n newPointer := add(_index, 1)\n }\n }\n\n function readUint16(bytes calldata _data, uint256 _index) internal pure returns (uint16 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(240, word)\n newPointer := add(_index, 2)\n }\n }\n\n function readUint24(bytes calldata _data, uint256 _index) internal pure returns (uint24 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(232, word)\n newPointer := add(_index, 3)\n }\n }\n\n function readUint64(bytes calldata _data, uint256 _index) internal pure returns (uint64 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(192, word)\n newPointer := add(_index, 8)\n }\n }\n\n function readUint160(bytes calldata _data, uint256 _index) internal pure returns (uint160 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(96, word)\n newPointer := add(_index, 20)\n }\n }\n\n function readUint256(bytes calldata _data, uint256 _index) internal pure returns (uint256 a, uint256 newPointer) {\n assembly {\n a := calldataload(add(_index, _data.offset))\n newPointer := add(_index, 32)\n }\n }\n\n function readUintX(\n bytes calldata _data,\n uint256 _index,\n uint256 _length\n ) internal pure returns (uint256 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n let shift := sub(256, mul(_length, 8))\n a := and(shr(shift, word), sub(shl(mul(8, _length), 1), 1))\n newPointer := add(_index, _length)\n }\n }\n\n function readBytes4(bytes calldata _data, uint256 _pointer) internal pure returns (bytes4 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_pointer, _data.offset))\n a := and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n newPointer := add(_pointer, 4)\n }\n }\n\n function readBytes32(bytes calldata _data, uint256 _pointer) internal pure returns (bytes32 a, uint256 newPointer) {\n assembly {\n a := calldataload(add(_pointer, _data.offset))\n newPointer := add(_pointer, 32)\n }\n }\n\n function readAddress(bytes calldata _data, uint256 _index) internal pure returns (address a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := and(shr(96, word), 0xffffffffffffffffffffffffffffffffffffffff)\n newPointer := add(_index, 20)\n }\n }\n\n /// @dev ERC-2098 Compact Signature\n function readRSVCompact(\n bytes calldata _data,\n uint256 _index\n ) internal pure returns (bytes32 r, bytes32 s, uint8 v, uint256 newPointer) {\n uint256 yParityAndS;\n assembly {\n r := calldataload(add(_index, _data.offset))\n yParityAndS := calldataload(add(_index, add(_data.offset, 32)))\n newPointer := add(_index, 64)\n }\n uint256 yParity = uint256(yParityAndS >> 255);\n s = bytes32(uint256(yParityAndS) & ((1 << 255) - 1));\n v = uint8(yParity) + 27;\n }\n\n}\n"},"src/utils/LibOptim.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\n/// @title LibOptim\n/// @author Agustin Aguilar\n/// @notice Library for optimized EVM operations\nlibrary LibOptim {\n\n /**\n * @notice Computes the keccak256 hash of two 32-byte inputs.\n * @dev It uses only scratch memory space.\n * @param _a The first 32 bytes of the hash.\n * @param _b The second 32 bytes of the hash.\n * @return c The keccak256 hash of the two 32-byte inputs.\n */\n function fkeccak256(bytes32 _a, bytes32 _b) internal pure returns (bytes32 c) {\n assembly {\n mstore(0, _a)\n mstore(32, _b)\n c := keccak256(0, 64)\n }\n }\n\n /**\n * @notice Returns the return data from the last call.\n * @return r The return data from the last call.\n */\n function returnData() internal pure returns (bytes memory r) {\n assembly {\n let size := returndatasize()\n r := mload(0x40)\n let start := add(r, 32)\n mstore(0x40, add(start, size))\n mstore(r, size)\n returndatacopy(start, 0, size)\n }\n }\n\n /**\n * @notice Calls another contract with the given parameters.\n * @dev This method doesn't increase the memory pointer.\n * @param _to The address of the contract to call.\n * @param _val The value to send to the contract.\n * @param _gas The amount of gas to provide for the call.\n * @param _data The data to send to the contract.\n * @return r The success status of the call.\n */\n function call(address _to, uint256 _val, uint256 _gas, bytes memory _data) internal returns (bool r) {\n assembly {\n r := call(_gas, _to, _val, add(_data, 32), mload(_data), 0, 0)\n }\n }\n\n /**\n * @notice Calls another contract with the given parameters, using delegatecall.\n * @dev This method doesn't increase the memory pointer.\n * @param _to The address of the contract to call.\n * @param _gas The amount of gas to provide for the call.\n * @param _data The data to send to the contract.\n * @return r The success status of the call.\n */\n function delegatecall(address _to, uint256 _gas, bytes memory _data) internal returns (bool r) {\n assembly {\n r := delegatecall(_gas, _to, add(_data, 32), mload(_data), 0, 0)\n }\n }\n\n}\n"}},"settings":{"remappings":["account-abstraction/=lib/account-abstraction/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","erc2470-libs/=lib/erc2470-libs/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":4294967295},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"src/Guest.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/Calls.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/Nonce.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/Payload.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/ReentrancyGuard.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/Storage.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/auth/BaseAuth.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/auth/BaseSig.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/auth/SelfAuth.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IAuth.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/ICheckpointer.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IDelegatedExtension.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IERC1271.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IPartialAuth.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/ISapient.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/utils/LibBytes.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/utils/LibOptim.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":true,"libraries":{}},"allowPaths":["/home/agusx1211/workspaces/wallet-contracts-v3","/home/agusx1211/workspaces/wallet-contracts-v3/lib"],"basePath":"/home/agusx1211/workspaces/wallet-contracts-v3","includePaths":["/home/agusx1211/workspaces/wallet-contracts-v3"]},"output":{"contracts":{"src/Guest.sol":{"Guest":{"abi":[{"type":"fallback","stateMutability":"payable"},{"type":"event","name":"CallAborted","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_returnData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"CallFailed","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_returnData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"CallSkipped","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CallSucceeded","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"DelegateCallNotAllowed","inputs":[{"name":"index","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidPackedLength","inputs":[]},{"type":"error","name":"NotEnoughGas","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_gasLeft","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Reverted","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_returnData","type":"bytes","internalType":"bytes"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"DelegateCallNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPackedLength\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasLeft\",\"type\":\"uint256\"}],\"name\":\"NotEnoughGas\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"CallAborted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"CallSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, William Hua, Michael Standen\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Guest\",\"version\":1},\"userdoc\":{\"errors\":{\"DelegateCallNotAllowed(uint256)\":[{\"notice\":\"Error thrown when a delegate call is not allowed\"}],\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidPackedLength()\":[{\"notice\":\"Error thrown when the encoding is invalid\"}],\"NotEnoughGas((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),uint256,uint256)\":[{\"notice\":\"Error thrown when there is not enough gas\"}],\"Reverted((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),uint256,bytes)\":[{\"notice\":\"Error thrown when a call reverts\"}]},\"events\":{\"CallAborted(bytes32,uint256,bytes)\":{\"notice\":\"Emitted when a call is aborted\"},\"CallFailed(bytes32,uint256,bytes)\":{\"notice\":\"Emitted when a call fails\"},\"CallSkipped(bytes32,uint256)\":{\"notice\":\"Emitted when a call is skipped\"},\"CallSucceeded(bytes32,uint256)\":{\"notice\":\"Emitted when a call succeeds\"}},\"kind\":\"user\",\"methods\":{},\"notice\":\"Guest for dispatching calls\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Guest.sol\":\"Guest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/Guest.sol\":{\"keccak256\":\"0x2695e5586fa3d0f535ea5e45499f51d96cf69866043295669938972d43c002b1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://eb576114e23058e8c64a9507b94507f2a4e0f35262d1d9805948627ac146b6ac\",\"dweb:/ipfs/QmPgGzasg5kGwU9GqSne7FaJAqZhPxpjzDpDrGB7p4yZaA\"]},\"src/modules/Calls.sol\":{\"keccak256\":\"0xa1341a9dc102ceec53bcdff123322e7ecb19cec6101086944c87552284969eeb\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36619e8abb171d9f812be49572fba6d64dd62c0d7a6fb674cde1a0cf28a5f919\",\"dweb:/ipfs/QmWR45P7Q4M44QfyNQvA3ThMyApz3snMJVRin8ujq2ouQK\"]},\"src/modules/Nonce.sol\":{\"keccak256\":\"0x56fbf6dc9b34ab60ae8a32ffb6f583c003bb8f4a5223ce704e982400fa403fab\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://492f53628633b862702cf8f9b726067a722c94028133a8a4c4fcf3d0e73ad803\",\"dweb:/ipfs/QmTHNy4XbH47YZaqKDpknb5aApjRH9HVAREHN7N5vEFWEV\"]},\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/ReentrancyGuard.sol\":{\"keccak256\":\"0x566e105b1a53f49cf099037f3cb4a9739522d72739dc65f1169b97e4fbe07b32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d811a16613746e5290eab76eb4055d98a1e64e1086632697d09b0a3759a6bac5\",\"dweb:/ipfs/QmPJ33JvAxwn1sTCNvYG2TWsFo991KND2ia8JcvZ26Dge9\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]},\"src/modules/auth/BaseAuth.sol\":{\"keccak256\":\"0x1aea32726fe1e8c204805a01fde5a7c832caa76960bf57bbaa2cf13e6804b9dc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://851b09d56bfc9b2f2025f1351ca2a4ae5e9c82e8fb26e58216cff849fc9f8320\",\"dweb:/ipfs/QmeHcagSWRPXR1ac1jEChoYTDzfhLyvfGKAgfu4nc3uctc\"]},\"src/modules/auth/BaseSig.sol\":{\"keccak256\":\"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46\",\"dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ\"]},\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]},\"src/modules/interfaces/IAuth.sol\":{\"keccak256\":\"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353\",\"dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp\"]},\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]},\"src/modules/interfaces/IDelegatedExtension.sol\":{\"keccak256\":\"0xa2ae897e90fd70dd4a9e172bc04d019ba9c512e72c2df65fcb6daf87dd5ceb90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cdf4b7c3dfb0aef6c9dbe8b2a0542018dc756ef2252d7101bcb3186192da0a11\",\"dweb:/ipfs/QmPHCVu1DJ7fBrPBYA5y3hoF3a3XFEBwYCZ1ErGaxPhcYL\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/IPartialAuth.sol\":{\"keccak256\":\"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519\",\"dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601557610fa6908161001b8239f35b600080fdfe608060405261000c61036d565b60008082523560f81c600190816001808316036102c75750600060608401525b600761003b60ff831660011c90565b168061027a575b5060108181160361024a575060015b61005a816103e0565b90604084019182526000915b8183106100b557505050360361008b57806100836100899261057d565b90610918565b005b7f0bdf80380000000000000000000000000000000000000000000000000000000060005260046000fd5b9091926100c76001823560f81c920190565b93908460018083160361022a5750610100306100e484865161047e565b519073ffffffffffffffffffffffffffffffffffffffff169052565b60028082161461020c575b6004808216146101c1575b60088082161461018a575b9061017261016c60c08461014c60108060019816146080610143888b5161047e565b51019015159052565b61016260208083161460a0610143888b5161047e565b1660061c60031690565b60ff1690565b60c061017f83865161047e565b510152019190610066565b939061017261016c60c06101a46001959060208235920190565b989060606101b3878a5161047e565b510152939450505050610121565b9361020690803560e81c906003016101ff6101e66101df84846104c1565b83366104fd565b919060406101f5888a5161047e565b5101923691610518565b90526104c1565b93610116565b938035906020019490602061022284865161047e565b51015261010b565b6102459550803560601c9060140195906100e484865161047e565b610100565b6020908116036102695761ffff90803560f01c906002015b9116610051565b60ff90803560f81c90600101610262565b6102ba919291908060031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b0190843590610100031c16920190565b9190608084015238610042565b8035606090811c90850152601401915061002c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff82111761032757604052565b6102dc565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761032757604052565b60405190610120820182811067ffffffffffffffff821117610327576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b67ffffffffffffffff81116103275760051b60200190565b906103ea826103c8565b6103f7604051918261032c565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061042582946103c8565b019060005b82811061043657505050565b6020906040516104458161030b565b60008152600083820152606060408201526000606082015260006080820152600060a0820152600060c08201528282850101520161042a565b80518210156104925760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919082018092116104ce57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291928382116105135783116105135780920390565b600080fd5b92919267ffffffffffffffff8211610327576040519161056060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461032c565b829481845281830111610513578281602093846000960137010152565b6020810151156106a15761066f61069b61062d60005b60405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f83527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408301527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606083015260808201523060a082015260a0815261062460c08261032c565b51902093610bff565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261032c565b51902090565b61066f61069b61062d46610593565b919082519283825260005b8481106106fa5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016106bb565b9080602083519182815201916020808360051b8301019401926000915b83831061073b57505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c0806107ae604085015160e0604086015260e08501906106b0565b936060810151606085015260808101511515608085015260a0810151151560a085015201519101529701930193019193929061072c565b906020808351928381520192019060005b8181106108035750505090565b825173ffffffffffffffffffffffffffffffffffffffff168452602093840193909201916001016107f6565b805160ff1682526108b39160208281015115159082015261010061088d6108676040850151610120604086015261012085019061070f565b606085015160608501526080850151608085015260a085015184820360a08601526106b0565b9260c081015160c084015260e081015160e08401520151906101008184039101526107e5565b90565b6108ce6040929594939560608352606083019061082f565b9460208201520152565b6040906108b39392815281602082015201906106b0565b6109056108b3949260608352606083019061082f565b92602082015260408184039101526106b0565b90600091604081019283515193815b858110610937575b505050505050565b61094281835161047e565b519261095160a0850151151590565b80610bb3575b610b79575060009260608101518015801580610b70575b610b38576080830151610b0b576109c2916109be916109a1855173ffffffffffffffffffffffffffffffffffffffff1690565b91602086015191600014610b0557505a905b604086015192610dda565b1590565b610a0a575b50600190857f5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a60405180610a0085829190602083019252565b0390a25b01610927565b60c001805115610abc576001815114610a795751600214610a2b57386109c7565b925050507fc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b919250610a5b610dec565b90610a6b604051928392836108d8565b0390a238808080808061092f565b5083610ab8610a86610dec565b6040519384937f7f6b0bb1000000000000000000000000000000000000000000000000000000008552600485016108ef565b0390fd5b50915060018092857f115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d610afd610af0610dec565b60405191829186836108d8565b0390a2610a04565b906109b3565b7f230d1ccc0000000000000000000000000000000000000000000000000000000086526004849052602486fd5b8387610ab85a6040519384937f21395274000000000000000000000000000000000000000000000000000000008552600485016108b6565b50815a1061096e565b9250600190857f9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b60405180610afd85829190602083019252565b508015610957565b805160209091019060005b818110610bd35750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101610bc6565b610100810151604051610c1a8161066f602082018095610bbb565b51902090610c29815160ff1690565b60ff811680610ca25750509061069b610c456040840151610e35565b9261066f60806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b60018103610d0057505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d4669381019384529081019190915260608101929092529061069b816080810161066f565b60028103610d5657505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e46020820190815291810192909252606082019290925261069b816080810161066f565b600303610daa575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d4666020820190815291810192909252606082019290925261069b816080810161066f565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b9160009391849360208451940192f190565b3d90604051916020818401016040528083526000602084013e565b805160209091019060005b818110610e1f5750505090565b8251845260209384019390920191600101610e12565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610e7b610e65836103c8565b92610e73604051948561032c565b8084526103c8565b0136602083013760005b8351811015610f575780610e9b6001928661047e565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152610f436101208261032c565b519020610f50828561047e565b5201610e85565b5090915060405161069b8161066f602082018095610e0756fea2646970667358221220911341856e12c105862304d245f822eb824268f10a62f50f5904a14c6fe7f0ba64736f6c634300081c0033","sourceMap":"325:1911:0:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"608060405261000c61036d565b60008082523560f81c600190816001808316036102c75750600060608401525b600761003b60ff831660011c90565b168061027a575b5060108181160361024a575060015b61005a816103e0565b90604084019182526000915b8183106100b557505050360361008b57806100836100899261057d565b90610918565b005b7f0bdf80380000000000000000000000000000000000000000000000000000000060005260046000fd5b9091926100c76001823560f81c920190565b93908460018083160361022a5750610100306100e484865161047e565b519073ffffffffffffffffffffffffffffffffffffffff169052565b60028082161461020c575b6004808216146101c1575b60088082161461018a575b9061017261016c60c08461014c60108060019816146080610143888b5161047e565b51019015159052565b61016260208083161460a0610143888b5161047e565b1660061c60031690565b60ff1690565b60c061017f83865161047e565b510152019190610066565b939061017261016c60c06101a46001959060208235920190565b989060606101b3878a5161047e565b510152939450505050610121565b9361020690803560e81c906003016101ff6101e66101df84846104c1565b83366104fd565b919060406101f5888a5161047e565b5101923691610518565b90526104c1565b93610116565b938035906020019490602061022284865161047e565b51015261010b565b6102459550803560601c9060140195906100e484865161047e565b610100565b6020908116036102695761ffff90803560f01c906002015b9116610051565b60ff90803560f81c90600101610262565b6102ba919291908060031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b0190843590610100031c16920190565b9190608084015238610042565b8035606090811c90850152601401915061002c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff82111761032757604052565b6102dc565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761032757604052565b60405190610120820182811067ffffffffffffffff821117610327576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b67ffffffffffffffff81116103275760051b60200190565b906103ea826103c8565b6103f7604051918261032c565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061042582946103c8565b019060005b82811061043657505050565b6020906040516104458161030b565b60008152600083820152606060408201526000606082015260006080820152600060a0820152600060c08201528282850101520161042a565b80518210156104925760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919082018092116104ce57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291928382116105135783116105135780920390565b600080fd5b92919267ffffffffffffffff8211610327576040519161056060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461032c565b829481845281830111610513578281602093846000960137010152565b6020810151156106a15761066f61069b61062d60005b60405160208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f83527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408301527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606083015260808201523060a082015260a0815261062460c08261032c565b51902093610bff565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261032c565b51902090565b61066f61069b61062d46610593565b919082519283825260005b8481106106fa5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016106bb565b9080602083519182815201916020808360051b8301019401926000915b83831061073b57505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c0806107ae604085015160e0604086015260e08501906106b0565b936060810151606085015260808101511515608085015260a0810151151560a085015201519101529701930193019193929061072c565b906020808351928381520192019060005b8181106108035750505090565b825173ffffffffffffffffffffffffffffffffffffffff168452602093840193909201916001016107f6565b805160ff1682526108b39160208281015115159082015261010061088d6108676040850151610120604086015261012085019061070f565b606085015160608501526080850151608085015260a085015184820360a08601526106b0565b9260c081015160c084015260e081015160e08401520151906101008184039101526107e5565b90565b6108ce6040929594939560608352606083019061082f565b9460208201520152565b6040906108b39392815281602082015201906106b0565b6109056108b3949260608352606083019061082f565b92602082015260408184039101526106b0565b90600091604081019283515193815b858110610937575b505050505050565b61094281835161047e565b519261095160a0850151151590565b80610bb3575b610b79575060009260608101518015801580610b70575b610b38576080830151610b0b576109c2916109be916109a1855173ffffffffffffffffffffffffffffffffffffffff1690565b91602086015191600014610b0557505a905b604086015192610dda565b1590565b610a0a575b50600190857f5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a60405180610a0085829190602083019252565b0390a25b01610927565b60c001805115610abc576001815114610a795751600214610a2b57386109c7565b925050507fc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b919250610a5b610dec565b90610a6b604051928392836108d8565b0390a238808080808061092f565b5083610ab8610a86610dec565b6040519384937f7f6b0bb1000000000000000000000000000000000000000000000000000000008552600485016108ef565b0390fd5b50915060018092857f115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d610afd610af0610dec565b60405191829186836108d8565b0390a2610a04565b906109b3565b7f230d1ccc0000000000000000000000000000000000000000000000000000000086526004849052602486fd5b8387610ab85a6040519384937f21395274000000000000000000000000000000000000000000000000000000008552600485016108b6565b50815a1061096e565b9250600190857f9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b60405180610afd85829190602083019252565b508015610957565b805160209091019060005b818110610bd35750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101610bc6565b610100810151604051610c1a8161066f602082018095610bbb565b51902090610c29815160ff1690565b60ff811680610ca25750509061069b610c456040840151610e35565b9261066f60806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b60018103610d0057505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d4669381019384529081019190915260608101929092529061069b816080810161066f565b60028103610d5657505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e46020820190815291810192909252606082019290925261069b816080810161066f565b600303610daa575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d4666020820190815291810192909252606082019290925261069b816080810161066f565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b9160009391849360208451940192f190565b3d90604051916020818401016040528083526000602084013e565b805160209091019060005b818110610e1f5750505090565b8251845260209384019390920191600101610e12565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610e7b610e65836103c8565b92610e73604051948561032c565b8084526103c8565b0136602083013760005b8351811015610f575780610e9b6001928661047e565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152610f436101208261032c565b519020610f50828561047e565b5201610e85565b5090915060405161069b8161066f602082018095610e0756fea2646970667358221220911341856e12c105862304d245f822eb824268f10a62f50f5904a14c6fe7f0ba64736f6c634300081c0033","sourceMap":"325:1911:0:-:0;;;;;:::i;:::-;;2409:4:3;;;566:109:15;;;;5093:63:3;;5232:4;5219:17;;;:25;5232:4;;5254:14;616:8:0;5254:14:3;;;2409:4;5215:140;5452:4;5433:15;325:1911:0;;;;2409:4:3;;;5433:15;5432:24;5467:13;5463:122;;5215:140;-1:-1:-1;5691:4:3;5678:17;;;:25;5691:4;;5713:12;5232:4;5674:320;6039:20;;;:::i;:::-;6022:14;325:1911:0;6022:14:3;;:37;;;616:8:0;6066:1546:3;6086:12;;;;;;616:8:0;;;;7622:24:3;7618:73;;648:21:0;;699:6;648:21;;:::i;:::-;699:6;;:::i;:::-;325:1911;7618:73:3;7663:21;616:8:0;7663:21:3;6760:4;616:8:0;7663:21:3;6100:3;683:254:15;;;;798:135;;;;;;;683:254;;;6132:44:3;;;5232:4;6283:12;;;:20;5232:4;;6370;6339:36;6370:4;6339:17;:14;;;:17;:::i;:::-;;2409:4;;;;;;6339:36;6585:4;6577:12;;;:20;6573:109;;6279:226;6760:4;6752:12;;;:20;6748:287;;6279:226;7121:4;7113:12;;;:20;7109:112;;6279:226;7331:12;7550:55;7586:19;7595:4;7331:12;7297:55;5691:4;7331:12;5232:4;7331:12;;:20;325:1911:0;7297:17:3;:14;;;:17;:::i;:::-;;:30;2409:4;;;;;;7297:55;7420;7462:4;7454:12;;;:20;7420:30;:17;:14;;;:17;:::i;:55::-;7587:12;325:1911:0;2409:4:3;;;;;7586:19;325:1911:0;;;;7550:55:3;7595:4;7550:17;:14;;;:17;:::i;:::-;;:33;2409:4;;6071:13;;;;7109:112;1983:226:15;;7550:55:3;7586:19;7595:4;1983:226:15;5232:4:3;1983:226:15;;2102:103;;;;;1983:226;;;7146:14:3;;:26;:17;:14;;;:17;:::i;:::-;;:26;2409:4;7109:112;;;;;;;;6748:287;1201:256:15;7003:23:3;;1318:135:15;;;;;;;2409:4:3;6955:38;6970:22;1318:135:15;;6970:22:3;:::i;:::-;616:8:0;;6955:38:3;:::i;:::-;6930:14;;325:1911:0;6930:17:3;:14;;;:17;:::i;:::-;;:22;616:8:0;;2409:4:3;;:::i;:::-;6930:63;;7003:23;:::i;:::-;6748:287;;;6573:109;1983:226:15;2102:103;;;;;6610:14:3;;7462:4;6610:17;:14;;;:17;:::i;:::-;;:23;2409:4;6573:109;;6279:226;6435:61;;-1:-1:-1;1840:135:15;;;;;;;6436:14:3;;:17;:14;;;:17;:::i;6435:61::-;6279:226;;5674:320;5835:4;5822:17;;;:25;5835:4;;2409;;1058:135:15;;;;;;;941:256;5859:48:3;2409:4;5674:320;;5818:170;325:1911:0;;798:135:15;;;;;;;683:254;;5463:122:3;2213:380:15;;;;;2363:226;;;;;;;;;;;;;;;;;;2213:380;;;5514:64:3;;325:1911:0;5515:14:3;;2409:4;5463:122;;;5215:140;1840:135:15;;;;;;5294:14:3;;;2409:4;1840:135:15;;;-1:-1:-1;5215:140:3;;325:1911:0;;;;;;;;;;;2409:4:3;325:1911:0;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;325:1911:0;;-1:-1:-1;325:1911:0;;;;;;;;;-1:-1:-1;325:1911:0;;;;-1:-1:-1;325:1911:0;;;;;;;;;-1:-1:-1;325:1911:0;;;;-1:-1:-1;325:1911:0;;;;;;:::o;2409:4:3:-;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;325:1911:0;;;;;;:::i;:::-;2409:4:3;;;;;;;;:::i;:::-;;;-1:-1:-1;2409:4:3;;;;;;;;;:::o;:::-;;325:1911:0;;;;;;:::i;:::-;-1:-1:-1;2409:4:3;;-1:-1:-1;2409:4:3;;;;325:1911:0;;2409:4:3;;;-1:-1:-1;325:1911:0;2409:4:3;;;-1:-1:-1;2409:4:3;;;;-1:-1:-1;2409:4:3;;;;-1:-1:-1;2409:4:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;616:8:0;2409:4:3;;;;;;;;;;;325:1911:0;;;;2409:4:3;325:1911:0;;;;;2409:4:3;325:1911:0;;:::i;:::-;2409:4:3;;;;;;;;;;;;;;;;-1:-1:-1;2409:4:3;;;;;;:::o;9411:274::-;9529:18;;;325:1911:0;2409:4:3;1294:48;;9631;;9590:18;-1:-1:-1;1294:48:3;325:1911:0;;9529:18:3;1165:202;;325:1911:0;627:66:3;325:1911:0;;797:66:3;325:1911:0;956:66:3;;325:1911:0;956:66:3;;;;325:1911:0;956:66:3;;;325:1911:0;9557:4:3;956:66;;;325:1911:0;956:66:3;1165:202;;;;;;:::i;:::-;2409:4;1148:225;;9590:18;;:::i;:::-;325:1911:0;;9631:48:3;;;9529:18;9631:48;;;;325:1911:0;;;;;;;;;;;;;;;;;;9631:48:3;;1165:202;9631:48;;;;;;:::i;:::-;2409:4;9621:59;;9411:274;:::o;1294:48::-;9631;;9590:18;1328:13;1294:48;;325:1911:0;;;2409:4:3;;325:1911:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;2409:4:3;;325:1911:0;;;;;;;;;;;;;;;;;-1:-1:-1;325:1911:0;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;2409:4:3;325:1911:0;;2409:4:3;325:1911:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;2409:4:3;;325:1911:0;;;;;;;;2409:4:3;;325:1911:0;;;;;;;;;;;;;;;;;;;;;;;;2409:4:3;;;325:1911:0;;;;;;;;-1:-1:-1;325:1911:0;;;;;;;;;;:::o;:::-;;;2409:4:3;;325:1911:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2409:4:3;;325:1911:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;2745:4:3:-;;;;;;325:1911:0;;2745:4:3;;;;;;;;:::i;2851:::-;;;;;;;;;;;;;:::i;:::-;;;;;325:1911:0;2851:4:3;;;;;;;;:::i;715:1518:0:-;;821:5;852:14;;;;;;;2409:4:3;884:13:0;;899:12;;;;;;879:1350;715:1518;;;;;;:::o;913:3::-;953:17;:14;;;:17;:::i;:::-;;1037;325:1911;1037:17;;;325:1911;2409:4:3;;;;325:1911:0;1037:31;;;913:3;1033:108;;1267:17;821:5;1312:13;;;;325:1911;1337:13;;;;:37;;;913:3;1333:111;;1456:17;;;325:1911;1452:74;;1644:8;325:1911;1549:83;325:1911;;;;2409:4:3;;;;325:1911:0;1572:10;;;;325:1911;1584:36;;;;;1600:9;;1584:36;;852:14;1622:9;;;1549:83;;:::i;:::-;1644:8;;2409:4:3;1644:8:0;1640:538;;1584:36;325:1911;2409:4:3;325:1911:0;;2191:31;852:14;325:1911;2191:31;;;;325:1911;;;;;;;;2191:31;;;;884:13;2409:4:3;884:13:0;;1640:538;1668:20;;325:1911;;1668:53;1664:186;;2409:4:3;325:1911:0;;1864:56;1860:142;;325:1911;2955:4:3;2016:55:0;2012:158;;1640:538;;;2012:158;2120:21;;;;2090:52;2120:21;;;;;:::i;:::-;325:1911;2090:52;852:14;325:1911;2090:52;;;;;:::i;:::-;;;;2154:5;;;;;;;;1860:142;1969:21;;1941:50;1969:21;;:::i;:::-;852:14;325:1911;1941:50;;;;;;;;;;:::i;:::-;;;;1664:186;1735:16;;;2409:4:3;1735:16:0;1797:21;;1768:51;;1797:21;;:::i;:::-;852:14;325:1911;1768:51;;;;;;:::i;:::-;;;;1831:8;;1584:36;;;;1452:74;1492:25;;;;325:1911;;;;1492:25;;1333:111;1425:9;;1393:42;1425:9;852:14;325:1911;1393:42;;;;;;;;;;:::i;1337:37::-;1354:9;;;:20;1337:37;;1033:108;325:1911;;2409:4:3;325:1911:0;;1085:29;852:14;325:1911;1085:29;;;;325:1911;;;;;;;;1037:31;1058:10;;;1037:31;;325:1911;2409:4:3;;325:1911:0;;;;;;;;;;;;;;;;:::o;:::-;;;2409:4:3;;325:1911:0;;;;;;;;;;;;;;;8435:972:3;8573:22;;;;325:1911:0;;8556:40:3;;325:1911:0;8556:40:3;;;325:1911:0;;;:::i;8556:40:3:-;2409:4;8546:51;;325:1911:0;;;;;;;;;;;;8608:34:3;325:1911:0;;8682:14:3;;;8722:82;8672:25;325:1911:0;8682:14:3;;;8672:25;:::i;:::-;8760:14;8722:82;8776:14;8760;;;325:1911:0;8776:14:3;;325:1911:0;;;;8722:82:3;;;8556:40;8722:82;;;;1887:66;;;;;;;;;325:1911:0;1887:66:3;325:1911:0;;1887:66:3;;;325:1911:0;1887:66:3;;;325:1911:0;1887:66:3;;;325:1911:0;1887:66:3;325:1911:0;1887:66:3;8604:799;2851:4;8822:29;;2851:4;;-1:-1:-1;;8917:16:3;;;2409:4;;8556:40;325:1911:0;;;8907:27:3;325:1911:0;;;2067:66:3;8878:70;;;325:1911:0;;;2067:66:3;;;325:1911:0;;;;2067:66:3;;;325:1911:0;;;;8878:70:3;;325:1911:0;2067:66:3;;;8878:70;2067:66;8818:585;2955:4;8966:35;;2955:4;;-1:-1:-1;;9063:18:3;;2067:66;325:1911:0;;;2262:66:3;8556:40;9028:67;;325:1911:0;;;2067:66:3;;;325:1911:0;;;;2067:66:3;;;325:1911:0;;;;9028:67:3;325:1911:0;2067:66:3;;;9028:67;2067:66;8962:441;2644:4;9113:28;2644:4;;-1:-1:-1;9290:15:3;;2067:66;325:1911:0;;;2067:66:3;8556:40;9261:58;;325:1911:0;;;2067:66:3;;;325:1911:0;;;;2067:66:3;;;325:1911:0;;;;9261:58:3;325:1911:0;2067:66:3;;;9261:58;2067:66;9109:294;9370:26;325:1911:0;9370:26:3;325:1911:0;;9370:26:3;325:1911:0;2644:4:3;325:1911:0;9370:26:3;1431:196:16;;1538:85;1431:196;;;;1538:85;;;;;;;1431:196;:::o;758:271::-;825:200;;;;;;;;;;;;;;;;;;;;758:271::o;325:1911:0:-;2409:4:3;;325:1911:0;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;7977:454:3;;2409:4;;325:1911:0;;2409:4:3;;;:::i;:::-;325:1911:0;;;;;;;:::i;:::-;2409:4:3;;;325:1911:0;:::i;:::-;;;;;;;-1:-1:-1;8321:3:3;2409:4;;8303:16;;;;;8359:8;;2409:4;8359:8;;;:::i;:::-;;2409:4;325:1911:0;;2409:4:3;7865:7;325:1911:0;7865:7:3;;325:1911:0;7884:6:3;325:1911:0;7884:6:3;;;325:1911:0;2409:4:3;;325:1911:0;;7874:17:3;7893:10;;;;325:1911:0;7905:14:3;;;325:1911:0;2409:4:3;;7921:14;7937:17;7921:14;;;325:1911:0;2409:4:3;;7937:17;;325:1911:0;;;;7824:138:3;325:1911:0;7824:138:3;;325:1911:0;1566:66:3;325:1911:0;;;1566:66:3;;325:1911:0;7893:10:3;1566:66;;325:1911:0;7905:14:3;1566:66;;325:1911:0;7921:14:3;1566:66;;325:1911:0;7937:17:3;1566:66;;325:1911:0;1566:66:3;;;325:1911:0;1566:66:3;;;325:1911:0;1566:66:3;7824:138;;;;;;:::i;:::-;2409:4;7807:161;;8334:34;;;;:::i;:::-;2409:4;;8288:13;;8303:16;;;;;325:1911:0;;8397:28:3;;325:1911:0;;8397:28:3;;325:1911:0;;;:::i","linkReferences":{}}}}},"src/modules/Calls.sol":{"Calls":{"abi":[{"type":"function","name":"execute","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"readNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"recoverPartialSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"weight","type":"uint256","internalType":"uint256"},{"name":"isValidImage","type":"bool","internalType":"bool"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"},{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"recoverSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"selfExecute","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_address","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImageHash","inputs":[{"name":"_imageHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"CallAborted","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_returnData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"CallFailed","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_returnData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"CallSkipped","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CallSucceeded","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NonceChange","inputs":[{"name":"_space","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_newNonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StaticSignatureSet","inputs":[{"name":"_hash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"_address","type":"address","indexed":false,"internalType":"address"},{"name":"_timestamp","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"error","name":"BadNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"},{"name":"_provided","type":"uint256","internalType":"uint256"},{"name":"_current","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ChainedSignatureNestedInChainedSignature","inputs":[]},{"type":"error","name":"InvalidERC1271Signature","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidPackedLength","inputs":[]},{"type":"error","name":"InvalidSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignatureFlag","inputs":[{"name":"_flag","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidSignatureWeight","inputs":[{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureExpired","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_expires","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureWrongCaller","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_caller","type":"address","internalType":"address"},{"name":"_expectedCaller","type":"address","internalType":"address"}]},{"type":"error","name":"LowWeightChainedSignature","inputs":[{"name":"_signature","type":"bytes","internalType":"bytes"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotEnoughGas","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_gasLeft","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrantCall","inputs":[]},{"type":"error","name":"Reverted","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_returnData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"UnusedSnapshot","inputs":[{"name":"_snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"WrongChainedCheckpointOrder","inputs":[{"name":"_nextCheckpoint","type":"uint256","internalType":"uint256"},{"name":"_checkpoint","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"}],\"name\":\"BadNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainedSignatureNestedInChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidERC1271Signature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPackedLength\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSapientSignature\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_expires\",\"type\":\"uint256\"}],\"name\":\"InvalidStaticSignatureExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_expectedCaller\",\"type\":\"address\"}],\"name\":\"InvalidStaticSignatureWrongCaller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasLeft\",\"type\":\"uint256\"}],\"name\":\"NotEnoughGas\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"_snapshot\",\"type\":\"tuple\"}],\"name\":\"UnusedSnapshot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nextCheckpoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_checkpoint\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"CallAborted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"CallSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"StaticSignatureSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"getStaticSignature\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"}],\"name\":\"readNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverPartialSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValidImage\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"selfExecute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"setStaticSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen, William Hua\",\"kind\":\"dev\",\"methods\":{\"execute(bytes,bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature\"}},\"getStaticSignature(bytes32)\":{\"params\":{\"_hash\":\"The hash to get the static signature for\"},\"returns\":{\"_0\":\"address The address associated with the static signature\",\"_1\":\"timestamp The timestamp of the static signature\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"_0\":\"Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}},\"readNonce(uint256)\":{\"params\":{\"_space\":\"The space\"},\"returns\":{\"_0\":\"nonce The nonce\"}},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature to recover\"},\"returns\":{\"checkpoint\":\"The checkpoint identifier\",\"imageHash\":\"The derived image hash\",\"isValidImage\":\"Whether the image hash is valid\",\"opHash\":\"The hash of the payload\",\"threshold\":\"The signature threshold\",\"weight\":\"The derived weight\"}},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"payload\":\"The payload to recover the signature from\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"_0\":\"The recovered image hash\"}},\"selfExecute(bytes)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"_payload\":\"The payload\"}},\"setStaticSignature(bytes32,address,uint96)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_address\":\"The address to associate with the static signature\",\"_hash\":\"The hash to set the static signature for\",\"_timestamp\":\"The timestamp of the static signature\"}},\"updateImageHash(bytes32)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_imageHash\":\"The new image hash\"}}},\"title\":\"Calls\",\"version\":1},\"userdoc\":{\"errors\":{\"BadNonce(uint256,uint256,uint256)\":[{\"notice\":\"Error thrown when the nonce is bad\"}],\"ChainedSignatureNestedInChainedSignature()\":[{\"notice\":\"Error thrown when a chained signature is nested inside another chained signature\"}],\"InvalidERC1271Signature(bytes32,address,bytes)\":[{\"notice\":\"Error thrown when the ERC1271 signature is invalid\"}],\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidPackedLength()\":[{\"notice\":\"Error thrown when the encoding is invalid\"}],\"InvalidSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when the sapient signature is invalid\"}],\"InvalidSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when a signature is invalid\"}],\"InvalidSignatureFlag(uint256)\":[{\"notice\":\"Error thrown when the signature flag is invalid\"}],\"InvalidSignatureWeight(uint256,uint256)\":[{\"notice\":\"Error thrown when the signature weight is invalid\"}],\"InvalidStaticSignatureExpired(bytes32,uint256)\":[{\"notice\":\"Error thrown when the static signature has expired\"}],\"InvalidStaticSignatureWrongCaller(bytes32,address,address)\":[{\"notice\":\"Error thrown when the static signature has the wrong caller\"}],\"LowWeightChainedSignature(bytes,uint256,uint256)\":[{\"notice\":\"Error thrown when the weight is too low for a chained signature\"}],\"NotEnoughGas((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),uint256,uint256)\":[{\"notice\":\"Error thrown when there is not enough gas\"}],\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}],\"ReentrantCall()\":[{\"notice\":\"Error thrown when a reentrant call is detected\"}],\"Reverted((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),uint256,bytes)\":[{\"notice\":\"Error thrown when a call reverts\"}],\"UnusedSnapshot((bytes32,uint256))\":[{\"notice\":\"Error thrown when the snapshot is unused\"}],\"WrongChainedCheckpointOrder(uint256,uint256)\":[{\"notice\":\"Error thrown when the checkpoint order is wrong\"}]},\"events\":{\"CallAborted(bytes32,uint256,bytes)\":{\"notice\":\"Emitted when a call is aborted\"},\"CallFailed(bytes32,uint256,bytes)\":{\"notice\":\"Emitted when a call fails\"},\"CallSkipped(bytes32,uint256)\":{\"notice\":\"Emitted when a call is skipped\"},\"CallSucceeded(bytes32,uint256)\":{\"notice\":\"Emitted when a call succeeds\"},\"NonceChange(uint256,uint256)\":{\"notice\":\"Emitted when the nonce is changed\"},\"StaticSignatureSet(bytes32,address,uint96)\":{\"notice\":\"Event emitted when a static signature is set\"}},\"kind\":\"user\",\"methods\":{\"execute(bytes,bytes)\":{\"notice\":\"Execute a call\"},\"getStaticSignature(bytes32)\":{\"notice\":\"Get the static signature for a specific hash\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"},\"readNonce(uint256)\":{\"notice\":\"Read the nonce\"},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recover the partial signature\"},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recovers the image hash of a given signature\"},\"selfExecute(bytes)\":{\"notice\":\"Execute a call\"},\"setStaticSignature(bytes32,address,uint96)\":{\"notice\":\"Set the static signature for a specific hash\"},\"updateImageHash(bytes32)\":{\"notice\":\"Update the image hash\"}},\"notice\":\"Contract for executing calls\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/Calls.sol\":\"Calls\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Calls.sol\":{\"keccak256\":\"0xa1341a9dc102ceec53bcdff123322e7ecb19cec6101086944c87552284969eeb\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36619e8abb171d9f812be49572fba6d64dd62c0d7a6fb674cde1a0cf28a5f919\",\"dweb:/ipfs/QmWR45P7Q4M44QfyNQvA3ThMyApz3snMJVRin8ujq2ouQK\"]},\"src/modules/Nonce.sol\":{\"keccak256\":\"0x56fbf6dc9b34ab60ae8a32ffb6f583c003bb8f4a5223ce704e982400fa403fab\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://492f53628633b862702cf8f9b726067a722c94028133a8a4c4fcf3d0e73ad803\",\"dweb:/ipfs/QmTHNy4XbH47YZaqKDpknb5aApjRH9HVAREHN7N5vEFWEV\"]},\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/ReentrancyGuard.sol\":{\"keccak256\":\"0x566e105b1a53f49cf099037f3cb4a9739522d72739dc65f1169b97e4fbe07b32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d811a16613746e5290eab76eb4055d98a1e64e1086632697d09b0a3759a6bac5\",\"dweb:/ipfs/QmPJ33JvAxwn1sTCNvYG2TWsFo991KND2ia8JcvZ26Dge9\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]},\"src/modules/auth/BaseAuth.sol\":{\"keccak256\":\"0x1aea32726fe1e8c204805a01fde5a7c832caa76960bf57bbaa2cf13e6804b9dc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://851b09d56bfc9b2f2025f1351ca2a4ae5e9c82e8fb26e58216cff849fc9f8320\",\"dweb:/ipfs/QmeHcagSWRPXR1ac1jEChoYTDzfhLyvfGKAgfu4nc3uctc\"]},\"src/modules/auth/BaseSig.sol\":{\"keccak256\":\"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46\",\"dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ\"]},\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]},\"src/modules/interfaces/IAuth.sol\":{\"keccak256\":\"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353\",\"dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp\"]},\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]},\"src/modules/interfaces/IDelegatedExtension.sol\":{\"keccak256\":\"0xa2ae897e90fd70dd4a9e172bc04d019ba9c512e72c2df65fcb6daf87dd5ceb90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cdf4b7c3dfb0aef6c9dbe8b2a0542018dc756ef2252d7101bcb3186192da0a11\",\"dweb:/ipfs/QmPHCVu1DJ7fBrPBYA5y3hoF3a3XFEBwYCZ1ErGaxPhcYL\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/IPartialAuth.sol\":{\"keccak256\":\"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519\",\"dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"execute(bytes,bytes)":"1f6a1eb9","getStaticSignature(bytes32)":"92dcb3fc","isValidSignature(bytes32,bytes)":"1626ba7e","readNonce(uint256)":"8c3f5563","recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"ad55366b","recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"13792a4a","selfExecute(bytes)":"6ea44577","setStaticSignature(bytes32,address,uint96)":"f727ef1c","updateImageHash(bytes32)":"29561426"}}}},"src/modules/Nonce.sol":{"Nonce":{"abi":[{"type":"function","name":"readNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"NonceChange","inputs":[{"name":"_space","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_newNonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"BadNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"},{"name":"_provided","type":"uint256","internalType":"uint256"},{"name":"_current","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"}],\"name\":\"BadNonce\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceChange\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"}],\"name\":\"readNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"readNonce(uint256)\":{\"params\":{\"_space\":\"The space\"},\"returns\":{\"_0\":\"nonce The nonce\"}}},\"stateVariables\":{\"NONCE_KEY\":{\"details\":\"keccak256(\\\"org.arcadeum.module.calls.nonce\\\")\"}},\"title\":\"Nonce\",\"version\":1},\"userdoc\":{\"errors\":{\"BadNonce(uint256,uint256,uint256)\":[{\"notice\":\"Error thrown when the nonce is bad\"}]},\"events\":{\"NonceChange(uint256,uint256)\":{\"notice\":\"Emitted when the nonce is changed\"}},\"kind\":\"user\",\"methods\":{\"readNonce(uint256)\":{\"notice\":\"Read the nonce\"}},\"notice\":\"Manages the nonce of the wallet\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/Nonce.sol\":\"Nonce\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Nonce.sol\":{\"keccak256\":\"0x56fbf6dc9b34ab60ae8a32ffb6f583c003bb8f4a5223ce704e982400fa403fab\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://492f53628633b862702cf8f9b726067a722c94028133a8a4c4fcf3d0e73ad803\",\"dweb:/ipfs/QmTHNy4XbH47YZaqKDpknb5aApjRH9HVAREHN7N5vEFWEV\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601557610112908161001b8239f35b600080fdfe60806004361015600e57600080fd5b60003560e01c638c3f556314602257600080fd5b3460d75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011260d757602081017f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8152600435604083015260408252606082019082821067ffffffffffffffff83111760a85760209282604052519020548152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fdfea2646970667358221220c1edfc2bf4fca17e5582ce0f566a12faf0a6c201bb0821466544cf6f28f8697f64736f6c634300081c0033","sourceMap":"196:1180:2:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"60806004361015600e57600080fd5b60003560e01c638c3f556314602257600080fd5b3460d75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011260d757602081017f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8152600435604083015260408252606082019082821067ffffffffffffffff83111760a85760209282604052519020548152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fdfea2646970667358221220c1edfc2bf4fca17e5582ce0f566a12faf0a6c201bb0821466544cf6f28f8697f64736f6c634300081c0033","sourceMap":"196:1180:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;753:25:5;;543:66:2;196:1180;;;;;;;;;753:25:5;;;196:1180:2;;;;;;;;;;;;;;;;;;743:36:5;;785:40;196:1180:2;;;;;;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"readNonce(uint256)":"8c3f5563"}}}},"src/modules/Payload.sol":{"Payload":{"abi":[{"type":"function","name":"BEHAVIOR_ABORT_ON_ERROR","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"BEHAVIOR_IGNORE_ERROR","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"BEHAVIOR_REVERT_ON_ERROR","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"KIND_CONFIG_UPDATE","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"KIND_DIGEST","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"KIND_MESSAGE","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"KIND_TRANSACTIONS","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidPackedLength","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPackedLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BEHAVIOR_ABORT_ON_ERROR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BEHAVIOR_IGNORE_ERROR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BEHAVIOR_REVERT_ON_ERROR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KIND_CONFIG_UPDATE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KIND_DIGEST\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KIND_MESSAGE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KIND_TRANSACTIONS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen, William Hua\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"CALLS_TYPEHASH\":{\"details\":\"keccak256(\\\"Calls(Call[] calls,uint256 space,uint256 nonce,address[] wallets)Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\\\")\"},\"CALL_TYPEHASH\":{\"details\":\"keccak256(\\\"Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\\\")\"},\"CONFIG_UPDATE_TYPEHASH\":{\"details\":\"keccak256(\\\"ConfigUpdate(bytes32 imageHash,address[] wallets)\\\")\"},\"EIP712_DOMAIN_NAME_SEQUENCE\":{\"details\":\"keccak256(\\\"Sequence Wallet\\\")\"},\"EIP712_DOMAIN_TYPEHASH\":{\"details\":\"keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\")\"},\"EIP712_DOMAIN_VERSION_SEQUENCE\":{\"details\":\"keccak256(\\\"3\\\")\"},\"MESSAGE_TYPEHASH\":{\"details\":\"keccak256(\\\"Message(bytes message,address[] wallets)\\\")\"}},\"title\":\"Payload\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidPackedLength()\":[{\"notice\":\"Error thrown when the encoding is invalid\"}]},\"kind\":\"user\",\"methods\":{\"BEHAVIOR_ABORT_ON_ERROR()\":{\"notice\":\"Behavior on error: abort on error\"},\"BEHAVIOR_IGNORE_ERROR()\":{\"notice\":\"Behavior on error: ignore error\"},\"BEHAVIOR_REVERT_ON_ERROR()\":{\"notice\":\"Behavior on error: revert on error\"},\"KIND_CONFIG_UPDATE()\":{\"notice\":\"Kind of config update\"},\"KIND_DIGEST()\":{\"notice\":\"Kind of message\"},\"KIND_MESSAGE()\":{\"notice\":\"Kind of digest\"},\"KIND_TRANSACTIONS()\":{\"notice\":\"Kind of transaction\"}},\"notice\":\"Library for encoding and decoding payloads\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/Payload.sol\":\"Payload\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601957610182908161001f823930815050f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630739d59a146100ad578063075a3d2d146100a85780633d5c1f9b146100a3578063420b0c25146100ad5780634a7d2aa0146100a85780634e5f5715146100a35763b570180a1461006957600080fd5b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160038152f35b600080fd5b610117565b6100e2565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160028152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160008152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160018152f3fea2646970667358221220fb3b37a4e71c3907c9bce206c87cf070ca2dbe4b06360016ce0001f18c92a7b764736f6c634300081c0033","sourceMap":"275:9697:3:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"6080604052600436101561001257600080fd5b60003560e01c80630739d59a146100ad578063075a3d2d146100a85780633d5c1f9b146100a3578063420b0c25146100ad5780634a7d2aa0146100a85780634e5f5715146100a35763b570180a1461006957600080fd5b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160038152f35b600080fd5b610117565b6100e2565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160028152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160008152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160018152f3fea2646970667358221220fb3b37a4e71c3907c9bce206c87cf070ca2dbe4b06360016ce0001f18c92a7b764736f6c634300081c0033","sourceMap":"275:9697:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2644:4;275:9697;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;2570:4;275:9697;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2483:4;275:9697;;","linkReferences":{}},"methodIdentifiers":{"BEHAVIOR_ABORT_ON_ERROR()":"420b0c25","BEHAVIOR_IGNORE_ERROR()":"4a7d2aa0","BEHAVIOR_REVERT_ON_ERROR()":"4e5f5715","KIND_CONFIG_UPDATE()":"0739d59a","KIND_DIGEST()":"b570180a","KIND_MESSAGE()":"3d5c1f9b","KIND_TRANSACTIONS()":"075a3d2d"}}}},"src/modules/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[{"type":"error","name":"ReentrantCall","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"STATUS_KEY\":{\"details\":\"keccak256(\\\"org.sequence.module.reentrancyguard.status\\\")\"}},\"version\":1},\"userdoc\":{\"errors\":{\"ReentrantCall()\":[{\"notice\":\"Error thrown when a reentrant call is detected\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/ReentrancyGuard.sol\":{\"keccak256\":\"0x566e105b1a53f49cf099037f3cb4a9739522d72739dc65f1169b97e4fbe07b32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d811a16613746e5290eab76eb4055d98a1e64e1086632697d09b0a3759a6bac5\",\"dweb:/ipfs/QmPJ33JvAxwn1sTCNvYG2TWsFo991KND2ia8JcvZ26Dge9\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"src/modules/Storage.sol":{"Storage":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Storage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for storing data at certain storage slots\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/Storage.sol\":\"Storage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220fcd43e4c5fc171e4e7783bcddb1f1c9c1a8cf4fdf99e1a4c260e587c4e51eca664736f6c634300081c0033","sourceMap":"174:658:5:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"600080fdfea2646970667358221220fcd43e4c5fc171e4e7783bcddb1f1c9c1a8cf4fdf99e1a4c260e587c4e51eca664736f6c634300081c0033","sourceMap":"174:658:5:-:0;;","linkReferences":{}}}}},"src/modules/auth/BaseAuth.sol":{"BaseAuth":{"abi":[{"type":"function","name":"getStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"recoverPartialSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"weight","type":"uint256","internalType":"uint256"},{"name":"isValidImage","type":"bool","internalType":"bool"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"},{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"recoverSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"setStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_address","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImageHash","inputs":[{"name":"_imageHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"StaticSignatureSet","inputs":[{"name":"_hash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"_address","type":"address","indexed":false,"internalType":"address"},{"name":"_timestamp","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"error","name":"ChainedSignatureNestedInChainedSignature","inputs":[]},{"type":"error","name":"InvalidERC1271Signature","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignatureFlag","inputs":[{"name":"_flag","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidSignatureWeight","inputs":[{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureExpired","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_expires","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureWrongCaller","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_caller","type":"address","internalType":"address"},{"name":"_expectedCaller","type":"address","internalType":"address"}]},{"type":"error","name":"LowWeightChainedSignature","inputs":[{"name":"_signature","type":"bytes","internalType":"bytes"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]},{"type":"error","name":"UnusedSnapshot","inputs":[{"name":"_snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"WrongChainedCheckpointOrder","inputs":[{"name":"_nextCheckpoint","type":"uint256","internalType":"uint256"},{"name":"_checkpoint","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ChainedSignatureNestedInChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidERC1271Signature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSapientSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_expires\",\"type\":\"uint256\"}],\"name\":\"InvalidStaticSignatureExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_expectedCaller\",\"type\":\"address\"}],\"name\":\"InvalidStaticSignatureWrongCaller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"_snapshot\",\"type\":\"tuple\"}],\"name\":\"UnusedSnapshot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nextCheckpoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_checkpoint\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"StaticSignatureSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"getStaticSignature\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverPartialSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValidImage\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"setStaticSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen\",\"kind\":\"dev\",\"methods\":{\"getStaticSignature(bytes32)\":{\"params\":{\"_hash\":\"The hash to get the static signature for\"},\"returns\":{\"_0\":\"address The address associated with the static signature\",\"_1\":\"timestamp The timestamp of the static signature\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"_0\":\"Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature to recover\"},\"returns\":{\"checkpoint\":\"The checkpoint identifier\",\"imageHash\":\"The derived image hash\",\"isValidImage\":\"Whether the image hash is valid\",\"opHash\":\"The hash of the payload\",\"threshold\":\"The signature threshold\",\"weight\":\"The derived weight\"}},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"payload\":\"The payload to recover the signature from\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"_0\":\"The recovered image hash\"}},\"setStaticSignature(bytes32,address,uint96)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_address\":\"The address to associate with the static signature\",\"_hash\":\"The hash to set the static signature for\",\"_timestamp\":\"The timestamp of the static signature\"}},\"updateImageHash(bytes32)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_imageHash\":\"The new image hash\"}}},\"stateVariables\":{\"STATIC_SIGNATURE_KEY\":{\"details\":\"keccak256(\\\"org.sequence.module.auth.static\\\")\"}},\"title\":\"BaseAuth\",\"version\":1},\"userdoc\":{\"errors\":{\"ChainedSignatureNestedInChainedSignature()\":[{\"notice\":\"Error thrown when a chained signature is nested inside another chained signature\"}],\"InvalidERC1271Signature(bytes32,address,bytes)\":[{\"notice\":\"Error thrown when the ERC1271 signature is invalid\"}],\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when the sapient signature is invalid\"}],\"InvalidSignatureFlag(uint256)\":[{\"notice\":\"Error thrown when the signature flag is invalid\"}],\"InvalidSignatureWeight(uint256,uint256)\":[{\"notice\":\"Error thrown when the signature weight is invalid\"}],\"InvalidStaticSignatureExpired(bytes32,uint256)\":[{\"notice\":\"Error thrown when the static signature has expired\"}],\"InvalidStaticSignatureWrongCaller(bytes32,address,address)\":[{\"notice\":\"Error thrown when the static signature has the wrong caller\"}],\"LowWeightChainedSignature(bytes,uint256,uint256)\":[{\"notice\":\"Error thrown when the weight is too low for a chained signature\"}],\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}],\"UnusedSnapshot((bytes32,uint256))\":[{\"notice\":\"Error thrown when the snapshot is unused\"}],\"WrongChainedCheckpointOrder(uint256,uint256)\":[{\"notice\":\"Error thrown when the checkpoint order is wrong\"}]},\"events\":{\"StaticSignatureSet(bytes32,address,uint96)\":{\"notice\":\"Event emitted when a static signature is set\"}},\"kind\":\"user\",\"methods\":{\"getStaticSignature(bytes32)\":{\"notice\":\"Get the static signature for a specific hash\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recover the partial signature\"},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recovers the image hash of a given signature\"},\"setStaticSignature(bytes32,address,uint96)\":{\"notice\":\"Set the static signature for a specific hash\"},\"updateImageHash(bytes32)\":{\"notice\":\"Update the image hash\"}},\"notice\":\"Base contract for the auth module\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/auth/BaseAuth.sol\":\"BaseAuth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]},\"src/modules/auth/BaseAuth.sol\":{\"keccak256\":\"0x1aea32726fe1e8c204805a01fde5a7c832caa76960bf57bbaa2cf13e6804b9dc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://851b09d56bfc9b2f2025f1351ca2a4ae5e9c82e8fb26e58216cff849fc9f8320\",\"dweb:/ipfs/QmeHcagSWRPXR1ac1jEChoYTDzfhLyvfGKAgfu4nc3uctc\"]},\"src/modules/auth/BaseSig.sol\":{\"keccak256\":\"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46\",\"dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ\"]},\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]},\"src/modules/interfaces/IAuth.sol\":{\"keccak256\":\"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353\",\"dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp\"]},\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/IPartialAuth.sol\":{\"keccak256\":\"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519\",\"dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getStaticSignature(bytes32)":"92dcb3fc","isValidSignature(bytes32,bytes)":"1626ba7e","recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"ad55366b","recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"13792a4a","setStaticSignature(bytes32,address,uint96)":"f727ef1c","updateImageHash(bytes32)":"29561426"}}}},"src/modules/auth/BaseSig.sol":{"BaseSig":{"abi":[{"type":"error","name":"ChainedSignatureNestedInChainedSignature","inputs":[]},{"type":"error","name":"InvalidERC1271Signature","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignatureFlag","inputs":[{"name":"_flag","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LowWeightChainedSignature","inputs":[{"name":"_signature","type":"bytes","internalType":"bytes"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnusedSnapshot","inputs":[{"name":"_snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"WrongChainedCheckpointOrder","inputs":[{"name":"_nextCheckpoint","type":"uint256","internalType":"uint256"},{"name":"_checkpoint","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ChainedSignatureNestedInChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidERC1271Signature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"_snapshot\",\"type\":\"tuple\"}],\"name\":\"UnusedSnapshot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nextCheckpoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_checkpoint\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen, William Hua, Shun Kakinoki\",\"kind\":\"dev\",\"methods\":{},\"title\":\"BaseSig\",\"version\":1},\"userdoc\":{\"errors\":{\"ChainedSignatureNestedInChainedSignature()\":[{\"notice\":\"Error thrown when a chained signature is nested inside another chained signature\"}],\"InvalidERC1271Signature(bytes32,address,bytes)\":[{\"notice\":\"Error thrown when the ERC1271 signature is invalid\"}],\"InvalidSignatureFlag(uint256)\":[{\"notice\":\"Error thrown when the signature flag is invalid\"}],\"LowWeightChainedSignature(bytes,uint256,uint256)\":[{\"notice\":\"Error thrown when the weight is too low for a chained signature\"}],\"UnusedSnapshot((bytes32,uint256))\":[{\"notice\":\"Error thrown when the snapshot is unused\"}],\"WrongChainedCheckpointOrder(uint256,uint256)\":[{\"notice\":\"Error thrown when the checkpoint order is wrong\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for recovering signatures from the base-auth payload\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/auth/BaseSig.sol\":\"BaseSig\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/auth/BaseSig.sol\":{\"keccak256\":\"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46\",\"dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ\"]},\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220b2a844c8f0867bf15b7919eb50455724c1246e4228a4f505d475143f58003e9164736f6c634300081c0033","sourceMap":"671:18739:7:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"600080fdfea2646970667358221220b2a844c8f0867bf15b7919eb50455724c1246e4228a4f505d475143f58003e9164736f6c634300081c0033","sourceMap":"671:18739:7:-:0;;","linkReferences":{}}}}},"src/modules/auth/SelfAuth.sol":{"SelfAuth":{"abi":[{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SelfAuth\",\"version\":1},\"userdoc\":{\"errors\":{\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Modifier for checking if the caller is the same as the contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/auth/SelfAuth.sol\":\"SelfAuth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"src/modules/interfaces/IAuth.sol":{"IAuth":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen, William Hua\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IAuth\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Internal interface for the auth modules\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IAuth.sol\":\"IAuth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IAuth.sol\":{\"keccak256\":\"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353\",\"dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"src/modules/interfaces/ICheckpointer.sol":{"ICheckpointer":{"abi":[{"type":"function","name":"snapshotFor","inputs":[{"name":"_wallet","type":"address","internalType":"address"},{"name":"_proof","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"snapshotFor\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"snapshot\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"snapshotFor(address,bytes)\":{\"params\":{\"_proof\":\"The proof\",\"_wallet\":\"The wallet address\"},\"returns\":{\"snapshot\":\"The snapshot\"}}},\"title\":\"ICheckpointer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"snapshotFor(address,bytes)\":{\"notice\":\"Get the snapshot for a specific wallet\"}},\"notice\":\"Interface for the checkpointer module\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/ICheckpointer.sol\":\"ICheckpointer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"snapshotFor(address,bytes)":"ccce3bc8"}}}},"src/modules/interfaces/IDelegatedExtension.sol":{"IDelegatedExtension":{"abi":[{"type":"function","name":"handleSequenceDelegateCall","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_startingGas","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_numCalls","type":"uint256","internalType":"uint256"},{"name":"_space","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_startingGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_numCalls\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"handleSequenceDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"handleSequenceDelegateCall(bytes32,uint256,uint256,uint256,uint256,bytes)\":{\"params\":{\"_data\":\"The data\",\"_index\":\"The index\",\"_numCalls\":\"The number of calls\",\"_opHash\":\"The operation hash\",\"_space\":\"The space\",\"_startingGas\":\"The starting gas\"}}},\"title\":\"IDelegatedExtension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"handleSequenceDelegateCall(bytes32,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Handle a sequence delegate call\"}},\"notice\":\"Interface for the delegated extension module\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IDelegatedExtension.sol\":\"IDelegatedExtension\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IDelegatedExtension.sol\":{\"keccak256\":\"0xa2ae897e90fd70dd4a9e172bc04d019ba9c512e72c2df65fcb6daf87dd5ceb90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cdf4b7c3dfb0aef6c9dbe8b2a0542018dc756ef2252d7101bcb3186192da0a11\",\"dweb:/ipfs/QmPHCVu1DJ7fBrPBYA5y3hoF3a3XFEBwYCZ1ErGaxPhcYL\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"handleSequenceDelegateCall(bytes32,uint256,uint256,uint256,uint256,bytes)":"4c4e814c"}}}},"src/modules/interfaces/IERC1271.sol":{"IERC1271":{"abi":[{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"magicValue\":\"Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}}},\"title\":\"IERC1271\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"}},\"notice\":\"Interface for ERC1271\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"}}},"IERC1271Data":{"abi":[{"type":"function","name":"isValidSignature","inputs":[{"name":"_data","type":"bytes","internalType":"bytes"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\\\"isValidSignature(bytes,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_data\":\"Data that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"magicValue\":\"Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\"}}},\"title\":\"IERC1271Data\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"}},\"notice\":\"Deprecated interface for ERC1271 using bytes instead of bytes32\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IERC1271.sol\":\"IERC1271Data\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isValidSignature(bytes,bytes)":"20c13b0b"}}}},"src/modules/interfaces/IPartialAuth.sol":{"IPartialAuth":{"abi":[{"type":"function","name":"recoverPartialSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"weight","type":"uint256","internalType":"uint256"},{"name":"isValidImage","type":"bool","internalType":"bool"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"},{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverPartialSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValidImage\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature to recover\"},\"returns\":{\"checkpoint\":\"The checkpoint identifier\",\"imageHash\":\"The derived image hash\",\"isValidImage\":\"Whether the image hash is valid\",\"opHash\":\"The hash of the payload\",\"threshold\":\"The signature threshold\",\"weight\":\"The derived weight\"}}},\"title\":\"IPartialAuth\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recover the partial signature\"}},\"notice\":\"Interface for the partial auth module\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IPartialAuth.sol\":\"IPartialAuth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/interfaces/IPartialAuth.sol\":{\"keccak256\":\"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519\",\"dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"ad55366b"}}}},"src/modules/interfaces/ISapient.sol":{"ISapient":{"abi":[{"type":"function","name":"recoverSapientSignature","inputs":[{"name":"payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen\",\"details\":\"The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration\",\"kind\":\"dev\",\"methods\":{\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"payload\":\"The payload to recover the signature from\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"imageHash\":\"The recovered image hash\"}}},\"title\":\"ISapient\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recovers the image hash of a given signature\"}},\"notice\":\"Sapient signers take an explicit payload and return their own \\\"imageHash\\\" as result\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/ISapient.sol\":\"ISapient\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"13792a4a"}}},"ISapientCompact":{"abi":[{"type":"function","name":"recoverSapientSignatureCompact","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignatureCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen\",\"details\":\"The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration\",\"kind\":\"dev\",\"methods\":{\"recoverSapientSignatureCompact(bytes32,bytes)\":{\"params\":{\"digest\":\"The digest of the payload\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"imageHash\":\"The recovered image hash\"}}},\"title\":\"ISapientCompact\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"recoverSapientSignatureCompact(bytes32,bytes)\":{\"notice\":\"Recovers the image hash of a given signature, using a hashed payload\"}},\"notice\":\"Sapient signers take a compacted payload and return their own \\\"imageHash\\\" as result\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/ISapient.sol\":\"ISapientCompact\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"recoverSapientSignatureCompact(bytes32,bytes)":"898bd921"}}}},"src/utils/LibBytes.sol":{"LibBytes":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar (aa@horizon.io), Michael Standen (mstan@horizon.io)\",\"details\":\"These functions do not check if the input index is within the bounds of the data array.Reading out of bounds may return dirty values.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for reading data from bytes arrays\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions for reading data from bytes arrays.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/LibBytes.sol\":\"LibBytes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220a85ffa9e3ade302caa4978ea91e2fc168f2c0512807b43a7f8208a8f8a4df7d464736f6c634300081c0033","sourceMap":"432:3576:15:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"600080fdfea2646970667358221220a85ffa9e3ade302caa4978ea91e2fc168f2c0512807b43a7f8208a8f8a4df7d464736f6c634300081c0033","sourceMap":"432:3576:15:-:0;;","linkReferences":{}}}}},"src/utils/LibOptim.sol":{"LibOptim":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{},\"title\":\"LibOptim\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for optimized EVM operations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/LibOptim.sol\":\"LibOptim\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212200398f15f5e9b603b352d431691aa165e3c5441cd70facd49709dc0030836d1fe64736f6c634300081c0033","sourceMap":"162:2030:16:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"600080fdfea26469706673582212200398f15f5e9b603b352d431691aa165e3c5441cd70facd49709dc0030836d1fe64736f6c634300081c0033","sourceMap":"162:2030:16:-:0;;","linkReferences":{}}}}}},"sources":{"src/Guest.sol":{"id":0,"ast":{"absolutePath":"src/Guest.sol","id":222,"exportedSymbols":{"Calls":[597],"Guest":[221],"LibOptim":[4214],"Payload":[1488]},"nodeType":"SourceUnit","src":"39:2198:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"39:24:0","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":3,"nodeType":"ImportDirective","src":"65:44:0","nodes":[],"absolutePath":"src/modules/Calls.sol","file":"./modules/Calls.sol","nameLocation":"-1:-1:-1","scope":222,"sourceUnit":598,"symbolAliases":[{"foreign":{"id":2,"name":"Calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":597,"src":"74:5:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":5,"nodeType":"ImportDirective","src":"110:48:0","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"./modules/Payload.sol","nameLocation":"-1:-1:-1","scope":222,"sourceUnit":1489,"symbolAliases":[{"foreign":{"id":4,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"119:7:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":7,"nodeType":"ImportDirective","src":"160:48:0","nodes":[],"absolutePath":"src/utils/LibOptim.sol","file":"./utils/LibOptim.sol","nameLocation":"-1:-1:-1","scope":222,"sourceUnit":4215,"symbolAliases":[{"foreign":{"id":6,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"169:8:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":221,"nodeType":"ContractDefinition","src":"325:1911:0","nodes":[{"id":13,"nodeType":"ErrorDefinition","src":"408:44:0","nodes":[],"documentation":{"id":9,"nodeType":"StructuredDocumentation","src":"345:60:0","text":"@notice Error thrown when a delegate call is not allowed"},"errorSelector":"230d1ccc","name":"DelegateCallNotAllowed","nameLocation":"414:22:0","parameters":{"id":12,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11,"mutability":"mutable","name":"index","nameLocation":"445:5:0","nodeType":"VariableDeclaration","scope":13,"src":"437:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"436:15:0"}},{"id":41,"nodeType":"FunctionDefinition","src":"525:186:0","nodes":[],"body":{"id":40,"nodeType":"Block","src":"553:158:0","nodes":[],"statements":[{"assignments":[21],"declarations":[{"constant":false,"id":21,"mutability":"mutable","name":"decoded","nameLocation":"582:7:0","nodeType":"VariableDeclaration","scope":40,"src":"559:30:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":20,"nodeType":"UserDefinedTypeName","pathNode":{"id":19,"name":"Payload.Decoded","nameLocations":["559:7:0","567:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"559:15:0"},"referencedDeclaration":854,"src":"559:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"id":27,"initialValue":{"arguments":[{"expression":{"id":24,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"616:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":25,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"620:4:0","memberName":"data","nodeType":"MemberAccess","src":"616:8:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":22,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"592:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":23,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"600:15:0","memberName":"fromPackedCalls","nodeType":"MemberAccess","referencedDeclaration":1233,"src":"592:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Decoded_$854_memory_ptr_$","typeString":"function (bytes calldata) view returns (struct Payload.Decoded memory)"}},"id":26,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"592:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"nodeType":"VariableDeclarationStatement","src":"559:66:0"},{"assignments":[29],"declarations":[{"constant":false,"id":29,"mutability":"mutable","name":"opHash","nameLocation":"639:6:0","nodeType":"VariableDeclaration","scope":40,"src":"631:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":28,"name":"bytes32","nodeType":"ElementaryTypeName","src":"631:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":34,"initialValue":{"arguments":[{"id":32,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"661:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}],"expression":{"id":30,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"648:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":31,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"656:4:0","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":1453,"src":"648:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory) view returns (bytes32)"}},"id":33,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"648:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"631:38:0"},{"expression":{"arguments":[{"id":36,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"690:7:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":37,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"699:6:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":35,"name":"_dispatchGuest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":220,"src":"675:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes32_$returns$__$","typeString":"function (struct Payload.Decoded memory,bytes32)"}},"id":38,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"675:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":39,"nodeType":"ExpressionStatement","src":"675:31:0"}]},"documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"456:66:0","text":"@notice Fallback function\n @dev Dispatches the guest call"},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":15,"nodeType":"ParameterList","parameters":[],"src":"533:2:0"},"returnParameters":{"id":16,"nodeType":"ParameterList","parameters":[],"src":"553:0:0"},"scope":221,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":220,"nodeType":"FunctionDefinition","src":"715:1518:0","nodes":[],"body":{"id":219,"nodeType":"Block","src":"798:1435:0","nodes":[],"statements":[{"assignments":[50],"declarations":[{"constant":false,"id":50,"mutability":"mutable","name":"errorFlag","nameLocation":"809:9:0","nodeType":"VariableDeclaration","scope":219,"src":"804:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":49,"name":"bool","nodeType":"ElementaryTypeName","src":"804:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":52,"initialValue":{"hexValue":"66616c7365","id":51,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"821:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"nodeType":"VariableDeclarationStatement","src":"804:22:0"},{"assignments":[54],"declarations":[{"constant":false,"id":54,"mutability":"mutable","name":"numCalls","nameLocation":"841:8:0","nodeType":"VariableDeclaration","scope":219,"src":"833:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58,"initialValue":{"expression":{"expression":{"id":55,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"852:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":56,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"861:5:0","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"852:14:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":57,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"867:6:0","memberName":"length","nodeType":"MemberAccess","src":"852:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"833:40:0"},{"body":{"id":217,"nodeType":"Block","src":"918:1311:0","statements":[{"assignments":[73],"declarations":[{"constant":false,"id":73,"mutability":"mutable","name":"call","nameLocation":"946:4:0","nodeType":"VariableDeclaration","scope":217,"src":"926:24:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call"},"typeName":{"id":72,"nodeType":"UserDefinedTypeName","pathNode":{"id":71,"name":"Payload.Call","nameLocations":["926:7:0","934:4:0"],"nodeType":"IdentifierPath","referencedDeclaration":831,"src":"926:12:0"},"referencedDeclaration":831,"src":"926:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_storage_ptr","typeString":"struct Payload.Call"}},"visibility":"internal"}],"id":78,"initialValue":{"baseExpression":{"expression":{"id":74,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"953:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":75,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"962:5:0","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"953:14:0","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":77,"indexExpression":{"id":76,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"968:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"953:17:0","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"nodeType":"VariableDeclarationStatement","src":"926:44:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":83,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"1037:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":80,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1042:12:0","memberName":"onlyFallback","nodeType":"MemberAccess","referencedDeclaration":828,"src":"1037:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":82,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1058:10:0","subExpression":{"id":81,"name":"errorFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50,"src":"1059:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1037:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":93,"nodeType":"IfStatement","src":"1033:108:0","trueBody":{"id":92,"nodeType":"Block","src":"1070:71:0","statements":[{"eventCall":{"arguments":[{"id":87,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"1103:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":88,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"1112:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":84,"name":"Calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":597,"src":"1085:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Calls_$597_$","typeString":"type(contract Calls)"}},"id":86,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1091:11:0","memberName":"CallSkipped","nodeType":"MemberAccess","referencedDeclaration":274,"src":"1085:17:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":89,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1085:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90,"nodeType":"EmitStatement","src":"1080:34:0"},{"id":91,"nodeType":"Continue","src":"1124:8:0"}]}},{"expression":{"id":96,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":94,"name":"errorFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50,"src":"1267:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":95,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1279:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"1267:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":97,"nodeType":"ExpressionStatement","src":"1267:17:0"},{"assignments":[99],"declarations":[{"constant":false,"id":99,"mutability":"mutable","name":"gasLimit","nameLocation":"1301:8:0","nodeType":"VariableDeclaration","scope":217,"src":"1293:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":98,"name":"uint256","nodeType":"ElementaryTypeName","src":"1293:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":102,"initialValue":{"expression":{"id":100,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"1312:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":101,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1317:8:0","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":824,"src":"1312:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1293:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":103,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"1337:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1349:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1337:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":106,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1354:7:0","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1354:9:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":108,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"1366:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1354:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1337:37:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":121,"nodeType":"IfStatement","src":"1333:111:0","trueBody":{"id":120,"nodeType":"Block","src":"1376:68:0","statements":[{"errorCall":{"arguments":[{"id":114,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1412:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":115,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"1422:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":116,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1425:7:0","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1425:9:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":111,"name":"Calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":597,"src":"1393:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Calls_$597_$","typeString":"type(contract Calls)"}},"id":113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1399:12:0","memberName":"NotEnoughGas","nodeType":"MemberAccess","referencedDeclaration":302,"src":"1393:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Decoded_$854_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (struct Payload.Decoded memory,uint256,uint256) pure returns (error)"}},"id":118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1393:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":119,"nodeType":"RevertStatement","src":"1386:49:0"}]}},{"condition":{"expression":{"id":122,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"1456:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1461:12:0","memberName":"delegateCall","nodeType":"MemberAccess","referencedDeclaration":826,"src":"1456:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":129,"nodeType":"IfStatement","src":"1452:74:0","trueBody":{"id":128,"nodeType":"Block","src":"1475:51:0","statements":[{"errorCall":{"arguments":[{"id":125,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"1515:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":124,"name":"DelegateCallNotAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"1492:22:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1492:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":127,"nodeType":"RevertStatement","src":"1485:32:0"}]}},{"assignments":[131],"declarations":[{"constant":false,"id":131,"mutability":"mutable","name":"success","nameLocation":"1539:7:0","nodeType":"VariableDeclaration","scope":217,"src":"1534:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":130,"name":"bool","nodeType":"ElementaryTypeName","src":"1534:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":148,"initialValue":{"arguments":[{"expression":{"id":134,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"1563:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":135,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1568:2:0","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":818,"src":"1563:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":136,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"1572:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1577:5:0","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":820,"src":"1572:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":138,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"1584:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1596:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1584:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":143,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":99,"src":"1612:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1584:36:0","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":141,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1600:7:0","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1600:9:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":145,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"1622:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1627:4:0","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":822,"src":"1622:9:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":132,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"1549:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1558:4:0","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":4199,"src":"1549:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,uint256,bytes memory) returns (bool)"}},"id":147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1549:83:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"1534:98:0"},{"condition":{"id":150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1644:8:0","subExpression":{"id":149,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":131,"src":"1645:7:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":209,"nodeType":"IfStatement","src":"1640:538:0","trueBody":{"id":208,"nodeType":"Block","src":"1654:524:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":151,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"1668:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":152,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1673:15:0","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":830,"src":"1668:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":153,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"1692:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":154,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1700:21:0","memberName":"BEHAVIOR_IGNORE_ERROR","nodeType":"MemberAccess","referencedDeclaration":807,"src":"1692:29:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1668:53:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":172,"nodeType":"IfStatement","src":"1664:186:0","trueBody":{"id":171,"nodeType":"Block","src":"1723:127:0","statements":[{"expression":{"id":158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":156,"name":"errorFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50,"src":"1735:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1747:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1735:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":159,"nodeType":"ExpressionStatement","src":"1735:16:0"},{"eventCall":{"arguments":[{"id":163,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"1785:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":164,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"1794:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":165,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"1797:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1806:10:0","memberName":"returnData","nodeType":"MemberAccess","referencedDeclaration":4183,"src":"1797:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1797:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":160,"name":"Calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":597,"src":"1768:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Calls_$597_$","typeString":"type(contract Calls)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1774:10:0","memberName":"CallFailed","nodeType":"MemberAccess","referencedDeclaration":258,"src":"1768:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes32,uint256,bytes memory)"}},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1768:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":169,"nodeType":"EmitStatement","src":"1763:56:0"},{"id":170,"nodeType":"Continue","src":"1831:8:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":173,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"1864:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1869:15:0","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":830,"src":"1864:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":175,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"1888:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1896:24:0","memberName":"BEHAVIOR_REVERT_ON_ERROR","nodeType":"MemberAccess","referencedDeclaration":811,"src":"1888:32:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1864:56:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":189,"nodeType":"IfStatement","src":"1860:142:0","trueBody":{"id":188,"nodeType":"Block","src":"1922:80:0","statements":[{"errorCall":{"arguments":[{"id":181,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"1956:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":182,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"1966:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":183,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"1969:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1978:10:0","memberName":"returnData","nodeType":"MemberAccess","referencedDeclaration":4183,"src":"1969:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1969:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":178,"name":"Calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":597,"src":"1941:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Calls_$597_$","typeString":"type(contract Calls)"}},"id":180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1947:8:0","memberName":"Reverted","nodeType":"MemberAccess","referencedDeclaration":284,"src":"1941:14:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Decoded_$854_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (struct Payload.Decoded memory,uint256,bytes memory) pure returns (error)"}},"id":186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1941:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":187,"nodeType":"RevertStatement","src":"1934:57:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":190,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"2016:4:0","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2021:15:0","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":830,"src":"2016:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":192,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"2040:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2048:23:0","memberName":"BEHAVIOR_ABORT_ON_ERROR","nodeType":"MemberAccess","referencedDeclaration":815,"src":"2040:31:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2016:55:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":207,"nodeType":"IfStatement","src":"2012:158:0","trueBody":{"id":206,"nodeType":"Block","src":"2073:97:0","statements":[{"eventCall":{"arguments":[{"id":198,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"2108:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":199,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"2117:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":200,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"2120:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2129:10:0","memberName":"returnData","nodeType":"MemberAccess","referencedDeclaration":4183,"src":"2120:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2120:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":195,"name":"Calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":597,"src":"2090:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Calls_$597_$","typeString":"type(contract Calls)"}},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2096:11:0","memberName":"CallAborted","nodeType":"MemberAccess","referencedDeclaration":267,"src":"2090:17:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes32,uint256,bytes memory)"}},"id":203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2090:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":204,"nodeType":"EmitStatement","src":"2085:57:0"},{"id":205,"nodeType":"Break","src":"2154:5:0"}]}}]}},{"eventCall":{"arguments":[{"id":213,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"2211:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":214,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"2220:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":210,"name":"Calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":597,"src":"2191:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Calls_$597_$","typeString":"type(contract Calls)"}},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2197:13:0","memberName":"CallSucceeded","nodeType":"MemberAccess","referencedDeclaration":249,"src":"2191:19:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2191:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":216,"nodeType":"EmitStatement","src":"2186:36:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":63,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"899:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":64,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"903:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"899:12:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":218,"initializationExpression":{"assignments":[60],"declarations":[{"constant":false,"id":60,"mutability":"mutable","name":"i","nameLocation":"892:1:0","nodeType":"VariableDeclaration","scope":218,"src":"884:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59,"name":"uint256","nodeType":"ElementaryTypeName","src":"884:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":62,"initialValue":{"hexValue":"30","id":61,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"896:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"884:13:0"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":67,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"913:3:0","subExpression":{"id":66,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"913:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":68,"nodeType":"ExpressionStatement","src":"913:3:0"},"nodeType":"ForStatement","src":"879:1350:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchGuest","nameLocation":"724:14:0","parameters":{"id":47,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44,"mutability":"mutable","name":"_decoded","nameLocation":"762:8:0","nodeType":"VariableDeclaration","scope":220,"src":"739:31:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":43,"nodeType":"UserDefinedTypeName","pathNode":{"id":42,"name":"Payload.Decoded","nameLocations":["739:7:0","747:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"739:15:0"},"referencedDeclaration":854,"src":"739:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":46,"mutability":"mutable","name":"_opHash","nameLocation":"780:7:0","nodeType":"VariableDeclaration","scope":220,"src":"772:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":45,"name":"bytes32","nodeType":"ElementaryTypeName","src":"772:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"738:50:0"},"returnParameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"798:0:0"},"scope":221,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Guest","contractDependencies":[],"contractKind":"contract","documentation":{"id":8,"nodeType":"StructuredDocumentation","src":"210:115:0","text":"@title Guest\n @author Agustin Aguilar, William Hua, Michael Standen\n @notice Guest for dispatching calls"},"fullyImplemented":true,"linearizedBaseContracts":[221],"name":"Guest","nameLocation":"334:5:0","scope":222,"usedErrors":[13,284,302,725,728],"usedEvents":[249,258,267,274]}],"license":"Apache-2.0"}},"src/modules/Calls.sol":{"id":1,"ast":{"absolutePath":"src/modules/Calls.sol","id":598,"exportedSymbols":{"BaseAuth":[2134],"Calls":[597],"IDelegatedExtension":[3868],"LibOptim":[4214],"Nonce":[712],"Payload":[1488],"ReentrancyGuard":[1557]},"nodeType":"SourceUnit","src":"39:4244:1","nodes":[{"id":223,"nodeType":"PragmaDirective","src":"39:24:1","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":225,"nodeType":"ImportDirective","src":"65:49:1","nodes":[],"absolutePath":"src/utils/LibOptim.sol","file":"../utils/LibOptim.sol","nameLocation":"-1:-1:-1","scope":598,"sourceUnit":4215,"symbolAliases":[{"foreign":{"id":224,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"74:8:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":227,"nodeType":"ImportDirective","src":"115:36:1","nodes":[],"absolutePath":"src/modules/Nonce.sol","file":"./Nonce.sol","nameLocation":"-1:-1:-1","scope":598,"sourceUnit":713,"symbolAliases":[{"foreign":{"id":226,"name":"Nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"124:5:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":229,"nodeType":"ImportDirective","src":"152:40:1","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"./Payload.sol","nameLocation":"-1:-1:-1","scope":598,"sourceUnit":1489,"symbolAliases":[{"foreign":{"id":228,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"161:7:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":231,"nodeType":"ImportDirective","src":"194:56:1","nodes":[],"absolutePath":"src/modules/ReentrancyGuard.sol","file":"./ReentrancyGuard.sol","nameLocation":"-1:-1:-1","scope":598,"sourceUnit":1558,"symbolAliases":[{"foreign":{"id":230,"name":"ReentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1557,"src":"203:15:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":233,"nodeType":"ImportDirective","src":"251:47:1","nodes":[],"absolutePath":"src/modules/auth/BaseAuth.sol","file":"./auth/BaseAuth.sol","nameLocation":"-1:-1:-1","scope":598,"sourceUnit":2135,"symbolAliases":[{"foreign":{"id":232,"name":"BaseAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"260:8:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":235,"nodeType":"ImportDirective","src":"299:75:1","nodes":[],"absolutePath":"src/modules/interfaces/IDelegatedExtension.sol","file":"./interfaces/IDelegatedExtension.sol","nameLocation":"-1:-1:-1","scope":598,"sourceUnit":3869,"symbolAliases":[{"foreign":{"id":234,"name":"IDelegatedExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3868,"src":"308:19:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":597,"nodeType":"ContractDefinition","src":"492:3790:1","nodes":[{"id":249,"nodeType":"EventDefinition","src":"600:61:1","nodes":[],"anonymous":false,"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"557:40:1","text":"@notice Emitted when a call succeeds"},"eventSelector":"5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a","name":"CallSucceeded","nameLocation":"606:13:1","parameters":{"id":248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":245,"indexed":true,"mutability":"mutable","name":"_opHash","nameLocation":"636:7:1","nodeType":"VariableDeclaration","scope":249,"src":"620:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":244,"name":"bytes32","nodeType":"ElementaryTypeName","src":"620:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":247,"indexed":false,"mutability":"mutable","name":"_index","nameLocation":"653:6:1","nodeType":"VariableDeclaration","scope":249,"src":"645:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":246,"name":"uint256","nodeType":"ElementaryTypeName","src":"645:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"619:41:1"}},{"id":258,"nodeType":"EventDefinition","src":"704:77:1","nodes":[],"anonymous":false,"documentation":{"id":250,"nodeType":"StructuredDocumentation","src":"664:37:1","text":"@notice Emitted when a call fails"},"eventSelector":"115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d","name":"CallFailed","nameLocation":"710:10:1","parameters":{"id":257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":252,"indexed":true,"mutability":"mutable","name":"_opHash","nameLocation":"737:7:1","nodeType":"VariableDeclaration","scope":258,"src":"721:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":251,"name":"bytes32","nodeType":"ElementaryTypeName","src":"721:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":254,"indexed":false,"mutability":"mutable","name":"_index","nameLocation":"754:6:1","nodeType":"VariableDeclaration","scope":258,"src":"746:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":253,"name":"uint256","nodeType":"ElementaryTypeName","src":"746:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":256,"indexed":false,"mutability":"mutable","name":"_returnData","nameLocation":"768:11:1","nodeType":"VariableDeclaration","scope":258,"src":"762:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":255,"name":"bytes","nodeType":"ElementaryTypeName","src":"762:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"720:60:1"}},{"id":267,"nodeType":"EventDefinition","src":"829:78:1","nodes":[],"anonymous":false,"documentation":{"id":259,"nodeType":"StructuredDocumentation","src":"784:42:1","text":"@notice Emitted when a call is aborted"},"eventSelector":"c2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b","name":"CallAborted","nameLocation":"835:11:1","parameters":{"id":266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":261,"indexed":true,"mutability":"mutable","name":"_opHash","nameLocation":"863:7:1","nodeType":"VariableDeclaration","scope":267,"src":"847:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":260,"name":"bytes32","nodeType":"ElementaryTypeName","src":"847:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":263,"indexed":false,"mutability":"mutable","name":"_index","nameLocation":"880:6:1","nodeType":"VariableDeclaration","scope":267,"src":"872:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"872:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":265,"indexed":false,"mutability":"mutable","name":"_returnData","nameLocation":"894:11:1","nodeType":"VariableDeclaration","scope":267,"src":"888:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":264,"name":"bytes","nodeType":"ElementaryTypeName","src":"888:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"846:60:1"}},{"id":274,"nodeType":"EventDefinition","src":"955:59:1","nodes":[],"anonymous":false,"documentation":{"id":268,"nodeType":"StructuredDocumentation","src":"910:42:1","text":"@notice Emitted when a call is skipped"},"eventSelector":"9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b","name":"CallSkipped","nameLocation":"961:11:1","parameters":{"id":273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":270,"indexed":true,"mutability":"mutable","name":"_opHash","nameLocation":"989:7:1","nodeType":"VariableDeclaration","scope":274,"src":"973:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":269,"name":"bytes32","nodeType":"ElementaryTypeName","src":"973:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":272,"indexed":false,"mutability":"mutable","name":"_index","nameLocation":"1006:6:1","nodeType":"VariableDeclaration","scope":274,"src":"998:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":271,"name":"uint256","nodeType":"ElementaryTypeName","src":"998:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"972:41:1"}},{"id":284,"nodeType":"ErrorDefinition","src":"1065:76:1","nodes":[],"documentation":{"id":275,"nodeType":"StructuredDocumentation","src":"1018:44:1","text":"@notice Error thrown when a call reverts"},"errorSelector":"7f6b0bb1","name":"Reverted","nameLocation":"1071:8:1","parameters":{"id":283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":278,"mutability":"mutable","name":"_payload","nameLocation":"1096:8:1","nodeType":"VariableDeclaration","scope":284,"src":"1080:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":277,"nodeType":"UserDefinedTypeName","pathNode":{"id":276,"name":"Payload.Decoded","nameLocations":["1080:7:1","1088:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"1080:15:1"},"referencedDeclaration":854,"src":"1080:15:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":280,"mutability":"mutable","name":"_index","nameLocation":"1114:6:1","nodeType":"VariableDeclaration","scope":284,"src":"1106:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":279,"name":"uint256","nodeType":"ElementaryTypeName","src":"1106:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":282,"mutability":"mutable","name":"_returnData","nameLocation":"1128:11:1","nodeType":"VariableDeclaration","scope":284,"src":"1122:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":281,"name":"bytes","nodeType":"ElementaryTypeName","src":"1122:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1079:61:1"}},{"id":292,"nodeType":"ErrorDefinition","src":"1199:67:1","nodes":[],"documentation":{"id":285,"nodeType":"StructuredDocumentation","src":"1144:52:1","text":"@notice Error thrown when a signature is invalid"},"errorSelector":"a2b6d61b","name":"InvalidSignature","nameLocation":"1205:16:1","parameters":{"id":291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":288,"mutability":"mutable","name":"_payload","nameLocation":"1238:8:1","nodeType":"VariableDeclaration","scope":292,"src":"1222:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":287,"nodeType":"UserDefinedTypeName","pathNode":{"id":286,"name":"Payload.Decoded","nameLocations":["1222:7:1","1230:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"1222:15:1"},"referencedDeclaration":854,"src":"1222:15:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":290,"mutability":"mutable","name":"_signature","nameLocation":"1254:10:1","nodeType":"VariableDeclaration","scope":292,"src":"1248:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":289,"name":"bytes","nodeType":"ElementaryTypeName","src":"1248:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1221:44:1"}},{"id":302,"nodeType":"ErrorDefinition","src":"1325:79:1","nodes":[],"documentation":{"id":293,"nodeType":"StructuredDocumentation","src":"1269:53:1","text":"@notice Error thrown when there is not enough gas"},"errorSelector":"21395274","name":"NotEnoughGas","nameLocation":"1331:12:1","parameters":{"id":301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":296,"mutability":"mutable","name":"_payload","nameLocation":"1360:8:1","nodeType":"VariableDeclaration","scope":302,"src":"1344:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":295,"nodeType":"UserDefinedTypeName","pathNode":{"id":294,"name":"Payload.Decoded","nameLocations":["1344:7:1","1352:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"1344:15:1"},"referencedDeclaration":854,"src":"1344:15:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":298,"mutability":"mutable","name":"_index","nameLocation":"1378:6:1","nodeType":"VariableDeclaration","scope":302,"src":"1370:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":297,"name":"uint256","nodeType":"ElementaryTypeName","src":"1370:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":300,"mutability":"mutable","name":"_gasLeft","nameLocation":"1394:8:1","nodeType":"VariableDeclaration","scope":302,"src":"1386:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":299,"name":"uint256","nodeType":"ElementaryTypeName","src":"1386:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1343:60:1"}},{"id":359,"nodeType":"FunctionDefinition","src":"1509:486:1","nodes":[],"body":{"id":358,"nodeType":"Block","src":"1628:367:1","nodes":[],"statements":[{"assignments":[313],"declarations":[{"constant":false,"id":313,"mutability":"mutable","name":"startingGas","nameLocation":"1642:11:1","nodeType":"VariableDeclaration","scope":358,"src":"1634:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":312,"name":"uint256","nodeType":"ElementaryTypeName","src":"1634:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":316,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":314,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1656:7:1","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1656:9:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1634:31:1"},{"assignments":[321],"declarations":[{"constant":false,"id":321,"mutability":"mutable","name":"decoded","nameLocation":"1694:7:1","nodeType":"VariableDeclaration","scope":358,"src":"1671:30:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":320,"nodeType":"UserDefinedTypeName","pathNode":{"id":319,"name":"Payload.Decoded","nameLocations":["1671:7:1","1679:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"1671:15:1"},"referencedDeclaration":854,"src":"1671:15:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"id":326,"initialValue":{"arguments":[{"id":324,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":305,"src":"1728:8:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":322,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"1704:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1712:15:1","memberName":"fromPackedCalls","nodeType":"MemberAccess","referencedDeclaration":1233,"src":"1704:23:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Decoded_$854_memory_ptr_$","typeString":"function (bytes calldata) view returns (struct Payload.Decoded memory)"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1704:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"nodeType":"VariableDeclarationStatement","src":"1671:66:1"},{"expression":{"arguments":[{"expression":{"id":328,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"1758:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":329,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1766:5:1","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":842,"src":"1758:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":330,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"1773:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1781:5:1","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":844,"src":"1773:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":327,"name":"_consumeNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":711,"src":"1744:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1744:43:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":333,"nodeType":"ExpressionStatement","src":"1744:43:1"},{"assignments":[335,337],"declarations":[{"constant":false,"id":335,"mutability":"mutable","name":"isValid","nameLocation":"1799:7:1","nodeType":"VariableDeclaration","scope":358,"src":"1794:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":334,"name":"bool","nodeType":"ElementaryTypeName","src":"1794:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":337,"mutability":"mutable","name":"opHash","nameLocation":"1816:6:1","nodeType":"VariableDeclaration","scope":358,"src":"1808:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":336,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1808:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":342,"initialValue":{"arguments":[{"id":339,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"1846:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":340,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":307,"src":"1855:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":338,"name":"signatureValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1957,"src":"1826:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata) view returns (bool,bytes32)"}},"id":341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:40:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"1793:73:1"},{"condition":{"id":344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1877:8:1","subExpression":{"id":343,"name":"isValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":335,"src":"1878:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":351,"nodeType":"IfStatement","src":"1873:73:1","trueBody":{"id":350,"nodeType":"Block","src":"1887:59:1","statements":[{"errorCall":{"arguments":[{"id":346,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"1919:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":347,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":307,"src":"1928:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":345,"name":"InvalidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"1902:16:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (struct Payload.Decoded memory,bytes memory) pure returns (error)"}},"id":348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1902:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":349,"nodeType":"RevertStatement","src":"1895:44:1"}]}},{"expression":{"arguments":[{"id":353,"name":"startingGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":313,"src":"1961:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":354,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":337,"src":"1974:6:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":355,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"1982:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}],"id":352,"name":"_execute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":596,"src":"1952:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_struct$_Decoded_$854_memory_ptr_$returns$__$","typeString":"function (uint256,bytes32,struct Payload.Decoded memory)"}},"id":356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1952:38:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":357,"nodeType":"ExpressionStatement","src":"1952:38:1"}]},"documentation":{"id":303,"nodeType":"StructuredDocumentation","src":"1408:98:1","text":"@notice Execute a call\n @param _payload The payload\n @param _signature The signature"},"functionSelector":"1f6a1eb9","implemented":true,"kind":"function","modifiers":[{"id":310,"kind":"modifierInvocation","modifierName":{"id":309,"name":"nonReentrant","nameLocations":["1615:12:1"],"nodeType":"IdentifierPath","referencedDeclaration":1556,"src":"1615:12:1"},"nodeType":"ModifierInvocation","src":"1615:12:1"}],"name":"execute","nameLocation":"1518:7:1","parameters":{"id":308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":305,"mutability":"mutable","name":"_payload","nameLocation":"1546:8:1","nodeType":"VariableDeclaration","scope":359,"src":"1531:23:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":304,"name":"bytes","nodeType":"ElementaryTypeName","src":"1531:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":307,"mutability":"mutable","name":"_signature","nameLocation":"1575:10:1","nodeType":"VariableDeclaration","scope":359,"src":"1560:25:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":306,"name":"bytes","nodeType":"ElementaryTypeName","src":"1560:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1525:64:1"},"returnParameters":{"id":311,"nodeType":"ParameterList","parameters":[],"src":"1628:0:1"},"scope":597,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":396,"nodeType":"FunctionDefinition","src":"2110:290:1","nodes":[],"body":{"id":395,"nodeType":"Block","src":"2198:202:1","nodes":[],"statements":[{"assignments":[368],"declarations":[{"constant":false,"id":368,"mutability":"mutable","name":"startingGas","nameLocation":"2212:11:1","nodeType":"VariableDeclaration","scope":395,"src":"2204:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":367,"name":"uint256","nodeType":"ElementaryTypeName","src":"2204:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":371,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":369,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2226:7:1","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:9:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2204:31:1"},{"assignments":[376],"declarations":[{"constant":false,"id":376,"mutability":"mutable","name":"decoded","nameLocation":"2264:7:1","nodeType":"VariableDeclaration","scope":395,"src":"2241:30:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":375,"nodeType":"UserDefinedTypeName","pathNode":{"id":374,"name":"Payload.Decoded","nameLocations":["2241:7:1","2249:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"2241:15:1"},"referencedDeclaration":854,"src":"2241:15:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"id":381,"initialValue":{"arguments":[{"id":379,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":362,"src":"2298:8:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":377,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"2274:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2282:15:1","memberName":"fromPackedCalls","nodeType":"MemberAccess","referencedDeclaration":1233,"src":"2274:23:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Decoded_$854_memory_ptr_$","typeString":"function (bytes calldata) view returns (struct Payload.Decoded memory)"}},"id":380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2274:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"nodeType":"VariableDeclarationStatement","src":"2241:66:1"},{"assignments":[383],"declarations":[{"constant":false,"id":383,"mutability":"mutable","name":"opHash","nameLocation":"2321:6:1","nodeType":"VariableDeclaration","scope":395,"src":"2313:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":382,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2313:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":388,"initialValue":{"arguments":[{"id":386,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"2343:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}],"expression":{"id":384,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"2330:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2338:4:1","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":1453,"src":"2330:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory) view returns (bytes32)"}},"id":387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2330:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2313:38:1"},{"expression":{"arguments":[{"id":390,"name":"startingGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":368,"src":"2366:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":391,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":383,"src":"2379:6:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":392,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"2387:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}],"id":389,"name":"_execute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":596,"src":"2357:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_struct$_Decoded_$854_memory_ptr_$returns$__$","typeString":"function (uint256,bytes32,struct Payload.Decoded memory)"}},"id":393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:38:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":394,"nodeType":"ExpressionStatement","src":"2357:38:1"}]},"documentation":{"id":360,"nodeType":"StructuredDocumentation","src":"1999:108:1","text":"@notice Execute a call\n @dev Callable only by the contract itself\n @param _payload The payload"},"functionSelector":"6ea44577","implemented":true,"kind":"function","modifiers":[{"id":365,"kind":"modifierInvocation","modifierName":{"id":364,"name":"onlySelf","nameLocations":["2189:8:1"],"nodeType":"IdentifierPath","referencedDeclaration":3810,"src":"2189:8:1"},"nodeType":"ModifierInvocation","src":"2189:8:1"}],"name":"selfExecute","nameLocation":"2119:11:1","parameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":362,"mutability":"mutable","name":"_payload","nameLocation":"2151:8:1","nodeType":"VariableDeclaration","scope":396,"src":"2136:23:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":361,"name":"bytes","nodeType":"ElementaryTypeName","src":"2136:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2130:33:1"},"returnParameters":{"id":366,"nodeType":"ParameterList","parameters":[],"src":"2198:0:1"},"scope":597,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":596,"nodeType":"FunctionDefinition","src":"2404:1875:1","nodes":[],"body":{"id":595,"nodeType":"Block","src":"2518:1761:1","nodes":[],"statements":[{"assignments":[407],"declarations":[{"constant":false,"id":407,"mutability":"mutable","name":"errorFlag","nameLocation":"2529:9:1","nodeType":"VariableDeclaration","scope":595,"src":"2524:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":406,"name":"bool","nodeType":"ElementaryTypeName","src":"2524:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":409,"initialValue":{"hexValue":"66616c7365","id":408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2541:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"nodeType":"VariableDeclarationStatement","src":"2524:22:1"},{"assignments":[411],"declarations":[{"constant":false,"id":411,"mutability":"mutable","name":"numCalls","nameLocation":"2561:8:1","nodeType":"VariableDeclaration","scope":595,"src":"2553:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"2553:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":415,"initialValue":{"expression":{"expression":{"id":412,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"2572:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":413,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2581:5:1","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"2572:14:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2587:6:1","memberName":"length","nodeType":"MemberAccess","src":"2572:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2553:40:1"},{"body":{"id":593,"nodeType":"Block","src":"2638:1637:1","statements":[{"assignments":[430],"declarations":[{"constant":false,"id":430,"mutability":"mutable","name":"call","nameLocation":"2666:4:1","nodeType":"VariableDeclaration","scope":593,"src":"2646:24:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call"},"typeName":{"id":429,"nodeType":"UserDefinedTypeName","pathNode":{"id":428,"name":"Payload.Call","nameLocations":["2646:7:1","2654:4:1"],"nodeType":"IdentifierPath","referencedDeclaration":831,"src":"2646:12:1"},"referencedDeclaration":831,"src":"2646:12:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_storage_ptr","typeString":"struct Payload.Call"}},"visibility":"internal"}],"id":435,"initialValue":{"baseExpression":{"expression":{"id":431,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"2673:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":432,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2682:5:1","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"2673:14:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":434,"indexExpression":{"id":433,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"2688:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2673:17:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"nodeType":"VariableDeclarationStatement","src":"2646:44:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":436,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"2757:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":437,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2762:12:1","memberName":"onlyFallback","nodeType":"MemberAccess","referencedDeclaration":828,"src":"2757:17:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2778:10:1","subExpression":{"id":438,"name":"errorFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"2779:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2757:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":448,"nodeType":"IfStatement","src":"2753:102:1","trueBody":{"id":447,"nodeType":"Block","src":"2790:65:1","statements":[{"eventCall":{"arguments":[{"id":442,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"2817:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":443,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"2826:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":441,"name":"CallSkipped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"2805:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2805:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":445,"nodeType":"EmitStatement","src":"2800:28:1"},{"id":446,"nodeType":"Continue","src":"2838:8:1"}]}},{"expression":{"id":451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":449,"name":"errorFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"2981:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2993:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2981:17:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":452,"nodeType":"ExpressionStatement","src":"2981:17:1"},{"assignments":[454],"declarations":[{"constant":false,"id":454,"mutability":"mutable","name":"gasLimit","nameLocation":"3015:8:1","nodeType":"VariableDeclaration","scope":593,"src":"3007:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":453,"name":"uint256","nodeType":"ElementaryTypeName","src":"3007:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":457,"initialValue":{"expression":{"id":455,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"3026:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":456,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3031:8:1","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":824,"src":"3026:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3007:32:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":458,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"3051:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3063:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3051:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":461,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3068:7:1","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3068:9:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":463,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"3080:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3068:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3051:37:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":474,"nodeType":"IfStatement","src":"3047:105:1","trueBody":{"id":473,"nodeType":"Block","src":"3090:62:1","statements":[{"errorCall":{"arguments":[{"id":467,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"3120:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":468,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"3130:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":469,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3133:7:1","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3133:9:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":466,"name":"NotEnoughGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"3107:12:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Decoded_$854_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (struct Payload.Decoded memory,uint256,uint256) pure returns (error)"}},"id":471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3107:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":472,"nodeType":"RevertStatement","src":"3100:43:1"}]}},{"assignments":[476],"declarations":[{"constant":false,"id":476,"mutability":"mutable","name":"success","nameLocation":"3165:7:1","nodeType":"VariableDeclaration","scope":593,"src":"3160:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":475,"name":"bool","nodeType":"ElementaryTypeName","src":"3160:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":477,"nodeType":"VariableDeclarationStatement","src":"3160:12:1"},{"condition":{"expression":{"id":478,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"3184:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3189:12:1","memberName":"delegateCall","nodeType":"MemberAccess","referencedDeclaration":826,"src":"3184:17:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":531,"nodeType":"Block","src":"3588:114:1","statements":[{"expression":{"id":529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":511,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"3599:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":512,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3598:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":515,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"3624:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":516,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3629:2:1","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":818,"src":"3624:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":517,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"3633:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3638:5:1","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":820,"src":"3633:10:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":519,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"3645:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3657:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3645:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":524,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"3673:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3645:36:1","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":522,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3661:7:1","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3661:9:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":526,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"3683:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":527,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3688:4:1","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":822,"src":"3683:9:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":513,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"3610:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3619:4:1","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":4199,"src":"3610:13:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,uint256,bytes memory) returns (bool)"}},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3610:83:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3598:95:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":530,"nodeType":"ExpressionStatement","src":"3598:95:1"}]},"id":532,"nodeType":"IfStatement","src":"3180:522:1","trueBody":{"id":510,"nodeType":"Block","src":"3203:379:1","statements":[{"expression":{"id":508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":480,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"3214:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":481,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3213:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":484,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"3258:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3263:2:1","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":818,"src":"3258:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":486,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"3277:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3289:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3277:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":491,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":454,"src":"3305:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3277:36:1","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":489,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3293:7:1","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3293:9:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"expression":{"id":495,"name":"IDelegatedExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3868,"src":"3361:19:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDelegatedExtension_$3868_$","typeString":"type(contract IDelegatedExtension)"}},"id":496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3381:26:1","memberName":"handleSequenceDelegateCall","nodeType":"MemberAccess","referencedDeclaration":3867,"src":"3361:46:1","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function IDelegatedExtension.handleSequenceDelegateCall(bytes32,uint256,uint256,uint256,uint256,bytes calldata)"}},"id":497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3408:8:1","memberName":"selector","nodeType":"MemberAccess","src":"3361:55:1","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":498,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"3430:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":499,"name":"_startingGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":398,"src":"3451:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":500,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"3477:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":501,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"3492:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":502,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"3514:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":503,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3523:5:1","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":842,"src":"3514:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":504,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"3542:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3547:4:1","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":822,"src":"3542:9:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":493,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3325:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3329:18:1","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3325:22:1","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:238:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":482,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"3225:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3234:12:1","memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":4213,"src":"3225:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) returns (bool)"}},"id":507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3225:348:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3213:360:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":509,"nodeType":"ExpressionStatement","src":"3213:360:1"}]}},{"condition":{"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3714:8:1","subExpression":{"id":533,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":476,"src":"3715:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":587,"nodeType":"IfStatement","src":"3710:520:1","trueBody":{"id":586,"nodeType":"Block","src":"3724:506:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":535,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"3738:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":536,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3743:15:1","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":830,"src":"3738:20:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":537,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"3762:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3770:21:1","memberName":"BEHAVIOR_IGNORE_ERROR","nodeType":"MemberAccess","referencedDeclaration":807,"src":"3762:29:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3738:53:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":554,"nodeType":"IfStatement","src":"3734:180:1","trueBody":{"id":553,"nodeType":"Block","src":"3793:121:1","statements":[{"expression":{"id":542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":540,"name":"errorFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"3805:9:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3817:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3805:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":543,"nodeType":"ExpressionStatement","src":"3805:16:1"},{"eventCall":{"arguments":[{"id":545,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"3849:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":546,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"3858:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":547,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"3861:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3870:10:1","memberName":"returnData","nodeType":"MemberAccess","referencedDeclaration":4183,"src":"3861:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3861:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":544,"name":"CallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":258,"src":"3838:10:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes32,uint256,bytes memory)"}},"id":550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3838:45:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":551,"nodeType":"EmitStatement","src":"3833:50:1"},{"id":552,"nodeType":"Continue","src":"3895:8:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":555,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"3928:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":556,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3933:15:1","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":830,"src":"3928:20:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":557,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"3952:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3960:24:1","memberName":"BEHAVIOR_REVERT_ON_ERROR","nodeType":"MemberAccess","referencedDeclaration":811,"src":"3952:32:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3928:56:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":569,"nodeType":"IfStatement","src":"3924:136:1","trueBody":{"id":568,"nodeType":"Block","src":"3986:74:1","statements":[{"errorCall":{"arguments":[{"id":561,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"4014:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":562,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"4024:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":563,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"4027:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4036:10:1","memberName":"returnData","nodeType":"MemberAccess","referencedDeclaration":4183,"src":"4027:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4027:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":560,"name":"Reverted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":284,"src":"4005:8:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Decoded_$854_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (struct Payload.Decoded memory,uint256,bytes memory) pure returns (error)"}},"id":566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4005:44:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":567,"nodeType":"RevertStatement","src":"3998:51:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":570,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"4074:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4079:15:1","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":830,"src":"4074:20:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":572,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"4098:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4106:23:1","memberName":"BEHAVIOR_ABORT_ON_ERROR","nodeType":"MemberAccess","referencedDeclaration":815,"src":"4098:31:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4074:55:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":585,"nodeType":"IfStatement","src":"4070:152:1","trueBody":{"id":584,"nodeType":"Block","src":"4131:91:1","statements":[{"eventCall":{"arguments":[{"id":576,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"4160:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":577,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"4169:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":578,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"4172:8:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4181:10:1","memberName":"returnData","nodeType":"MemberAccess","referencedDeclaration":4183,"src":"4172:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4172:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":575,"name":"CallAborted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":267,"src":"4148:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes32,uint256,bytes memory)"}},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4148:46:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":582,"nodeType":"EmitStatement","src":"4143:51:1"},{"id":583,"nodeType":"Break","src":"4206:5:1"}]}}]}},{"eventCall":{"arguments":[{"id":589,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"4257:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":590,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"4266:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":588,"name":"CallSucceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":249,"src":"4243:13:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4243:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":592,"nodeType":"EmitStatement","src":"4238:30:1"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":420,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"2619:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":421,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"2623:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2619:12:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":594,"initializationExpression":{"assignments":[417],"declarations":[{"constant":false,"id":417,"mutability":"mutable","name":"i","nameLocation":"2612:1:1","nodeType":"VariableDeclaration","scope":594,"src":"2604:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":416,"name":"uint256","nodeType":"ElementaryTypeName","src":"2604:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":419,"initialValue":{"hexValue":"30","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2616:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2604:13:1"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2633:3:1","subExpression":{"id":423,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"2633:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":425,"nodeType":"ExpressionStatement","src":"2633:3:1"},"nodeType":"ForStatement","src":"2599:1676:1"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"2413:8:1","parameters":{"id":404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":398,"mutability":"mutable","name":"_startingGas","nameLocation":"2435:12:1","nodeType":"VariableDeclaration","scope":596,"src":"2427:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":397,"name":"uint256","nodeType":"ElementaryTypeName","src":"2427:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":400,"mutability":"mutable","name":"_opHash","nameLocation":"2461:7:1","nodeType":"VariableDeclaration","scope":596,"src":"2453:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":399,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2453:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":403,"mutability":"mutable","name":"_decoded","nameLocation":"2497:8:1","nodeType":"VariableDeclaration","scope":596,"src":"2474:31:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":402,"nodeType":"UserDefinedTypeName","pathNode":{"id":401,"name":"Payload.Decoded","nameLocations":["2474:7:1","2482:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"2474:15:1"},"referencedDeclaration":854,"src":"2474:15:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"2421:88:1"},"returnParameters":{"id":405,"nodeType":"ParameterList","parameters":[],"src":"2518:0:1"},"scope":597,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":237,"name":"ReentrancyGuard","nameLocations":["519:15:1"],"nodeType":"IdentifierPath","referencedDeclaration":1557,"src":"519:15:1"},"id":238,"nodeType":"InheritanceSpecifier","src":"519:15:1"},{"baseName":{"id":239,"name":"BaseAuth","nameLocations":["536:8:1"],"nodeType":"IdentifierPath","referencedDeclaration":2134,"src":"536:8:1"},"id":240,"nodeType":"InheritanceSpecifier","src":"536:8:1"},{"baseName":{"id":241,"name":"Nonce","nameLocations":["546:5:1"],"nodeType":"IdentifierPath","referencedDeclaration":712,"src":"546:5:1"},"id":242,"nodeType":"InheritanceSpecifier","src":"546:5:1"}],"canonicalName":"Calls","contractDependencies":[],"contractKind":"contract","documentation":{"id":236,"nodeType":"StructuredDocumentation","src":"376:116:1","text":"@title Calls\n @author Agustin Aguilar, Michael Standen, William Hua\n @notice Contract for executing calls"},"fullyImplemented":false,"linearizedBaseContracts":[597,712,2134,3811,3888,3944,3927,3827,1557],"name":"Calls","nameLocation":"510:5:1","scope":598,"usedErrors":[284,292,302,618,725,728,1526,1670,1677,1684,1693,2201,2210,2217,2223,2228,2231,3792],"usedEvents":[249,258,267,274,609,1702]}],"license":"Apache-2.0"}},"src/modules/Nonce.sol":{"id":2,"ast":{"absolutePath":"src/modules/Nonce.sol","id":713,"exportedSymbols":{"Nonce":[712],"Storage":[1621]},"nodeType":"SourceUnit","src":"39:1338:2","nodes":[{"id":599,"nodeType":"PragmaDirective","src":"39:24:2","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":601,"nodeType":"ImportDirective","src":"65:40:2","nodes":[],"absolutePath":"src/modules/Storage.sol","file":"./Storage.sol","nameLocation":"-1:-1:-1","scope":713,"sourceUnit":1622,"symbolAliases":[{"foreign":{"id":600,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"74:7:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":712,"nodeType":"ContractDefinition","src":"196:1180:2","nodes":[{"id":609,"nodeType":"EventDefinition","src":"264:53:2","nodes":[],"anonymous":false,"documentation":{"id":603,"nodeType":"StructuredDocumentation","src":"216:45:2","text":"@notice Emitted when the nonce is changed"},"eventSelector":"1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881","name":"NonceChange","nameLocation":"270:11:2","parameters":{"id":608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":605,"indexed":false,"mutability":"mutable","name":"_space","nameLocation":"290:6:2","nodeType":"VariableDeclaration","scope":609,"src":"282:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":604,"name":"uint256","nodeType":"ElementaryTypeName","src":"282:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":607,"indexed":false,"mutability":"mutable","name":"_newNonce","nameLocation":"306:9:2","nodeType":"VariableDeclaration","scope":609,"src":"298:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":606,"name":"uint256","nodeType":"ElementaryTypeName","src":"298:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"281:35:2"}},{"id":618,"nodeType":"ErrorDefinition","src":"370:68:2","nodes":[],"documentation":{"id":610,"nodeType":"StructuredDocumentation","src":"321:46:2","text":"@notice Error thrown when the nonce is bad"},"errorSelector":"9b6514f4","name":"BadNonce","nameLocation":"376:8:2","parameters":{"id":617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":612,"mutability":"mutable","name":"_space","nameLocation":"393:6:2","nodeType":"VariableDeclaration","scope":618,"src":"385:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":611,"name":"uint256","nodeType":"ElementaryTypeName","src":"385:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":614,"mutability":"mutable","name":"_provided","nameLocation":"409:9:2","nodeType":"VariableDeclaration","scope":618,"src":"401:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":613,"name":"uint256","nodeType":"ElementaryTypeName","src":"401:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":616,"mutability":"mutable","name":"_current","nameLocation":"428:8:2","nodeType":"VariableDeclaration","scope":618,"src":"420:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":615,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"384:53:2"}},{"id":625,"nodeType":"VariableDeclaration","src":"498:112:2","nodes":[],"constant":true,"documentation":{"id":619,"nodeType":"StructuredDocumentation","src":"442:53:2","text":"@dev keccak256(\"org.arcadeum.module.calls.nonce\")"},"mutability":"constant","name":"NONCE_KEY","nameLocation":"523:9:2","scope":712,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":620,"name":"bytes32","nodeType":"ElementaryTypeName","src":"498:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"307838643062663166643632336436323863373431333632633132383939343865353762336532393035323138633637366433653639616265653336643661653265","id":623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"543:66:2","typeDescriptions":{"typeIdentifier":"t_rational_63797217120035063192835264220719863994123296260065566452921212441289018486318_by_1","typeString":"int_const 6379...(69 digits omitted)...6318"},"value":"0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_63797217120035063192835264220719863994123296260065566452921212441289018486318_by_1","typeString":"int_const 6379...(69 digits omitted)...6318"}],"id":622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"535:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":621,"name":"bytes32","nodeType":"ElementaryTypeName","src":"535:7:2","typeDescriptions":{}}},"id":624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"535:75:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":646,"nodeType":"FunctionDefinition","src":"704:158:2","nodes":[],"body":{"id":645,"nodeType":"Block","src":"785:77:2","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":637,"name":"NONCE_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"829:9:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":640,"name":"_space","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":628,"src":"848:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"840:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":638,"name":"bytes32","nodeType":"ElementaryTypeName","src":"840:7:2","typeDescriptions":{}}},"id":641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"840:15:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":635,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"806:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$1621_$","typeString":"type(library Storage)"}},"id":636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"814:14:2","memberName":"readBytes32Map","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"806:22:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) view returns (bytes32)"}},"id":642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"806:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"798:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"798:7:2","typeDescriptions":{}}},"id":643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"798:59:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":632,"id":644,"nodeType":"Return","src":"791:66:2"}]},"documentation":{"id":626,"nodeType":"StructuredDocumentation","src":"615:86:2","text":"@notice Read the nonce\n @param _space The space\n @return nonce The nonce"},"functionSelector":"8c3f5563","implemented":true,"kind":"function","modifiers":[],"name":"readNonce","nameLocation":"713:9:2","parameters":{"id":629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":628,"mutability":"mutable","name":"_space","nameLocation":"736:6:2","nodeType":"VariableDeclaration","scope":646,"src":"728:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":627,"name":"uint256","nodeType":"ElementaryTypeName","src":"728:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"722:24:2"},"returnParameters":{"id":632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":631,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":646,"src":"776:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":630,"name":"uint256","nodeType":"ElementaryTypeName","src":"776:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"775:9:2"},"scope":712,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":668,"nodeType":"FunctionDefinition","src":"866:141:2","nodes":[],"body":{"id":667,"nodeType":"Block","src":"928:79:2","nodes":[],"statements":[{"expression":{"arguments":[{"id":656,"name":"NONCE_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"958:9:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":659,"name":"_space","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":648,"src":"977:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"969:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":657,"name":"bytes32","nodeType":"ElementaryTypeName","src":"969:7:2","typeDescriptions":{}}},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"969:15:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":663,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":650,"src":"994:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"986:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":661,"name":"bytes32","nodeType":"ElementaryTypeName","src":"986:7:2","typeDescriptions":{}}},"id":664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"986:15:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":653,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"934:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$1621_$","typeString":"type(library Storage)"}},"id":655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"942:15:2","memberName":"writeBytes32Map","nodeType":"MemberAccess","referencedDeclaration":1599,"src":"934:23:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"934:68:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":666,"nodeType":"ExpressionStatement","src":"934:68:2"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_writeNonce","nameLocation":"875:11:2","parameters":{"id":651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":648,"mutability":"mutable","name":"_space","nameLocation":"895:6:2","nodeType":"VariableDeclaration","scope":668,"src":"887:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":647,"name":"uint256","nodeType":"ElementaryTypeName","src":"887:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":650,"mutability":"mutable","name":"_nonce","nameLocation":"911:6:2","nodeType":"VariableDeclaration","scope":668,"src":"903:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":649,"name":"uint256","nodeType":"ElementaryTypeName","src":"903:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"886:32:2"},"returnParameters":{"id":652,"nodeType":"ParameterList","parameters":[],"src":"928:0:2"},"scope":712,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":711,"nodeType":"FunctionDefinition","src":"1011:362:2","nodes":[],"body":{"id":710,"nodeType":"Block","src":"1075:298:2","nodes":[],"statements":[{"assignments":[676],"declarations":[{"constant":false,"id":676,"mutability":"mutable","name":"currentNonce","nameLocation":"1089:12:2","nodeType":"VariableDeclaration","scope":710,"src":"1081:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":675,"name":"uint256","nodeType":"ElementaryTypeName","src":"1081:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":680,"initialValue":{"arguments":[{"id":678,"name":"_space","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"1114:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":677,"name":"readNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"1104:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1104:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1081:40:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":681,"name":"currentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"1131:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":682,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"1147:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1131:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":691,"nodeType":"IfStatement","src":"1127:88:2","trueBody":{"id":690,"nodeType":"Block","src":"1155:60:2","statements":[{"errorCall":{"arguments":[{"id":685,"name":"_space","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"1179:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":686,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"1187:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":687,"name":"currentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"1195:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":684,"name":"BadNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":618,"src":"1170:8:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256,uint256) pure returns (error)"}},"id":688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1170:38:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":689,"nodeType":"RevertStatement","src":"1163:45:2"}]}},{"id":709,"nodeType":"UncheckedBlock","src":"1221:148:2","statements":[{"assignments":[693],"declarations":[{"constant":false,"id":693,"mutability":"mutable","name":"newNonce","nameLocation":"1247:8:2","nodeType":"VariableDeclaration","scope":709,"src":"1239:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":692,"name":"uint256","nodeType":"ElementaryTypeName","src":"1239:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":697,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":694,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"1258:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1267:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1258:10:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1239:29:2"},{"expression":{"arguments":[{"id":699,"name":"_space","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"1289:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":700,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"1297:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":698,"name":"_writeNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":668,"src":"1277:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1277:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":702,"nodeType":"ExpressionStatement","src":"1277:29:2"},{"eventCall":{"arguments":[{"id":704,"name":"_space","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"1331:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":705,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"1339:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":703,"name":"NonceChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":609,"src":"1319:11:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1319:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":707,"nodeType":"EmitStatement","src":"1314:34:2"},{"functionReturnParameters":674,"id":708,"nodeType":"Return","src":"1356:7:2"}]}]},"implemented":true,"kind":"function","modifiers":[],"name":"_consumeNonce","nameLocation":"1020:13:2","parameters":{"id":673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":670,"mutability":"mutable","name":"_space","nameLocation":"1042:6:2","nodeType":"VariableDeclaration","scope":711,"src":"1034:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint256","nodeType":"ElementaryTypeName","src":"1034:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":672,"mutability":"mutable","name":"_nonce","nameLocation":"1058:6:2","nodeType":"VariableDeclaration","scope":711,"src":"1050:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":671,"name":"uint256","nodeType":"ElementaryTypeName","src":"1050:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1033:32:2"},"returnParameters":{"id":674,"nodeType":"ParameterList","parameters":[],"src":"1075:0:2"},"scope":712,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Nonce","contractDependencies":[],"contractKind":"contract","documentation":{"id":602,"nodeType":"StructuredDocumentation","src":"107:89:2","text":"@title Nonce\n @author Agustin Aguilar\n @notice Manages the nonce of the wallet"},"fullyImplemented":true,"linearizedBaseContracts":[712],"name":"Nonce","nameLocation":"205:5:2","scope":713,"usedErrors":[618],"usedEvents":[609]}],"license":"Apache-2.0"}},"src/modules/Payload.sol":{"id":3,"ast":{"absolutePath":"src/modules/Payload.sol","id":1489,"exportedSymbols":{"LibBytes":[4160],"Payload":[1488]},"nodeType":"SourceUnit","src":"39:9934:3","nodes":[{"id":714,"nodeType":"PragmaDirective","src":"39:24:3","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":716,"nodeType":"ImportDirective","src":"65:49:3","nodes":[],"absolutePath":"src/utils/LibBytes.sol","file":"../utils/LibBytes.sol","nameLocation":"-1:-1:-1","scope":1489,"sourceUnit":4161,"symbolAliases":[{"foreign":{"id":715,"name":"LibBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4160,"src":"74:8:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":719,"nodeType":"UsingForDirective","src":"116:25:3","nodes":[],"global":false,"libraryName":{"id":717,"name":"LibBytes","nameLocations":["122:8:3"],"nodeType":"IdentifierPath","referencedDeclaration":4160,"src":"122:8:3"},"typeName":{"id":718,"name":"bytes","nodeType":"ElementaryTypeName","src":"135:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"id":1488,"nodeType":"ContractDefinition","src":"275:9697:3","nodes":[{"id":725,"nodeType":"ErrorDefinition","src":"348:30:3","nodes":[],"documentation":{"id":721,"nodeType":"StructuredDocumentation","src":"296:49:3","text":"@notice Error thrown when the kind is invalid"},"errorSelector":"04818320","name":"InvalidKind","nameLocation":"354:11:3","parameters":{"id":724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":723,"mutability":"mutable","name":"kind","nameLocation":"372:4:3","nodeType":"VariableDeclaration","scope":725,"src":"366:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":722,"name":"uint8","nodeType":"ElementaryTypeName","src":"366:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"365:12:3"}},{"id":728,"nodeType":"ErrorDefinition","src":"438:28:3","nodes":[],"documentation":{"id":726,"nodeType":"StructuredDocumentation","src":"382:53:3","text":"@notice Error thrown when the encoding is invalid"},"errorSelector":"0bdf8038","name":"InvalidPackedLength","nameLocation":"444:19:3","parameters":{"id":727,"nodeType":"ParameterList","parameters":[],"src":"463:2:3"}},{"id":732,"nodeType":"VariableDeclaration","src":"577:116:3","nodes":[],"constant":true,"documentation":{"id":729,"nodeType":"StructuredDocumentation","src":"470:104:3","text":"@dev keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\")"},"mutability":"constant","name":"EIP712_DOMAIN_TYPEHASH","nameLocation":"602:22:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":730,"name":"bytes32","nodeType":"ElementaryTypeName","src":"577:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307838623733633363363962623866653364353132656363346366373539636337393233396637623137396230666661636161396137356435323262333934303066","id":731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"627:66:3","typeDescriptions":{"typeIdentifier":"t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1","typeString":"int_const 6307...(69 digits omitted)...1551"},"value":"0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"},"visibility":"private"},{"id":736,"nodeType":"VariableDeclaration","src":"738:125:3","nodes":[],"constant":true,"documentation":{"id":733,"nodeType":"StructuredDocumentation","src":"698:37:3","text":"@dev keccak256(\"Sequence Wallet\")"},"mutability":"constant","name":"EIP712_DOMAIN_NAME_SEQUENCE","nameLocation":"763:27:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":734,"name":"bytes32","nodeType":"ElementaryTypeName","src":"738:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834616134356361376164383235636562316266333536343366306135386332393532333964663536336231623536356332343835663936343737633536333138","id":735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"797:66:3","typeDescriptions":{"typeIdentifier":"t_rational_33761553195033020586580595614607192138595268542657526595243609892281397895960_by_1","typeString":"int_const 3376...(69 digits omitted)...5960"},"value":"0x4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c56318"},"visibility":"private"},{"id":740,"nodeType":"VariableDeclaration","src":"894:128:3","nodes":[],"constant":true,"documentation":{"id":737,"nodeType":"StructuredDocumentation","src":"868:23:3","text":"@dev keccak256(\"3\")"},"mutability":"constant","name":"EIP712_DOMAIN_VERSION_SEQUENCE","nameLocation":"919:30:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":738,"name":"bytes32","nodeType":"ElementaryTypeName","src":"894:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307832613830653165663164373834326632376632653662653039373262623730386239613133356333383836306462653733633237633334383663333466346465","id":739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"956:66:3","typeDescriptions":{"typeIdentifier":"t_rational_19224855404247632006917173431419498680506051063941070371722880450128577361118_by_1","typeString":"int_const 1922...(69 digits omitted)...1118"},"value":"0x2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de"},"visibility":"private"},{"id":771,"nodeType":"FunctionDefinition","src":"1027:351:3","nodes":[],"body":{"id":770,"nodeType":"Block","src":"1135:243:3","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":752,"name":"EIP712_DOMAIN_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":732,"src":"1185:22:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":753,"name":"EIP712_DOMAIN_NAME_SEQUENCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":736,"src":"1217:27:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":754,"name":"EIP712_DOMAIN_VERSION_SEQUENCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":740,"src":"1254:30:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"condition":{"id":755,"name":"_noChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":742,"src":"1294:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"expression":{"id":762,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1328:5:3","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1334:7:3","memberName":"chainid","nodeType":"MemberAccess","src":"1328:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1320:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":760,"name":"uint256","nodeType":"ElementaryTypeName","src":"1320:7:3","typeDescriptions":{}}},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1320:22:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1294:48:3","trueExpression":{"arguments":[{"hexValue":"30","id":758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1307:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":756,"name":"uint256","nodeType":"ElementaryTypeName","src":"1307:7:3","typeDescriptions":{}}},"id":759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1307:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":766,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"1352:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":750,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1165:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1169:6:3","memberName":"encode","nodeType":"MemberAccess","src":"1165:10:3","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1165:202:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":749,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1148:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1148:225:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":748,"id":769,"nodeType":"Return","src":"1141:232:3"}]},"implemented":true,"kind":"function","modifiers":[],"name":"domainSeparator","nameLocation":"1036:15:3","parameters":{"id":745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":742,"mutability":"mutable","name":"_noChainId","nameLocation":"1057:10:3","nodeType":"VariableDeclaration","scope":771,"src":"1052:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":741,"name":"bool","nodeType":"ElementaryTypeName","src":"1052:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":744,"mutability":"mutable","name":"_wallet","nameLocation":"1077:7:3","nodeType":"VariableDeclaration","scope":771,"src":"1069:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"1069:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1051:34:3"},"returnParameters":{"id":748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":747,"mutability":"mutable","name":"_domainSeparator","nameLocation":"1117:16:3","nodeType":"VariableDeclaration","scope":771,"src":"1109:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":746,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1109:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1108:26:3"},"scope":1488,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":775,"nodeType":"VariableDeclaration","src":"1525:107:3","nodes":[],"constant":true,"documentation":{"id":772,"nodeType":"StructuredDocumentation","src":"1382:140:3","text":"@dev keccak256(\"Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\")"},"mutability":"constant","name":"CALL_TYPEHASH","nameLocation":"1550:13:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":773,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1525:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830363033393835323539613935336461316636356135323266353839633137626431643031313765633164336162623763303738386165663235316566343337","id":774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1566:66:3","typeDescriptions":{"typeIdentifier":"t_rational_2720228918296723626360963932407871369705396312253585537199823977844291073079_by_1","typeString":"int_const 2720...(68 digits omitted)...3079"},"value":"0x0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437"},"visibility":"private"},{"id":779,"nodeType":"VariableDeclaration","src":"1845:108:3","nodes":[],"constant":true,"documentation":{"id":776,"nodeType":"StructuredDocumentation","src":"1637:205:3","text":"@dev keccak256(\"Calls(Call[] calls,uint256 space,uint256 nonce,address[] wallets)Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\")"},"mutability":"constant","name":"CALLS_TYPEHASH","nameLocation":"1870:14:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":777,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1845:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307831316531653430373961373961363665346164653530303333636665323637386364643533343164326466653565663935313365646231613062653134376132","id":778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1887:66:3","typeDescriptions":{"typeIdentifier":"t_rational_8088432818645496868949845499382202138579422833748228835324246952328244053922_by_1","typeString":"int_const 8088...(68 digits omitted)...3922"},"value":"0x11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a2"},"visibility":"private"},{"id":783,"nodeType":"VariableDeclaration","src":"2023:110:3","nodes":[],"constant":true,"documentation":{"id":780,"nodeType":"StructuredDocumentation","src":"1958:62:3","text":"@dev keccak256(\"Message(bytes message,address[] wallets)\")"},"mutability":"constant","name":"MESSAGE_TYPEHASH","nameLocation":"2048:16:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":781,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2023:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307865313961336239346663336337656365336638393064393861393962633432323631353533376130386465613036303366613834323538363764383764343636","id":782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2067:66:3","typeDescriptions":{"typeIdentifier":"t_rational_102042896598880959789982557965414717533526188977275095176186987427015590138982_by_1","typeString":"int_const 1020...(70 digits omitted)...8982"},"value":"0xe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466"},"visibility":"private"},{"id":787,"nodeType":"VariableDeclaration","src":"2212:116:3","nodes":[],"constant":true,"documentation":{"id":784,"nodeType":"StructuredDocumentation","src":"2138:71:3","text":"@dev keccak256(\"ConfigUpdate(bytes32 imageHash,address[] wallets)\")"},"mutability":"constant","name":"CONFIG_UPDATE_TYPEHASH","nameLocation":"2237:22:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":785,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2212:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307831316664656237653833373361316161393662666163386430656139313532366232633564313565356365653230653035343365373830323538663365386534","id":786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2262:66:3","typeDescriptions":{"typeIdentifier":"t_rational_8137956054492713933634491153494727094918514662285841049577704819443807545572_by_1","typeString":"int_const 8137...(68 digits omitted)...5572"},"value":"0x11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4"},"visibility":"private"},{"id":791,"nodeType":"VariableDeclaration","src":"2367:46:3","nodes":[],"constant":true,"documentation":{"id":788,"nodeType":"StructuredDocumentation","src":"2333:31:3","text":"@notice Kind of transaction"},"functionSelector":"075a3d2d","mutability":"constant","name":"KIND_TRANSACTIONS","nameLocation":"2389:17:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":789,"name":"uint8","nodeType":"ElementaryTypeName","src":"2367:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783030","id":790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2409:4:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"id":795,"nodeType":"VariableDeclaration","src":"2446:41:3","nodes":[],"constant":true,"documentation":{"id":792,"nodeType":"StructuredDocumentation","src":"2417:26:3","text":"@notice Kind of digest"},"functionSelector":"3d5c1f9b","mutability":"constant","name":"KIND_MESSAGE","nameLocation":"2468:12:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":793,"name":"uint8","nodeType":"ElementaryTypeName","src":"2446:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783031","id":794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2483:4:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"public"},{"id":799,"nodeType":"VariableDeclaration","src":"2527:47:3","nodes":[],"constant":true,"documentation":{"id":796,"nodeType":"StructuredDocumentation","src":"2491:33:3","text":"@notice Kind of config update"},"functionSelector":"0739d59a","mutability":"constant","name":"KIND_CONFIG_UPDATE","nameLocation":"2549:18:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":797,"name":"uint8","nodeType":"ElementaryTypeName","src":"2527:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783032","id":798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2570:4:3","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"visibility":"public"},{"id":803,"nodeType":"VariableDeclaration","src":"2608:40:3","nodes":[],"constant":true,"documentation":{"id":800,"nodeType":"StructuredDocumentation","src":"2578:27:3","text":"@notice Kind of message"},"functionSelector":"b570180a","mutability":"constant","name":"KIND_DIGEST","nameLocation":"2630:11:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":801,"name":"uint8","nodeType":"ElementaryTypeName","src":"2608:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783033","id":802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2644:4:3","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x03"},"visibility":"public"},{"id":807,"nodeType":"VariableDeclaration","src":"2699:50:3","nodes":[],"constant":true,"documentation":{"id":804,"nodeType":"StructuredDocumentation","src":"2653:43:3","text":"@notice Behavior on error: ignore error"},"functionSelector":"4a7d2aa0","mutability":"constant","name":"BEHAVIOR_IGNORE_ERROR","nameLocation":"2721:21:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":805,"name":"uint8","nodeType":"ElementaryTypeName","src":"2699:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783030","id":806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2745:4:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"id":811,"nodeType":"VariableDeclaration","src":"2802:53:3","nodes":[],"constant":true,"documentation":{"id":808,"nodeType":"StructuredDocumentation","src":"2753:46:3","text":"@notice Behavior on error: revert on error"},"functionSelector":"4e5f5715","mutability":"constant","name":"BEHAVIOR_REVERT_ON_ERROR","nameLocation":"2824:24:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":809,"name":"uint8","nodeType":"ElementaryTypeName","src":"2802:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783031","id":810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2851:4:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"public"},{"id":815,"nodeType":"VariableDeclaration","src":"2907:52:3","nodes":[],"constant":true,"documentation":{"id":812,"nodeType":"StructuredDocumentation","src":"2859:45:3","text":"@notice Behavior on error: abort on error"},"functionSelector":"420b0c25","mutability":"constant","name":"BEHAVIOR_ABORT_ON_ERROR","nameLocation":"2929:23:3","scope":1488,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":813,"name":"uint8","nodeType":"ElementaryTypeName","src":"2907:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783032","id":814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2955:4:3","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"visibility":"public"},{"id":831,"nodeType":"StructDefinition","src":"3374:165:3","nodes":[],"canonicalName":"Payload.Call","documentation":{"id":816,"nodeType":"StructuredDocumentation","src":"2964:407:3","text":"@notice Payload call information\n @param to Address of the target contract\n @param value Value to send with the call\n @param data Data to send with the call\n @param gasLimit Gas limit for the call\n @param delegateCall If the call is a delegate call\n @param onlyFallback If the call should only be executed in an error scenario\n @param behaviorOnError Behavior on error"},"members":[{"constant":false,"id":818,"mutability":"mutable","name":"to","nameLocation":"3400:2:3","nodeType":"VariableDeclaration","scope":831,"src":"3392:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":817,"name":"address","nodeType":"ElementaryTypeName","src":"3392:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":820,"mutability":"mutable","name":"value","nameLocation":"3416:5:3","nodeType":"VariableDeclaration","scope":831,"src":"3408:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":819,"name":"uint256","nodeType":"ElementaryTypeName","src":"3408:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":822,"mutability":"mutable","name":"data","nameLocation":"3433:4:3","nodeType":"VariableDeclaration","scope":831,"src":"3427:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":821,"name":"bytes","nodeType":"ElementaryTypeName","src":"3427:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":824,"mutability":"mutable","name":"gasLimit","nameLocation":"3451:8:3","nodeType":"VariableDeclaration","scope":831,"src":"3443:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":823,"name":"uint256","nodeType":"ElementaryTypeName","src":"3443:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":826,"mutability":"mutable","name":"delegateCall","nameLocation":"3470:12:3","nodeType":"VariableDeclaration","scope":831,"src":"3465:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":825,"name":"bool","nodeType":"ElementaryTypeName","src":"3465:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":828,"mutability":"mutable","name":"onlyFallback","nameLocation":"3493:12:3","nodeType":"VariableDeclaration","scope":831,"src":"3488:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":827,"name":"bool","nodeType":"ElementaryTypeName","src":"3488:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":830,"mutability":"mutable","name":"behaviorOnError","nameLocation":"3519:15:3","nodeType":"VariableDeclaration","scope":831,"src":"3511:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":829,"name":"uint256","nodeType":"ElementaryTypeName","src":"3511:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Call","nameLocation":"3381:4:3","scope":1488,"visibility":"public"},{"id":854,"nodeType":"StructDefinition","src":"4064:323:3","nodes":[],"canonicalName":"Payload.Decoded","documentation":{"id":832,"nodeType":"StructuredDocumentation","src":"3543:518:3","text":"@notice Decoded payload\n @param kind Kind of payload\n @param noChainId If the chain ID should be omitted\n @param calls Array of calls (transaction kind)\n @param space Nonce space for the calls (transaction kind)\n @param nonce Nonce value for the calls (transaction kind)\n @param message Message to validate (message kind)\n @param imageHash Image hash to update to (config update kind)\n @param digest Digest to validate (digest kind)\n @param parentWallets Parent wallets"},"members":[{"constant":false,"id":834,"mutability":"mutable","name":"kind","nameLocation":"4091:4:3","nodeType":"VariableDeclaration","scope":854,"src":"4085:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":833,"name":"uint8","nodeType":"ElementaryTypeName","src":"4085:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":836,"mutability":"mutable","name":"noChainId","nameLocation":"4106:9:3","nodeType":"VariableDeclaration","scope":854,"src":"4101:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":835,"name":"bool","nodeType":"ElementaryTypeName","src":"4101:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":840,"mutability":"mutable","name":"calls","nameLocation":"4152:5:3","nodeType":"VariableDeclaration","scope":854,"src":"4145:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_storage_$dyn_storage_ptr","typeString":"struct Payload.Call[]"},"typeName":{"baseType":{"id":838,"nodeType":"UserDefinedTypeName","pathNode":{"id":837,"name":"Call","nameLocations":["4145:4:3"],"nodeType":"IdentifierPath","referencedDeclaration":831,"src":"4145:4:3"},"referencedDeclaration":831,"src":"4145:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_storage_ptr","typeString":"struct Payload.Call"}},"id":839,"nodeType":"ArrayTypeName","src":"4145:6:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_storage_$dyn_storage_ptr","typeString":"struct Payload.Call[]"}},"visibility":"internal"},{"constant":false,"id":842,"mutability":"mutable","name":"space","nameLocation":"4171:5:3","nodeType":"VariableDeclaration","scope":854,"src":"4163:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":841,"name":"uint256","nodeType":"ElementaryTypeName","src":"4163:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":844,"mutability":"mutable","name":"nonce","nameLocation":"4190:5:3","nodeType":"VariableDeclaration","scope":854,"src":"4182:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":843,"name":"uint256","nodeType":"ElementaryTypeName","src":"4182:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":846,"mutability":"mutable","name":"message","nameLocation":"4227:7:3","nodeType":"VariableDeclaration","scope":854,"src":"4221:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":845,"name":"bytes","nodeType":"ElementaryTypeName","src":"4221:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":848,"mutability":"mutable","name":"imageHash","nameLocation":"4274:9:3","nodeType":"VariableDeclaration","scope":854,"src":"4266:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":847,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4266:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":850,"mutability":"mutable","name":"digest","nameLocation":"4325:6:3","nodeType":"VariableDeclaration","scope":854,"src":"4317:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":849,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4317:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":853,"mutability":"mutable","name":"parentWallets","nameLocation":"4369:13:3","nodeType":"VariableDeclaration","scope":854,"src":"4359:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":851,"name":"address","nodeType":"ElementaryTypeName","src":"4359:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":852,"nodeType":"ArrayTypeName","src":"4359:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"name":"Decoded","nameLocation":"4071:7:3","scope":1488,"visibility":"public"},{"id":875,"nodeType":"FunctionDefinition","src":"4391:170:3","nodes":[],"body":{"id":874,"nodeType":"Block","src":"4490:71:3","nodes":[],"statements":[{"expression":{"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":862,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"4496:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":864,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4505:4:3","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":834,"src":"4496:13:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":865,"name":"KIND_MESSAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":795,"src":"4512:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4496:28:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":867,"nodeType":"ExpressionStatement","src":"4496:28:3"},{"expression":{"id":872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":868,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"4530:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4539:7:3","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":846,"src":"4530:16:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":871,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"4549:7:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4530:26:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":873,"nodeType":"ExpressionStatement","src":"4530:26:3"}]},"implemented":true,"kind":"function","modifiers":[],"name":"fromMessage","nameLocation":"4400:11:3","parameters":{"id":857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":856,"mutability":"mutable","name":"message","nameLocation":"4430:7:3","nodeType":"VariableDeclaration","scope":875,"src":"4417:20:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":855,"name":"bytes","nodeType":"ElementaryTypeName","src":"4417:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4411:30:3"},"returnParameters":{"id":861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":860,"mutability":"mutable","name":"_decoded","nameLocation":"4480:8:3","nodeType":"VariableDeclaration","scope":875,"src":"4465:23:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":859,"nodeType":"UserDefinedTypeName","pathNode":{"id":858,"name":"Decoded","nameLocations":["4465:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"4465:7:3"},"referencedDeclaration":854,"src":"4465:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"4464:25:3"},"scope":1488,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":896,"nodeType":"FunctionDefinition","src":"4565:182:3","nodes":[],"body":{"id":895,"nodeType":"Block","src":"4666:81:3","nodes":[],"statements":[{"expression":{"id":887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":883,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"4672:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4681:4:3","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":834,"src":"4672:13:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":886,"name":"KIND_CONFIG_UPDATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"4688:18:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4672:34:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":888,"nodeType":"ExpressionStatement","src":"4672:34:3"},{"expression":{"id":893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":889,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"4712:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":891,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4721:9:3","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":848,"src":"4712:18:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":892,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":877,"src":"4733:9:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4712:30:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":894,"nodeType":"ExpressionStatement","src":"4712:30:3"}]},"implemented":true,"kind":"function","modifiers":[],"name":"fromConfigUpdate","nameLocation":"4574:16:3","parameters":{"id":878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":877,"mutability":"mutable","name":"imageHash","nameLocation":"4604:9:3","nodeType":"VariableDeclaration","scope":896,"src":"4596:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":876,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4596:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4590:27:3"},"returnParameters":{"id":882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":881,"mutability":"mutable","name":"_decoded","nameLocation":"4656:8:3","nodeType":"VariableDeclaration","scope":896,"src":"4641:23:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":880,"nodeType":"UserDefinedTypeName","pathNode":{"id":879,"name":"Decoded","nameLocations":["4641:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"4641:7:3"},"referencedDeclaration":854,"src":"4641:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"4640:25:3"},"scope":1488,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":917,"nodeType":"FunctionDefinition","src":"4751:160:3","nodes":[],"body":{"id":916,"nodeType":"Block","src":"4843:68:3","nodes":[],"statements":[{"expression":{"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":904,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"4849:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":906,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4858:4:3","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":834,"src":"4849:13:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":907,"name":"KIND_DIGEST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"4865:11:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4849:27:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":909,"nodeType":"ExpressionStatement","src":"4849:27:3"},{"expression":{"id":914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":910,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"4882:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4891:6:3","memberName":"digest","nodeType":"MemberAccess","referencedDeclaration":850,"src":"4882:15:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":913,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":898,"src":"4900:6:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4882:24:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":915,"nodeType":"ExpressionStatement","src":"4882:24:3"}]},"implemented":true,"kind":"function","modifiers":[],"name":"fromDigest","nameLocation":"4760:10:3","parameters":{"id":899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"digest","nameLocation":"4784:6:3","nodeType":"VariableDeclaration","scope":917,"src":"4776:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":897,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4776:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4770:24:3"},"returnParameters":{"id":903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":902,"mutability":"mutable","name":"_decoded","nameLocation":"4833:8:3","nodeType":"VariableDeclaration","scope":917,"src":"4818:23:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":901,"nodeType":"UserDefinedTypeName","pathNode":{"id":900,"name":"Decoded","nameLocations":["4818:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"4818:7:3"},"referencedDeclaration":854,"src":"4818:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"4817:25:3"},"scope":1488,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1233,"nodeType":"FunctionDefinition","src":"4915:2802:3","nodes":[],"body":{"id":1232,"nodeType":"Block","src":"5019:2698:3","nodes":[],"statements":[{"expression":{"id":929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":925,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"5025:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5034:4:3","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":834,"src":"5025:13:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":928,"name":"KIND_TRANSACTIONS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"5041:17:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5025:33:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":930,"nodeType":"ExpressionStatement","src":"5025:33:3"},{"assignments":[932,934],"declarations":[{"constant":false,"id":932,"mutability":"mutable","name":"globalFlag","nameLocation":"5102:10:3","nodeType":"VariableDeclaration","scope":1232,"src":"5094:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":931,"name":"uint256","nodeType":"ElementaryTypeName","src":"5094:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":934,"mutability":"mutable","name":"pointer","nameLocation":"5122:7:3","nodeType":"VariableDeclaration","scope":1232,"src":"5114:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":933,"name":"uint256","nodeType":"ElementaryTypeName","src":"5114:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":938,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":935,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"5133:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5140:14:3","memberName":"readFirstUint8","nodeType":"MemberAccess","referencedDeclaration":3970,"src":"5133:21:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint8,uint256)"}},"id":937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5133:23:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5093:63:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":939,"name":"globalFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"5219:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783031","id":940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5232:4:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"5219:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783031","id":942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5240:4:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"5219:25:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":962,"nodeType":"Block","src":"5285:70:3","statements":[{"expression":{"id":960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":951,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"5294:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5303:5:3","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":842,"src":"5294:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":954,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"5310:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":955,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5293:25:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":958,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"5340:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":956,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"5321:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5328:11:3","memberName":"readUint160","nodeType":"MemberAccess","referencedDeclaration":4035,"src":"5321:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint160_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint160,uint256)"}},"id":959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5321:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint256_$","typeString":"tuple(uint160,uint256)"}},"src":"5293:55:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":961,"nodeType":"ExpressionStatement","src":"5293:55:3"}]},"id":963,"nodeType":"IfStatement","src":"5215:140:3","trueBody":{"id":950,"nodeType":"Block","src":"5246:33:3","statements":[{"expression":{"id":948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":944,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"5254:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":946,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5263:5:3","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":842,"src":"5254:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5271:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5254:18:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":949,"nodeType":"ExpressionStatement","src":"5254:18:3"}]}},{"assignments":[965],"declarations":[{"constant":false,"id":965,"mutability":"mutable","name":"nonceSize","nameLocation":"5420:9:3","nodeType":"VariableDeclaration","scope":1232,"src":"5412:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":964,"name":"uint256","nodeType":"ElementaryTypeName","src":"5412:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":972,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":966,"name":"globalFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"5433:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5447:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5433:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":969,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5432:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783037","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5452:4:3","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"0x07"},"src":"5432:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5412:44:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":973,"name":"nonceSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"5467:9:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5479:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5467:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":989,"nodeType":"IfStatement","src":"5463:122:3","trueBody":{"id":988,"nodeType":"Block","src":"5482:103:3","statements":[{"expression":{"id":986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":976,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"5515:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5524:5:3","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":844,"src":"5515:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":979,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"5531:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":980,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5514:25:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":983,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"5559:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":984,"name":"nonceSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"5568:9:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":981,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"5542:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5549:9:3","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4063,"src":"5542:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5542:36:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5514:64:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":987,"nodeType":"ExpressionStatement","src":"5514:64:3"}]}},{"assignments":[991],"declarations":[{"constant":false,"id":991,"mutability":"mutable","name":"numCalls","nameLocation":"5599:8:3","nodeType":"VariableDeclaration","scope":1232,"src":"5591:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":990,"name":"uint256","nodeType":"ElementaryTypeName","src":"5591:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":992,"nodeType":"VariableDeclarationStatement","src":"5591:16:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":993,"name":"globalFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"5678:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130","id":994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5691:4:3","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"5678:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783130","id":996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5699:4:3","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"5678:25:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1029,"nodeType":"Block","src":"5738:256:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1003,"name":"globalFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"5822:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":1004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5835:4:3","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5822:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783230","id":1006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5843:4:3","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5822:25:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1027,"nodeType":"Block","src":"5922:66:3","statements":[{"expression":{"id":1025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1018,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"5933:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1019,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"5943:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1020,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5932:19:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1023,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"5971:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1021,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"5954:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5961:9:3","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":3983,"src":"5954:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5954:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"5932:47:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1026,"nodeType":"ExpressionStatement","src":"5932:47:3"}]},"id":1028,"nodeType":"IfStatement","src":"5818:170:3","trueBody":{"id":1017,"nodeType":"Block","src":"5849:67:3","statements":[{"expression":{"id":1015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1008,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"5860:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1009,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"5870:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1010,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5859:19:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1013,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"5899:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1011,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"5881:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5888:10:3","memberName":"readUint16","nodeType":"MemberAccess","referencedDeclaration":3996,"src":"5881:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint16_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint16,uint256)"}},"id":1014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5881:26:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint256_$","typeString":"tuple(uint16,uint256)"}},"src":"5859:48:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1016,"nodeType":"ExpressionStatement","src":"5859:48:3"}]}}]},"id":1030,"nodeType":"IfStatement","src":"5674:320:3","trueBody":{"id":1002,"nodeType":"Block","src":"5705:27:3","statements":[{"expression":{"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":998,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"5713:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5724:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5713:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1001,"nodeType":"ExpressionStatement","src":"5713:12:3"}]}},{"expression":{"id":1040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1031,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"6022:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1033,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6031:5:3","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"6022:14:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1038,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"6050:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6039:10:3","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Payload.Call memory[] memory)"},"typeName":{"baseType":{"id":1035,"nodeType":"UserDefinedTypeName","pathNode":{"id":1034,"name":"Call","nameLocations":["6043:4:3"],"nodeType":"IdentifierPath","referencedDeclaration":831,"src":"6043:4:3"},"referencedDeclaration":831,"src":"6043:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_storage_ptr","typeString":"struct Payload.Call"}},"id":1036,"nodeType":"ArrayTypeName","src":"6043:6:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_storage_$dyn_storage_ptr","typeString":"struct Payload.Call[]"}}},"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6039:20:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"src":"6022:37:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1041,"nodeType":"ExpressionStatement","src":"6022:37:3"},{"body":{"id":1219,"nodeType":"Block","src":"6105:1507:3","statements":[{"assignments":[1053],"declarations":[{"constant":false,"id":1053,"mutability":"mutable","name":"flags","nameLocation":"6119:5:3","nodeType":"VariableDeclaration","scope":1219,"src":"6113:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1052,"name":"uint8","nodeType":"ElementaryTypeName","src":"6113:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1054,"nodeType":"VariableDeclarationStatement","src":"6113:11:3"},{"expression":{"id":1062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1055,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"6133:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1056,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"6140:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1057,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6132:16:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1060,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"6168:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1058,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"6151:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6158:9:3","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":3983,"src":"6151:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":1061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"6132:44:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1063,"nodeType":"ExpressionStatement","src":"6132:44:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1064,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"6283:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783031","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6291:4:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"6283:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783031","id":1067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6299:4:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"6283:20:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1096,"nodeType":"Block","src":"6390:115:3","statements":[{"expression":{"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"expression":{"id":1082,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"6436:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6445:5:3","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"6436:14:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1086,"indexExpression":{"id":1084,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"6451:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6436:17:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6454:2:3","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":818,"src":"6436:20:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1088,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"6458:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1089,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6435:31:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1092,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"6488:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1090,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"6469:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6476:11:3","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":4102,"src":"6469:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":1093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6469:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"6435:61:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1095,"nodeType":"ExpressionStatement","src":"6435:61:3"}]},"id":1097,"nodeType":"IfStatement","src":"6279:226:3","trueBody":{"id":1081,"nodeType":"Block","src":"6305:79:3","statements":[{"expression":{"id":1079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1069,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"6339:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1072,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6348:5:3","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"6339:14:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1073,"indexExpression":{"id":1071,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"6354:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6339:17:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6357:2:3","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":818,"src":"6339:20:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1077,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6370:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_Payload_$1488","typeString":"library Payload"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payload_$1488","typeString":"library Payload"}],"id":1076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6362:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1075,"name":"address","nodeType":"ElementaryTypeName","src":"6362:7:3","typeDescriptions":{}}},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6362:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6339:36:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1080,"nodeType":"ExpressionStatement","src":"6339:36:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1098,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"6577:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783032","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6585:4:3","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"6577:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783032","id":1101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6593:4:3","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"6577:20:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1118,"nodeType":"IfStatement","src":"6573:109:3","trueBody":{"id":1117,"nodeType":"Block","src":"6599:83:3","statements":[{"expression":{"id":1115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"expression":{"id":1103,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"6610:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1106,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6619:5:3","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"6610:14:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1107,"indexExpression":{"id":1105,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"6625:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6610:17:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6628:5:3","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":820,"src":"6610:23:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1109,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"6635:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1110,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6609:34:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1113,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"6665:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1111,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"6646:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6653:11:3","memberName":"readUint256","nodeType":"MemberAccess","referencedDeclaration":4048,"src":"6646:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint256,uint256)"}},"id":1114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6646:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"6609:64:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1116,"nodeType":"ExpressionStatement","src":"6609:64:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1119,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"6752:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783034","id":1120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6760:4:3","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"src":"6752:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783034","id":1122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6768:4:3","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"src":"6752:20:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1155,"nodeType":"IfStatement","src":"6748:287:3","trueBody":{"id":1154,"nodeType":"Block","src":"6774:261:3","statements":[{"assignments":[1125],"declarations":[{"constant":false,"id":1125,"mutability":"mutable","name":"calldataSize","nameLocation":"6846:12:3","nodeType":"VariableDeclaration","scope":1154,"src":"6838:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1124,"name":"uint256","nodeType":"ElementaryTypeName","src":"6838:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1126,"nodeType":"VariableDeclarationStatement","src":"6838:20:3"},{"expression":{"id":1134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1127,"name":"calldataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"6869:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1128,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"6883:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1129,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6868:23:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1132,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"6912:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1130,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"6894:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6901:10:3","memberName":"readUint24","nodeType":"MemberAccess","referencedDeclaration":4009,"src":"6894:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint24,uint256)"}},"id":1133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6894:26:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint24_$_t_uint256_$","typeString":"tuple(uint24,uint256)"}},"src":"6868:52:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1135,"nodeType":"ExpressionStatement","src":"6868:52:3"},{"expression":{"id":1148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1136,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"6930:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1139,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6939:5:3","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"6930:14:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1140,"indexExpression":{"id":1138,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"6945:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6930:17:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1141,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6948:4:3","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":822,"src":"6930:22:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1142,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"6955:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1144,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"6970:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1145,"name":"calldataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"6980:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6970:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6955:38:3","startExpression":{"id":1143,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"6962:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"src":"6930:63:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1149,"nodeType":"ExpressionStatement","src":"6930:63:3"},{"expression":{"id":1152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1150,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"7003:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1151,"name":"calldataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"7014:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7003:23:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1153,"nodeType":"ExpressionStatement","src":"7003:23:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1156,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"7113:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783038","id":1157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7121:4:3","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"7113:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783038","id":1159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7129:4:3","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"7113:20:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1176,"nodeType":"IfStatement","src":"7109:112:3","trueBody":{"id":1175,"nodeType":"Block","src":"7135:86:3","statements":[{"expression":{"id":1173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"expression":{"id":1161,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"7146:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7155:5:3","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"7146:14:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1165,"indexExpression":{"id":1163,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"7161:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7146:17:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7164:8:3","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":824,"src":"7146:26:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1167,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"7174:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1168,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7145:37:3","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1171,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"7204:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1169,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"7185:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7192:11:3","memberName":"readUint256","nodeType":"MemberAccess","referencedDeclaration":4048,"src":"7185:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint256,uint256)"}},"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7185:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"7145:67:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1174,"nodeType":"ExpressionStatement","src":"7145:67:3"}]}},{"expression":{"id":1189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1177,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"7297:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1180,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7306:5:3","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"7297:14:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1181,"indexExpression":{"id":1179,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"7312:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7297:17:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7315:12:3","memberName":"delegateCall","nodeType":"MemberAccess","referencedDeclaration":826,"src":"7297:30:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1183,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"7331:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130","id":1184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7339:4:3","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"7331:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783130","id":1186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7347:4:3","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"7331:20:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1188,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7330:22:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7297:55:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1190,"nodeType":"ExpressionStatement","src":"7297:55:3"},{"expression":{"id":1203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1191,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"7420:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7429:5:3","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"7420:14:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1195,"indexExpression":{"id":1193,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"7435:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7420:17:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7438:12:3","memberName":"onlyFallback","nodeType":"MemberAccess","referencedDeclaration":828,"src":"7420:30:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1197,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"7454:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":1198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7462:4:3","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"7454:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783230","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7470:4:3","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"7454:20:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1202,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7453:22:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7420:55:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"ExpressionStatement","src":"7420:55:3"},{"expression":{"id":1217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1205,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"7550:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7559:5:3","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"7550:14:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1209,"indexExpression":{"id":1207,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"7565:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7550:17:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1210,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7568:15:3","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":830,"src":"7550:33:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1211,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"7587:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784330","id":1212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7595:4:3","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xC0"},"src":"7587:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1214,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7586:14:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"36","id":1215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7604:1:3","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7586:19:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7550:55:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1218,"nodeType":"ExpressionStatement","src":"7550:55:3"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1046,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"6086:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1047,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"6090:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6086:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1220,"initializationExpression":{"assignments":[1043],"declarations":[{"constant":false,"id":1043,"mutability":"mutable","name":"i","nameLocation":"6079:1:3","nodeType":"VariableDeclaration","scope":1220,"src":"6071:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1042,"name":"uint256","nodeType":"ElementaryTypeName","src":"6071:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1045,"initialValue":{"hexValue":"30","id":1044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6083:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6071:13:3"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6100:3:3","subExpression":{"id":1049,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"6100:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1051,"nodeType":"ExpressionStatement","src":"6100:3:3"},"nodeType":"ForStatement","src":"6066:1546:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1221,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"7622:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":1222,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"7633:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7640:6:3","memberName":"length","nodeType":"MemberAccess","src":"7633:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7622:24:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1229,"nodeType":"IfStatement","src":"7618:73:3","trueBody":{"id":1228,"nodeType":"Block","src":"7648:43:3","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1225,"name":"InvalidPackedLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":728,"src":"7663:19:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7663:21:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1227,"nodeType":"RevertStatement","src":"7656:28:3"}]}},{"expression":{"id":1230,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"7704:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"functionReturnParameters":924,"id":1231,"nodeType":"Return","src":"7697:15:3"}]},"implemented":true,"kind":"function","modifiers":[],"name":"fromPackedCalls","nameLocation":"4924:15:3","parameters":{"id":920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":919,"mutability":"mutable","name":"packed","nameLocation":"4960:6:3","nodeType":"VariableDeclaration","scope":1233,"src":"4945:21:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":918,"name":"bytes","nodeType":"ElementaryTypeName","src":"4945:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4939:31:3"},"returnParameters":{"id":924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":923,"mutability":"mutable","name":"_decoded","nameLocation":"5009:8:3","nodeType":"VariableDeclaration","scope":1233,"src":"4994:23:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":922,"nodeType":"UserDefinedTypeName","pathNode":{"id":921,"name":"Decoded","nameLocations":["4994:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"4994:7:3"},"referencedDeclaration":854,"src":"4994:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"4993:25:3"},"scope":1488,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1265,"nodeType":"FunctionDefinition","src":"7721:252:3","nodes":[],"body":{"id":1264,"nodeType":"Block","src":"7794:179:3","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":1244,"name":"CALL_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"7844:13:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1245,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"7859:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1246,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7861:2:3","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":818,"src":"7859:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1247,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"7865:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1248,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7867:5:3","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":820,"src":"7865:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":1250,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"7884:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7886:4:3","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":822,"src":"7884:6:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1249,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7874:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7874:17:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1253,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"7893:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7895:8:3","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":824,"src":"7893:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1255,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"7905:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1256,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7907:12:3","memberName":"delegateCall","nodeType":"MemberAccess","referencedDeclaration":826,"src":"7905:14:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":1257,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"7921:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1258,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7923:12:3","memberName":"onlyFallback","nodeType":"MemberAccess","referencedDeclaration":828,"src":"7921:14:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":1259,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"7937:1:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7939:15:3","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":830,"src":"7937:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1242,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7824:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7828:6:3","memberName":"encode","nodeType":"MemberAccess","src":"7824:10:3","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7824:138:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1241,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7807:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7807:161:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1240,"id":1263,"nodeType":"Return","src":"7800:168:3"}]},"implemented":true,"kind":"function","modifiers":[],"name":"hashCall","nameLocation":"7730:8:3","parameters":{"id":1237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1236,"mutability":"mutable","name":"c","nameLocation":"7756:1:3","nodeType":"VariableDeclaration","scope":1265,"src":"7744:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call"},"typeName":{"id":1235,"nodeType":"UserDefinedTypeName","pathNode":{"id":1234,"name":"Call","nameLocations":["7744:4:3"],"nodeType":"IdentifierPath","referencedDeclaration":831,"src":"7744:4:3"},"referencedDeclaration":831,"src":"7744:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_storage_ptr","typeString":"struct Payload.Call"}},"visibility":"internal"}],"src":"7738:23:3"},"returnParameters":{"id":1240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1239,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1265,"src":"7785:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1238,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7785:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7784:9:3"},"scope":1488,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1317,"nodeType":"FunctionDefinition","src":"7977:454:3","nodes":[],"body":{"id":1316,"nodeType":"Block","src":"8057:374:3","nodes":[],"statements":[{"assignments":[1278],"declarations":[{"constant":false,"id":1278,"mutability":"mutable","name":"callHashes","nameLocation":"8237:10:3","nodeType":"VariableDeclaration","scope":1316,"src":"8220:27:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1276,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8220:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1277,"nodeType":"ArrayTypeName","src":"8220:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":1285,"initialValue":{"arguments":[{"expression":{"id":1282,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"8264:5:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8270:6:3","memberName":"length","nodeType":"MemberAccess","src":"8264:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8250:13:3","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":1279,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8254:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1280,"nodeType":"ArrayTypeName","src":"8254:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":1284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8250:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8220:57:3"},{"body":{"id":1307,"nodeType":"Block","src":"8326:49:3","statements":[{"expression":{"id":1305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1297,"name":"callHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1278,"src":"8334:10:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":1299,"indexExpression":{"id":1298,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"8345:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8334:13:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":1301,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"8359:5:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1303,"indexExpression":{"id":1302,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"8365:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8359:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Call_$831_memory_ptr","typeString":"struct Payload.Call memory"}],"id":1300,"name":"hashCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1265,"src":"8350:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Call_$831_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Call memory) pure returns (bytes32)"}},"id":1304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8350:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8334:34:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1306,"nodeType":"ExpressionStatement","src":"8334:34:3"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1290,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"8303:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1291,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1269,"src":"8307:5:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8313:6:3","memberName":"length","nodeType":"MemberAccess","src":"8307:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8303:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1308,"initializationExpression":{"assignments":[1287],"declarations":[{"constant":false,"id":1287,"mutability":"mutable","name":"i","nameLocation":"8296:1:3","nodeType":"VariableDeclaration","scope":1308,"src":"8288:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1286,"name":"uint256","nodeType":"ElementaryTypeName","src":"8288:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1289,"initialValue":{"hexValue":"30","id":1288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8300:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8288:13:3"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8321:3:3","subExpression":{"id":1294,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"8321:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1296,"nodeType":"ExpressionStatement","src":"8321:3:3"},"nodeType":"ForStatement","src":"8283:92:3"},{"expression":{"arguments":[{"arguments":[{"id":1312,"name":"callHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1278,"src":"8414:10:3","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"expression":{"id":1310,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8397:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8401:12:3","memberName":"encodePacked","nodeType":"MemberAccess","src":"8397:16:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8397:28:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1309,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8387:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8387:39:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1273,"id":1315,"nodeType":"Return","src":"8380:46:3"}]},"implemented":true,"kind":"function","modifiers":[],"name":"hashCalls","nameLocation":"7986:9:3","parameters":{"id":1270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1269,"mutability":"mutable","name":"calls","nameLocation":"8015:5:3","nodeType":"VariableDeclaration","scope":1317,"src":"8001:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call[]"},"typeName":{"baseType":{"id":1267,"nodeType":"UserDefinedTypeName","pathNode":{"id":1266,"name":"Call","nameLocations":["8001:4:3"],"nodeType":"IdentifierPath","referencedDeclaration":831,"src":"8001:4:3"},"referencedDeclaration":831,"src":"8001:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$831_storage_ptr","typeString":"struct Payload.Call"}},"id":1268,"nodeType":"ArrayTypeName","src":"8001:6:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_storage_$dyn_storage_ptr","typeString":"struct Payload.Call[]"}},"visibility":"internal"}],"src":"7995:29:3"},"returnParameters":{"id":1273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1272,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1317,"src":"8048:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1271,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8048:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8047:9:3"},"scope":1488,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1418,"nodeType":"FunctionDefinition","src":"8435:972:3","nodes":[],"body":{"id":1417,"nodeType":"Block","src":"8518:889:3","nodes":[],"statements":[{"assignments":[1326],"declarations":[{"constant":false,"id":1326,"mutability":"mutable","name":"walletsHash","nameLocation":"8532:11:3","nodeType":"VariableDeclaration","scope":1417,"src":"8524:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1325,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8524:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1334,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":1330,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"8573:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8582:13:3","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":853,"src":"8573:22:3","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"}],"expression":{"id":1328,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8556:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8560:12:3","memberName":"encodePacked","nodeType":"MemberAccess","src":"8556:16:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8556:40:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1327,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8546:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8546:51:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8524:73:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1335,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"8608:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8617:4:3","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":834,"src":"8608:13:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1337,"name":"KIND_TRANSACTIONS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":791,"src":"8625:17:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8608:34:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1360,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"8822:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1361,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8831:4:3","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":834,"src":"8822:13:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1362,"name":"KIND_MESSAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":795,"src":"8839:12:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8822:29:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1377,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"8966:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1378,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8975:4:3","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":834,"src":"8966:13:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1379,"name":"KIND_CONFIG_UPDATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"8983:18:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8966:35:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1392,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"9113:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1393,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9122:4:3","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":834,"src":"9113:13:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1394,"name":"KIND_DIGEST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"9130:11:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9113:28:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1412,"nodeType":"Block","src":"9333:70:3","statements":[{"errorCall":{"arguments":[{"expression":{"id":1408,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"9382:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1409,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9391:4:3","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":834,"src":"9382:13:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1407,"name":"InvalidKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":725,"src":"9370:11:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":1410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9370:26:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1411,"nodeType":"RevertStatement","src":"9363:33:3"}]},"id":1413,"nodeType":"IfStatement","src":"9109:294:3","trueBody":{"id":1406,"nodeType":"Block","src":"9143:184:3","statements":[{"expression":{"arguments":[{"arguments":[{"id":1399,"name":"MESSAGE_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"9272:16:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1400,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"9290:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9299:6:3","memberName":"digest","nodeType":"MemberAccess","referencedDeclaration":850,"src":"9290:15:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1402,"name":"walletsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"9307:11:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1397,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9261:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9265:6:3","memberName":"encode","nodeType":"MemberAccess","src":"9261:10:3","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9261:58:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1396,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9251:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9251:69:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1324,"id":1405,"nodeType":"Return","src":"9244:76:3"}]}},"id":1414,"nodeType":"IfStatement","src":"8962:441:3","trueBody":{"id":1391,"nodeType":"Block","src":"9003:100:3","statements":[{"expression":{"arguments":[{"arguments":[{"id":1384,"name":"CONFIG_UPDATE_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"9039:22:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1385,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"9063:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1386,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9072:9:3","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":848,"src":"9063:18:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1387,"name":"walletsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"9083:11:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1382,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9028:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9032:6:3","memberName":"encode","nodeType":"MemberAccess","src":"9028:10:3","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9028:67:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1381,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9018:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9018:78:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1324,"id":1390,"nodeType":"Return","src":"9011:85:3"}]}},"id":1415,"nodeType":"IfStatement","src":"8818:585:3","trueBody":{"id":1376,"nodeType":"Block","src":"8853:103:3","statements":[{"expression":{"arguments":[{"arguments":[{"id":1367,"name":"MESSAGE_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"8889:16:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"expression":{"id":1369,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"8917:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8926:7:3","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":846,"src":"8917:16:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1368,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8907:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8907:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1372,"name":"walletsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"8936:11:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1365,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8878:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8882:6:3","memberName":"encode","nodeType":"MemberAccess","src":"8878:10:3","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8878:70:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1364,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8868:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8868:81:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1324,"id":1375,"nodeType":"Return","src":"8861:88:3"}]}},"id":1416,"nodeType":"IfStatement","src":"8604:799:3","trueBody":{"id":1359,"nodeType":"Block","src":"8644:168:3","statements":[{"assignments":[1340],"declarations":[{"constant":false,"id":1340,"mutability":"mutable","name":"callsHash","nameLocation":"8660:9:3","nodeType":"VariableDeclaration","scope":1359,"src":"8652:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1339,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8652:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1345,"initialValue":{"arguments":[{"expression":{"id":1342,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"8682:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1343,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8691:5:3","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":840,"src":"8682:14:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}],"id":1341,"name":"hashCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1317,"src":"8672:9:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Call_$831_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Call memory[] memory) pure returns (bytes32)"}},"id":1344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8672:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8652:45:3"},{"expression":{"arguments":[{"arguments":[{"id":1349,"name":"CALLS_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"8733:14:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1350,"name":"callsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1340,"src":"8749:9:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1351,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"8760:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8769:5:3","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":842,"src":"8760:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1353,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"8776:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8785:5:3","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":844,"src":"8776:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1355,"name":"walletsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"8792:11:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1347,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8722:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8726:6:3","memberName":"encode","nodeType":"MemberAccess","src":"8722:10:3","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8722:82:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1346,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8712:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8712:93:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1324,"id":1358,"nodeType":"Return","src":"8705:100:3"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"toEIP712","nameLocation":"8444:8:3","parameters":{"id":1321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1320,"mutability":"mutable","name":"_decoded","nameLocation":"8473:8:3","nodeType":"VariableDeclaration","scope":1418,"src":"8458:23:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1319,"nodeType":"UserDefinedTypeName","pathNode":{"id":1318,"name":"Decoded","nameLocations":["8458:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"8458:7:3"},"referencedDeclaration":854,"src":"8458:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"8452:33:3"},"returnParameters":{"id":1324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1418,"src":"8509:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1322,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8509:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8508:9:3"},"scope":1488,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1453,"nodeType":"FunctionDefinition","src":"9411:274:3","nodes":[],"body":{"id":1452,"nodeType":"Block","src":"9490:195:3","nodes":[],"statements":[{"assignments":[1427],"declarations":[{"constant":false,"id":1427,"mutability":"mutable","name":"domain","nameLocation":"9504:6:3","nodeType":"VariableDeclaration","scope":1452,"src":"9496:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1426,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9496:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1436,"initialValue":{"arguments":[{"expression":{"id":1429,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"9529:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1430,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9538:9:3","memberName":"noChainId","nodeType":"MemberAccess","referencedDeclaration":836,"src":"9529:18:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":1433,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9557:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_Payload_$1488","typeString":"library Payload"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payload_$1488","typeString":"library Payload"}],"id":1432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9549:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1431,"name":"address","nodeType":"ElementaryTypeName","src":"9549:7:3","typeDescriptions":{}}},"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9549:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1428,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":771,"src":"9513:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$_t_address_$returns$_t_bytes32_$","typeString":"function (bool,address) view returns (bytes32)"}},"id":1435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9513:50:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9496:67:3"},{"assignments":[1438],"declarations":[{"constant":false,"id":1438,"mutability":"mutable","name":"structHash","nameLocation":"9577:10:3","nodeType":"VariableDeclaration","scope":1452,"src":"9569:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1437,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9569:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1442,"initialValue":{"arguments":[{"id":1440,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"9599:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}],"id":1439,"name":"toEIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1418,"src":"9590:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Decoded_$854_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory) pure returns (bytes32)"}},"id":1441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9590:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9569:39:3"},{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":1446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9648:10:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"id":1447,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1427,"src":"9660:6:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1448,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"9668:10:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1444,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9631:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9635:12:3","memberName":"encodePacked","nodeType":"MemberAccess","src":"9631:16:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9631:48:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1443,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9621:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9621:59:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1425,"id":1451,"nodeType":"Return","src":"9614:66:3"}]},"implemented":true,"kind":"function","modifiers":[],"name":"hash","nameLocation":"9420:4:3","parameters":{"id":1422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1421,"mutability":"mutable","name":"_decoded","nameLocation":"9445:8:3","nodeType":"VariableDeclaration","scope":1453,"src":"9430:23:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1420,"nodeType":"UserDefinedTypeName","pathNode":{"id":1419,"name":"Decoded","nameLocations":["9430:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"9430:7:3"},"referencedDeclaration":854,"src":"9430:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"9424:33:3"},"returnParameters":{"id":1425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1424,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1453,"src":"9481:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1423,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9481:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9480:9:3"},"scope":1488,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1487,"nodeType":"FunctionDefinition","src":"9689:280:3","nodes":[],"body":{"id":1486,"nodeType":"Block","src":"9780:189:3","nodes":[],"statements":[{"assignments":[1464],"declarations":[{"constant":false,"id":1464,"mutability":"mutable","name":"domain","nameLocation":"9794:6:3","nodeType":"VariableDeclaration","scope":1486,"src":"9786:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1463,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9786:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1470,"initialValue":{"arguments":[{"expression":{"id":1466,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1456,"src":"9819:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9828:9:3","memberName":"noChainId","nodeType":"MemberAccess","referencedDeclaration":836,"src":"9819:18:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1468,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1458,"src":"9839:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1465,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":771,"src":"9803:15:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$_t_address_$returns$_t_bytes32_$","typeString":"function (bool,address) view returns (bytes32)"}},"id":1469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9803:44:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9786:61:3"},{"assignments":[1472],"declarations":[{"constant":false,"id":1472,"mutability":"mutable","name":"structHash","nameLocation":"9861:10:3","nodeType":"VariableDeclaration","scope":1486,"src":"9853:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1471,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9853:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1476,"initialValue":{"arguments":[{"id":1474,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1456,"src":"9883:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}],"id":1473,"name":"toEIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1418,"src":"9874:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Decoded_$854_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory) pure returns (bytes32)"}},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9874:18:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9853:39:3"},{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":1480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9932:10:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"id":1481,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"9944:6:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1482,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1472,"src":"9952:10:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1478,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9915:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9919:12:3","memberName":"encodePacked","nodeType":"MemberAccess","src":"9915:16:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9915:48:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1477,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9905:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9905:59:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1462,"id":1485,"nodeType":"Return","src":"9898:66:3"}]},"implemented":true,"kind":"function","modifiers":[],"name":"hashFor","nameLocation":"9698:7:3","parameters":{"id":1459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1456,"mutability":"mutable","name":"_decoded","nameLocation":"9721:8:3","nodeType":"VariableDeclaration","scope":1487,"src":"9706:23:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1455,"nodeType":"UserDefinedTypeName","pathNode":{"id":1454,"name":"Decoded","nameLocations":["9706:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"9706:7:3"},"referencedDeclaration":854,"src":"9706:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":1458,"mutability":"mutable","name":"_wallet","nameLocation":"9739:7:3","nodeType":"VariableDeclaration","scope":1487,"src":"9731:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1457,"name":"address","nodeType":"ElementaryTypeName","src":"9731:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9705:42:3"},"returnParameters":{"id":1462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1461,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1487,"src":"9771:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1460,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9771:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9770:9:3"},"scope":1488,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Payload","contractDependencies":[],"contractKind":"library","documentation":{"id":720,"nodeType":"StructuredDocumentation","src":"143:132:3","text":"@title Payload\n @author Agustin Aguilar, Michael Standen, William Hua\n @notice Library for encoding and decoding payloads"},"fullyImplemented":true,"linearizedBaseContracts":[1488],"name":"Payload","nameLocation":"283:7:3","scope":1489,"usedErrors":[725,728],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/ReentrancyGuard.sol":{"id":4,"ast":{"absolutePath":"src/modules/ReentrancyGuard.sol","id":1558,"exportedSymbols":{"ReentrancyGuard":[1557],"Storage":[1621]},"nodeType":"SourceUnit","src":"32:1267:4","nodes":[{"id":1490,"nodeType":"PragmaDirective","src":"32:23:4","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":1492,"nodeType":"ImportDirective","src":"57:40:4","nodes":[],"absolutePath":"src/modules/Storage.sol","file":"./Storage.sol","nameLocation":"-1:-1:-1","scope":1558,"sourceUnit":1622,"symbolAliases":[{"foreign":{"id":1491,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"66:7:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1557,"nodeType":"ContractDefinition","src":"99:1199:4","nodes":[{"id":1498,"nodeType":"VariableDeclaration","src":"138:52:4","nodes":[],"constant":true,"mutability":"constant","name":"_INITIAL_VALUE","nameLocation":"163:14:4","scope":1557,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1493,"name":"bytes32","nodeType":"ElementaryTypeName","src":"138:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"30","id":1496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"188:1:4","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":1495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"180:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1494,"name":"bytes32","nodeType":"ElementaryTypeName","src":"180:7:4","typeDescriptions":{}}},"id":1497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"180:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":1507,"nodeType":"VariableDeclaration","src":"194:59:4","nodes":[],"constant":true,"mutability":"constant","name":"_NOT_ENTERED","nameLocation":"219:12:4","scope":1557,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1499,"name":"bytes32","nodeType":"ElementaryTypeName","src":"194:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"31","id":1504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"250:1:4","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":1503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"242:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1502,"name":"uint256","nodeType":"ElementaryTypeName","src":"242:7:4","typeDescriptions":{}}},"id":1505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"242:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"234:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1500,"name":"bytes32","nodeType":"ElementaryTypeName","src":"234:7:4","typeDescriptions":{}}},"id":1506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"234:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":1516,"nodeType":"VariableDeclaration","src":"257:55:4","nodes":[],"constant":true,"mutability":"constant","name":"_ENTERED","nameLocation":"282:8:4","scope":1557,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1508,"name":"bytes32","nodeType":"ElementaryTypeName","src":"257:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"32","id":1513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"309:1:4","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":1512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"301:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1511,"name":"uint256","nodeType":"ElementaryTypeName","src":"301:7:4","typeDescriptions":{}}},"id":1514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"301:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"293:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1509,"name":"bytes32","nodeType":"ElementaryTypeName","src":"293:7:4","typeDescriptions":{}}},"id":1515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"293:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":1523,"nodeType":"VariableDeclaration","src":"384:113:4","nodes":[],"constant":true,"documentation":{"id":1517,"nodeType":"StructuredDocumentation","src":"317:64:4","text":"@dev keccak256(\"org.sequence.module.reentrancyguard.status\")"},"mutability":"constant","name":"STATUS_KEY","nameLocation":"409:10:4","scope":1557,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1518,"name":"bytes32","nodeType":"ElementaryTypeName","src":"384:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"307866633665303765333939326337633336393461393231646339653431326236636665343735333830353536373536613139383035613965336464666532666465","id":1521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"430:66:4","typeDescriptions":{"typeIdentifier":"t_rational_114177245468372153901819510276752919394550107491418587683901287954970151104478_by_1","typeString":"int_const 1141...(70 digits omitted)...4478"},"value":"0xfc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_114177245468372153901819510276752919394550107491418587683901287954970151104478_by_1","typeString":"int_const 1141...(70 digits omitted)...4478"}],"id":1520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"422:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1519,"name":"bytes32","nodeType":"ElementaryTypeName","src":"422:7:4","typeDescriptions":{}}},"id":1522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"422:75:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":1526,"nodeType":"ErrorDefinition","src":"563:22:4","nodes":[],"documentation":{"id":1524,"nodeType":"StructuredDocumentation","src":"502:58:4","text":"@notice Error thrown when a reentrant call is detected"},"errorSelector":"37ed32e8","name":"ReentrantCall","nameLocation":"569:13:4","parameters":{"id":1525,"nodeType":"ParameterList","parameters":[],"src":"582:2:4"}},{"id":1556,"nodeType":"ModifierDefinition","src":"667:628:4","nodes":[],"body":{"id":1555,"nodeType":"Block","src":"691:604:4","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1531,"name":"STATUS_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"816:10:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1529,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"796:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$1621_$","typeString":"type(library Storage)"}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"804:11:4","memberName":"readBytes32","nodeType":"MemberAccess","referencedDeclaration":1578,"src":"796:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"796:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1533,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"831:8:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"796:43:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1539,"nodeType":"IfStatement","src":"792:86:4","trueBody":{"id":1538,"nodeType":"Block","src":"841:37:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1535,"name":"ReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1526,"src":"856:13:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"856:15:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1537,"nodeType":"RevertStatement","src":"849:22:4"}]}},{"expression":{"arguments":[{"id":1543,"name":"STATUS_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"965:10:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1544,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"977:8:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1540,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"944:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$1621_$","typeString":"type(library Storage)"}},"id":1542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"952:12:4","memberName":"writeBytes32","nodeType":"MemberAccess","referencedDeclaration":1569,"src":"944:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":1545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"944:42:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1546,"nodeType":"ExpressionStatement","src":"944:42:4"},{"id":1547,"nodeType":"PlaceholderStatement","src":"993:1:4"},{"expression":{"arguments":[{"id":1551,"name":"STATUS_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"1265:10:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1552,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1507,"src":"1277:12:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1548,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"1244:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$1621_$","typeString":"type(library Storage)"}},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1252:12:4","memberName":"writeBytes32","nodeType":"MemberAccess","referencedDeclaration":1569,"src":"1244:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":1553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1244:46:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1554,"nodeType":"ExpressionStatement","src":"1244:46:4"}]},"documentation":{"id":1527,"nodeType":"StructuredDocumentation","src":"589:75:4","text":"@notice Prevents a contract from calling itself, directly or indirectly"},"name":"nonReentrant","nameLocation":"676:12:4","parameters":{"id":1528,"nodeType":"ParameterList","parameters":[],"src":"688:2:4"},"virtual":false,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"ReentrancyGuard","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[1557],"name":"ReentrancyGuard","nameLocation":"117:15:4","scope":1558,"usedErrors":[1526],"usedEvents":[]}],"license":"MIT"}},"src/modules/Storage.sol":{"id":5,"ast":{"absolutePath":"src/modules/Storage.sol","id":1622,"exportedSymbols":{"Storage":[1621]},"nodeType":"SourceUnit","src":"39:794:5","nodes":[{"id":1559,"nodeType":"PragmaDirective","src":"39:24:5","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":1621,"nodeType":"ContractDefinition","src":"174:658:5","nodes":[{"id":1569,"nodeType":"FunctionDefinition","src":"195:110:5","nodes":[],"body":{"id":1568,"nodeType":"Block","src":"254:51:5","nodes":[],"statements":[{"AST":{"nativeSrc":"269:32:5","nodeType":"YulBlock","src":"269:32:5","statements":[{"expression":{"arguments":[{"name":"_key","nativeSrc":"284:4:5","nodeType":"YulIdentifier","src":"284:4:5"},{"name":"_val","nativeSrc":"290:4:5","nodeType":"YulIdentifier","src":"290:4:5"}],"functionName":{"name":"sstore","nativeSrc":"277:6:5","nodeType":"YulIdentifier","src":"277:6:5"},"nativeSrc":"277:18:5","nodeType":"YulFunctionCall","src":"277:18:5"},"nativeSrc":"277:18:5","nodeType":"YulExpressionStatement","src":"277:18:5"}]},"evmVersion":"paris","externalReferences":[{"declaration":1562,"isOffset":false,"isSlot":false,"src":"284:4:5","valueSize":1},{"declaration":1564,"isOffset":false,"isSlot":false,"src":"290:4:5","valueSize":1}],"id":1567,"nodeType":"InlineAssembly","src":"260:41:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"writeBytes32","nameLocation":"204:12:5","parameters":{"id":1565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1562,"mutability":"mutable","name":"_key","nameLocation":"225:4:5","nodeType":"VariableDeclaration","scope":1569,"src":"217:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1561,"name":"bytes32","nodeType":"ElementaryTypeName","src":"217:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1564,"mutability":"mutable","name":"_val","nameLocation":"239:4:5","nodeType":"VariableDeclaration","scope":1569,"src":"231:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1563,"name":"bytes32","nodeType":"ElementaryTypeName","src":"231:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"216:28:5"},"returnParameters":{"id":1566,"nodeType":"ParameterList","parameters":[],"src":"254:0:5"},"scope":1621,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1578,"nodeType":"FunctionDefinition","src":"309:130:5","nodes":[],"body":{"id":1577,"nodeType":"Block","src":"388:51:5","nodes":[],"statements":[{"AST":{"nativeSrc":"403:32:5","nodeType":"YulBlock","src":"403:32:5","statements":[{"nativeSrc":"411:18:5","nodeType":"YulAssignment","src":"411:18:5","value":{"arguments":[{"name":"_key","nativeSrc":"424:4:5","nodeType":"YulIdentifier","src":"424:4:5"}],"functionName":{"name":"sload","nativeSrc":"418:5:5","nodeType":"YulIdentifier","src":"418:5:5"},"nativeSrc":"418:11:5","nodeType":"YulFunctionCall","src":"418:11:5"},"variableNames":[{"name":"val","nativeSrc":"411:3:5","nodeType":"YulIdentifier","src":"411:3:5"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1571,"isOffset":false,"isSlot":false,"src":"424:4:5","valueSize":1},{"declaration":1574,"isOffset":false,"isSlot":false,"src":"411:3:5","valueSize":1}],"id":1576,"nodeType":"InlineAssembly","src":"394:41:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readBytes32","nameLocation":"318:11:5","parameters":{"id":1572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1571,"mutability":"mutable","name":"_key","nameLocation":"343:4:5","nodeType":"VariableDeclaration","scope":1578,"src":"335:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1570,"name":"bytes32","nodeType":"ElementaryTypeName","src":"335:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"329:22:5"},"returnParameters":{"id":1575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1574,"mutability":"mutable","name":"val","nameLocation":"383:3:5","nodeType":"VariableDeclaration","scope":1578,"src":"375:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1573,"name":"bytes32","nodeType":"ElementaryTypeName","src":"375:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"374:13:5"},"scope":1621,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1599,"nodeType":"FunctionDefinition","src":"443:185:5","nodes":[],"body":{"id":1598,"nodeType":"Block","src":"522:106:5","nodes":[],"statements":[{"assignments":[1588],"declarations":[{"constant":false,"id":1588,"mutability":"mutable","name":"key","nameLocation":"536:3:5","nodeType":"VariableDeclaration","scope":1598,"src":"528:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1587,"name":"bytes32","nodeType":"ElementaryTypeName","src":"528:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1596,"initialValue":{"arguments":[{"arguments":[{"id":1592,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1580,"src":"563:4:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1593,"name":"_subKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1582,"src":"569:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1590,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"552:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"556:6:5","memberName":"encode","nodeType":"MemberAccess","src":"552:10:5","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"552:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1589,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"542:9:5","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"542:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"528:50:5"},{"AST":{"nativeSrc":"593:31:5","nodeType":"YulBlock","src":"593:31:5","statements":[{"expression":{"arguments":[{"name":"key","nativeSrc":"608:3:5","nodeType":"YulIdentifier","src":"608:3:5"},{"name":"_val","nativeSrc":"613:4:5","nodeType":"YulIdentifier","src":"613:4:5"}],"functionName":{"name":"sstore","nativeSrc":"601:6:5","nodeType":"YulIdentifier","src":"601:6:5"},"nativeSrc":"601:17:5","nodeType":"YulFunctionCall","src":"601:17:5"},"nativeSrc":"601:17:5","nodeType":"YulExpressionStatement","src":"601:17:5"}]},"evmVersion":"paris","externalReferences":[{"declaration":1584,"isOffset":false,"isSlot":false,"src":"613:4:5","valueSize":1},{"declaration":1588,"isOffset":false,"isSlot":false,"src":"608:3:5","valueSize":1}],"id":1597,"nodeType":"InlineAssembly","src":"584:40:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"writeBytes32Map","nameLocation":"452:15:5","parameters":{"id":1585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1580,"mutability":"mutable","name":"_key","nameLocation":"476:4:5","nodeType":"VariableDeclaration","scope":1599,"src":"468:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1579,"name":"bytes32","nodeType":"ElementaryTypeName","src":"468:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1582,"mutability":"mutable","name":"_subKey","nameLocation":"490:7:5","nodeType":"VariableDeclaration","scope":1599,"src":"482:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1581,"name":"bytes32","nodeType":"ElementaryTypeName","src":"482:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1584,"mutability":"mutable","name":"_val","nameLocation":"507:4:5","nodeType":"VariableDeclaration","scope":1599,"src":"499:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1583,"name":"bytes32","nodeType":"ElementaryTypeName","src":"499:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"467:45:5"},"returnParameters":{"id":1586,"nodeType":"ParameterList","parameters":[],"src":"522:0:5"},"scope":1621,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1620,"nodeType":"FunctionDefinition","src":"632:197:5","nodes":[],"body":{"id":1619,"nodeType":"Block","src":"723:106:5","nodes":[],"statements":[{"assignments":[1609],"declarations":[{"constant":false,"id":1609,"mutability":"mutable","name":"key","nameLocation":"737:3:5","nodeType":"VariableDeclaration","scope":1619,"src":"729:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1608,"name":"bytes32","nodeType":"ElementaryTypeName","src":"729:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1617,"initialValue":{"arguments":[{"arguments":[{"id":1613,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"764:4:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1614,"name":"_subKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1603,"src":"770:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1611,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"753:3:5","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"757:6:5","memberName":"encode","nodeType":"MemberAccess","src":"753:10:5","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"753:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1610,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"743:9:5","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"743:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"729:50:5"},{"AST":{"nativeSrc":"794:31:5","nodeType":"YulBlock","src":"794:31:5","statements":[{"nativeSrc":"802:17:5","nodeType":"YulAssignment","src":"802:17:5","value":{"arguments":[{"name":"key","nativeSrc":"815:3:5","nodeType":"YulIdentifier","src":"815:3:5"}],"functionName":{"name":"sload","nativeSrc":"809:5:5","nodeType":"YulIdentifier","src":"809:5:5"},"nativeSrc":"809:10:5","nodeType":"YulFunctionCall","src":"809:10:5"},"variableNames":[{"name":"val","nativeSrc":"802:3:5","nodeType":"YulIdentifier","src":"802:3:5"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1609,"isOffset":false,"isSlot":false,"src":"815:3:5","valueSize":1},{"declaration":1606,"isOffset":false,"isSlot":false,"src":"802:3:5","valueSize":1}],"id":1618,"nodeType":"InlineAssembly","src":"785:40:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readBytes32Map","nameLocation":"641:14:5","parameters":{"id":1604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1601,"mutability":"mutable","name":"_key","nameLocation":"664:4:5","nodeType":"VariableDeclaration","scope":1620,"src":"656:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1600,"name":"bytes32","nodeType":"ElementaryTypeName","src":"656:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1603,"mutability":"mutable","name":"_subKey","nameLocation":"678:7:5","nodeType":"VariableDeclaration","scope":1620,"src":"670:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1602,"name":"bytes32","nodeType":"ElementaryTypeName","src":"670:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"655:31:5"},"returnParameters":{"id":1607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1606,"mutability":"mutable","name":"val","nameLocation":"718:3:5","nodeType":"VariableDeclaration","scope":1620,"src":"710:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1605,"name":"bytes32","nodeType":"ElementaryTypeName","src":"710:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"709:13:5"},"scope":1621,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Storage","contractDependencies":[],"contractKind":"library","documentation":{"id":1560,"nodeType":"StructuredDocumentation","src":"65:109:5","text":"@title Storage\n @author Agustin Aguilar\n @notice Library for storing data at certain storage slots"},"fullyImplemented":true,"linearizedBaseContracts":[1621],"name":"Storage","nameLocation":"182:7:5","scope":1622,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/auth/BaseAuth.sol":{"id":6,"ast":{"absolutePath":"src/modules/auth/BaseAuth.sol","id":2135,"exportedSymbols":{"BaseAuth":[2134],"BaseSig":[3784],"IAuth":[3827],"IERC1271":[3888],"IERC1271_MAGIC_VALUE_HASH":[3873],"IPartialAuth":[3927],"ISapient":[3944],"Payload":[1488],"SelfAuth":[3811],"Storage":[1621]},"nodeType":"SourceUnit","src":"39:6096:6","nodes":[{"id":1623,"nodeType":"PragmaDirective","src":"39:24:6","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":1625,"nodeType":"ImportDirective","src":"65:41:6","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"../Payload.sol","nameLocation":"-1:-1:-1","scope":2135,"sourceUnit":1489,"symbolAliases":[{"foreign":{"id":1624,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"74:7:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1627,"nodeType":"ImportDirective","src":"108:41:6","nodes":[],"absolutePath":"src/modules/Storage.sol","file":"../Storage.sol","nameLocation":"-1:-1:-1","scope":2135,"sourceUnit":1622,"symbolAliases":[{"foreign":{"id":1626,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"117:7:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1629,"nodeType":"ImportDirective","src":"150:48:6","nodes":[],"absolutePath":"src/modules/interfaces/IAuth.sol","file":"../interfaces/IAuth.sol","nameLocation":"-1:-1:-1","scope":2135,"sourceUnit":3828,"symbolAliases":[{"foreign":{"id":1628,"name":"IAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3827,"src":"159:5:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1632,"nodeType":"ImportDirective","src":"199:81:6","nodes":[],"absolutePath":"src/modules/interfaces/IERC1271.sol","file":"../interfaces/IERC1271.sol","nameLocation":"-1:-1:-1","scope":2135,"sourceUnit":3901,"symbolAliases":[{"foreign":{"id":1630,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"208:8:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1631,"name":"IERC1271_MAGIC_VALUE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"218:25:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1634,"nodeType":"ImportDirective","src":"282:62:6","nodes":[],"absolutePath":"src/modules/interfaces/IPartialAuth.sol","file":"../interfaces/IPartialAuth.sol","nameLocation":"-1:-1:-1","scope":2135,"sourceUnit":3928,"symbolAliases":[{"foreign":{"id":1633,"name":"IPartialAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3927,"src":"291:12:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1636,"nodeType":"ImportDirective","src":"345:54:6","nodes":[],"absolutePath":"src/modules/interfaces/ISapient.sol","file":"../interfaces/ISapient.sol","nameLocation":"-1:-1:-1","scope":2135,"sourceUnit":3957,"symbolAliases":[{"foreign":{"id":1635,"name":"ISapient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"354:8:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1638,"nodeType":"ImportDirective","src":"400:40:6","nodes":[],"absolutePath":"src/modules/auth/BaseSig.sol","file":"./BaseSig.sol","nameLocation":"-1:-1:-1","scope":2135,"sourceUnit":3785,"symbolAliases":[{"foreign":{"id":1637,"name":"BaseSig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3784,"src":"409:7:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1640,"nodeType":"ImportDirective","src":"442:42:6","nodes":[],"absolutePath":"src/modules/auth/SelfAuth.sol","file":"./SelfAuth.sol","nameLocation":"-1:-1:-1","scope":2135,"sourceUnit":3812,"symbolAliases":[{"foreign":{"id":1639,"name":"SelfAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3811,"src":"451:8:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1644,"nodeType":"UsingForDirective","src":"486:34:6","nodes":[],"global":false,"libraryName":{"id":1641,"name":"Payload","nameLocations":["492:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":1488,"src":"492:7:6"},"typeName":{"id":1643,"nodeType":"UserDefinedTypeName","pathNode":{"id":1642,"name":"Payload.Decoded","nameLocations":["504:7:6","512:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"504:15:6"},"referencedDeclaration":854,"src":"504:15:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}}},{"id":2134,"nodeType":"ContractDefinition","src":"633:5501:6","nodes":[{"id":1662,"nodeType":"VariableDeclaration","src":"774:127:6","nodes":[],"constant":true,"documentation":{"id":1656,"nodeType":"StructuredDocumentation","src":"718:53:6","text":"@dev keccak256(\"org.sequence.module.auth.static\")"},"mutability":"constant","name":"STATIC_SIGNATURE_KEY","nameLocation":"799:20:6","scope":2134,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1657,"name":"bytes32","nodeType":"ElementaryTypeName","src":"774:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"307863383532616466356539376332666333623338663430353637316539316237616631363937656630323837353737663232376566313034393463326138653836","id":1660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"834:66:6","typeDescriptions":{"typeIdentifier":"t_rational_90608651807858884763709126779667297325611943001701864799635873588240613805702_by_1","typeString":"int_const 9060...(69 digits omitted)...5702"},"value":"0xc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e86"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_90608651807858884763709126779667297325611943001701864799635873588240613805702_by_1","typeString":"int_const 9060...(69 digits omitted)...5702"}],"id":1659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"826:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1658,"name":"bytes32","nodeType":"ElementaryTypeName","src":"826:7:6","typeDescriptions":{}}},"id":1661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"826:75:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":1670,"nodeType":"ErrorDefinition","src":"971:74:6","nodes":[],"documentation":{"id":1663,"nodeType":"StructuredDocumentation","src":"906:62:6","text":"@notice Error thrown when the sapient signature is invalid"},"errorSelector":"f58cc8b5","name":"InvalidSapientSignature","nameLocation":"977:23:6","parameters":{"id":1669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"_payload","nameLocation":"1017:8:6","nodeType":"VariableDeclaration","scope":1670,"src":"1001:24:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1665,"nodeType":"UserDefinedTypeName","pathNode":{"id":1664,"name":"Payload.Decoded","nameLocations":["1001:7:6","1009:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"1001:15:6"},"referencedDeclaration":854,"src":"1001:15:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":1668,"mutability":"mutable","name":"_signature","nameLocation":"1033:10:6","nodeType":"VariableDeclaration","scope":1670,"src":"1027:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1667,"name":"bytes","nodeType":"ElementaryTypeName","src":"1027:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1000:44:6"}},{"id":1677,"nodeType":"ErrorDefinition","src":"1112:66:6","nodes":[],"documentation":{"id":1671,"nodeType":"StructuredDocumentation","src":"1048:61:6","text":"@notice Error thrown when the signature weight is invalid"},"errorSelector":"fd41fcba","name":"InvalidSignatureWeight","nameLocation":"1118:22:6","parameters":{"id":1676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1673,"mutability":"mutable","name":"_threshold","nameLocation":"1149:10:6","nodeType":"VariableDeclaration","scope":1677,"src":"1141:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1672,"name":"uint256","nodeType":"ElementaryTypeName","src":"1141:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1675,"mutability":"mutable","name":"_weight","nameLocation":"1169:7:6","nodeType":"VariableDeclaration","scope":1677,"src":"1161:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"1161:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1140:37:6"}},{"id":1684,"nodeType":"ErrorDefinition","src":"1246:71:6","nodes":[],"documentation":{"id":1678,"nodeType":"StructuredDocumentation","src":"1181:62:6","text":"@notice Error thrown when the static signature has expired"},"errorSelector":"f95b6ab7","name":"InvalidStaticSignatureExpired","nameLocation":"1252:29:6","parameters":{"id":1683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1680,"mutability":"mutable","name":"_opHash","nameLocation":"1290:7:6","nodeType":"VariableDeclaration","scope":1684,"src":"1282:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1679,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1282:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1682,"mutability":"mutable","name":"_expires","nameLocation":"1307:8:6","nodeType":"VariableDeclaration","scope":1684,"src":"1299:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1681,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1281:35:6"}},{"id":1693,"nodeType":"ErrorDefinition","src":"1394:99:6","nodes":[],"documentation":{"id":1685,"nodeType":"StructuredDocumentation","src":"1320:71:6","text":"@notice Error thrown when the static signature has the wrong caller"},"errorSelector":"8945c313","name":"InvalidStaticSignatureWrongCaller","nameLocation":"1400:33:6","parameters":{"id":1692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1687,"mutability":"mutable","name":"_opHash","nameLocation":"1442:7:6","nodeType":"VariableDeclaration","scope":1693,"src":"1434:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1686,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1434:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1689,"mutability":"mutable","name":"_caller","nameLocation":"1459:7:6","nodeType":"VariableDeclaration","scope":1693,"src":"1451:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1688,"name":"address","nodeType":"ElementaryTypeName","src":"1451:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1691,"mutability":"mutable","name":"_expectedCaller","nameLocation":"1476:15:6","nodeType":"VariableDeclaration","scope":1693,"src":"1468:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1690,"name":"address","nodeType":"ElementaryTypeName","src":"1468:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1433:59:6"}},{"id":1702,"nodeType":"EventDefinition","src":"1556:77:6","nodes":[],"anonymous":false,"documentation":{"id":1694,"nodeType":"StructuredDocumentation","src":"1497:56:6","text":"@notice Event emitted when a static signature is set"},"eventSelector":"ebf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1","name":"StaticSignatureSet","nameLocation":"1562:18:6","parameters":{"id":1701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1696,"indexed":false,"mutability":"mutable","name":"_hash","nameLocation":"1589:5:6","nodeType":"VariableDeclaration","scope":1702,"src":"1581:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1695,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1581:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1698,"indexed":false,"mutability":"mutable","name":"_address","nameLocation":"1604:8:6","nodeType":"VariableDeclaration","scope":1702,"src":"1596:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1697,"name":"address","nodeType":"ElementaryTypeName","src":"1596:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1700,"indexed":false,"mutability":"mutable","name":"_timestamp","nameLocation":"1621:10:6","nodeType":"VariableDeclaration","scope":1702,"src":"1614:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1699,"name":"uint96","nodeType":"ElementaryTypeName","src":"1614:6:6","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"1580:52:6"}},{"id":1741,"nodeType":"FunctionDefinition","src":"1637:245:6","nodes":[],"body":{"id":1740,"nodeType":"Block","src":"1730:152:6","nodes":[],"statements":[{"assignments":[1712],"declarations":[{"constant":false,"id":1712,"mutability":"mutable","name":"word","nameLocation":"1744:4:6","nodeType":"VariableDeclaration","scope":1740,"src":"1736:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1711,"name":"uint256","nodeType":"ElementaryTypeName","src":"1736:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1721,"initialValue":{"arguments":[{"arguments":[{"id":1717,"name":"STATIC_SIGNATURE_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1662,"src":"1782:20:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1718,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1704,"src":"1804:5:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1715,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"1759:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$1621_$","typeString":"type(library Storage)"}},"id":1716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1767:14:6","memberName":"readBytes32Map","nodeType":"MemberAccess","referencedDeclaration":1620,"src":"1759:22:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) view returns (bytes32)"}},"id":1719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1759:51:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1751:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1713,"name":"uint256","nodeType":"ElementaryTypeName","src":"1751:7:6","typeDescriptions":{}}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1751:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1736:75:6"},{"expression":{"components":[{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1726,"name":"word","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"1841:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3936","id":1727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1849:2:6","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"1841:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1833:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1724,"name":"uint160","nodeType":"ElementaryTypeName","src":"1833:7:6","typeDescriptions":{}}},"id":1729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1833:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1825:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1722,"name":"address","nodeType":"ElementaryTypeName","src":"1825:7:6","typeDescriptions":{}}},"id":1730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1825:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":1735,"name":"word","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"1870:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1863:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":1733,"name":"uint96","nodeType":"ElementaryTypeName","src":"1863:6:6","typeDescriptions":{}}},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1863:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":1732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1855:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1731,"name":"uint256","nodeType":"ElementaryTypeName","src":"1855:7:6","typeDescriptions":{}}},"id":1737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:21:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1738,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1824:53:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"functionReturnParameters":1710,"id":1739,"nodeType":"Return","src":"1817:60:6"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStaticSignature","nameLocation":"1646:19:6","parameters":{"id":1705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1704,"mutability":"mutable","name":"_hash","nameLocation":"1679:5:6","nodeType":"VariableDeclaration","scope":1741,"src":"1671:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1703,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1671:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1665:23:6"},"returnParameters":{"id":1710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1707,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1741,"src":"1712:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1706,"name":"address","nodeType":"ElementaryTypeName","src":"1712:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1709,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1741,"src":"1721:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1708,"name":"uint256","nodeType":"ElementaryTypeName","src":"1721:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1711:18:6"},"scope":2134,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1775,"nodeType":"FunctionDefinition","src":"1886:253:6","nodes":[],"body":{"id":1774,"nodeType":"Block","src":"1977:162:6","nodes":[],"statements":[{"expression":{"arguments":[{"id":1753,"name":"STATIC_SIGNATURE_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1662,"src":"2014:20:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1754,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2036:5:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1761,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"2067:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2059:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1759,"name":"uint160","nodeType":"ElementaryTypeName","src":"2059:7:6","typeDescriptions":{}}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2059:17:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2051:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1757,"name":"uint256","nodeType":"ElementaryTypeName","src":"2051:7:6","typeDescriptions":{}}},"id":1763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2051:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3936","id":1764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2081:2:6","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"2051:32:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1766,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"2087:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078666666666666666666666666666666666666666666666666","id":1767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2100:26:6","typeDescriptions":{"typeIdentifier":"t_rational_79228162514264337593543950335_by_1","typeString":"int_const 79228162514264337593543950335"},"value":"0xffffffffffffffffffffffff"},"src":"2087:39:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1769,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2086:41:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2051:76:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1756,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2043:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1755,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2043:7:6","typeDescriptions":{}}},"id":1771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2043:85:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1750,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"1983:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$1621_$","typeString":"type(library Storage)"}},"id":1752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1991:15:6","memberName":"writeBytes32Map","nodeType":"MemberAccess","referencedDeclaration":1599,"src":"1983:23:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":1772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1983:151:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1773,"nodeType":"ExpressionStatement","src":"1983:151:6"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setStaticSignature","nameLocation":"1895:19:6","parameters":{"id":1748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"_hash","nameLocation":"1923:5:6","nodeType":"VariableDeclaration","scope":1775,"src":"1915:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1742,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1915:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1745,"mutability":"mutable","name":"_address","nameLocation":"1938:8:6","nodeType":"VariableDeclaration","scope":1775,"src":"1930:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1744,"name":"address","nodeType":"ElementaryTypeName","src":"1930:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1747,"mutability":"mutable","name":"_timestamp","nameLocation":"1956:10:6","nodeType":"VariableDeclaration","scope":1775,"src":"1948:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1746,"name":"uint256","nodeType":"ElementaryTypeName","src":"1948:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1914:53:6"},"returnParameters":{"id":1749,"nodeType":"ParameterList","parameters":[],"src":"1977:0:6"},"scope":2134,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1790,"nodeType":"FunctionDefinition","src":"2395:136:6","nodes":[],"body":{"id":1789,"nodeType":"Block","src":"2487:44:6","nodes":[],"statements":[{"expression":{"arguments":[{"id":1786,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1778,"src":"2520:5:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1785,"name":"_getStaticSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"2500:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$_t_uint256_$","typeString":"function (bytes32) view returns (address,uint256)"}},"id":1787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2500:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"functionReturnParameters":1784,"id":1788,"nodeType":"Return","src":"2493:33:6"}]},"documentation":{"id":1776,"nodeType":"StructuredDocumentation","src":"2143:249:6","text":"@notice Get the static signature for a specific hash\n @param _hash The hash to get the static signature for\n @return address The address associated with the static signature\n @return timestamp The timestamp of the static signature"},"functionSelector":"92dcb3fc","implemented":true,"kind":"function","modifiers":[],"name":"getStaticSignature","nameLocation":"2404:18:6","parameters":{"id":1779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1778,"mutability":"mutable","name":"_hash","nameLocation":"2436:5:6","nodeType":"VariableDeclaration","scope":1790,"src":"2428:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1777,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2428:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2422:23:6"},"returnParameters":{"id":1784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1781,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1790,"src":"2469:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1780,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1783,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1790,"src":"2478:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1782,"name":"uint256","nodeType":"ElementaryTypeName","src":"2478:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2468:18:6"},"scope":2134,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":1815,"nodeType":"FunctionDefinition","src":"2835:215:6","nodes":[],"body":{"id":1814,"nodeType":"Block","src":"2933:117:6","nodes":[],"statements":[{"expression":{"arguments":[{"id":1803,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"2959:5:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1804,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1795,"src":"2966:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1805,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"2976:10:6","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":1802,"name":"_setStaticSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"2939:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes32,address,uint256)"}},"id":1806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2939:48:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1807,"nodeType":"ExpressionStatement","src":"2939:48:6"},{"eventCall":{"arguments":[{"id":1809,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"3017:5:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1810,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1795,"src":"3024:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1811,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"3034:10:6","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":1808,"name":"StaticSignatureSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1702,"src":"2998:18:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint96_$returns$__$","typeString":"function (bytes32,address,uint96)"}},"id":1812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2998:47:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1813,"nodeType":"EmitStatement","src":"2993:52:6"}]},"documentation":{"id":1791,"nodeType":"StructuredDocumentation","src":"2535:297:6","text":"@notice Set the static signature for a specific hash\n @param _hash The hash to set the static signature for\n @param _address The address to associate with the static signature\n @param _timestamp The timestamp of the static signature\n @dev Only callable by the wallet itself"},"functionSelector":"f727ef1c","implemented":true,"kind":"function","modifiers":[{"id":1800,"kind":"modifierInvocation","modifierName":{"id":1799,"name":"onlySelf","nameLocations":["2924:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":3810,"src":"2924:8:6"},"nodeType":"ModifierInvocation","src":"2924:8:6"}],"name":"setStaticSignature","nameLocation":"2844:18:6","parameters":{"id":1798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1793,"mutability":"mutable","name":"_hash","nameLocation":"2871:5:6","nodeType":"VariableDeclaration","scope":1815,"src":"2863:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1792,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2863:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1795,"mutability":"mutable","name":"_address","nameLocation":"2886:8:6","nodeType":"VariableDeclaration","scope":1815,"src":"2878:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1794,"name":"address","nodeType":"ElementaryTypeName","src":"2878:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1797,"mutability":"mutable","name":"_timestamp","nameLocation":"2903:10:6","nodeType":"VariableDeclaration","scope":1815,"src":"2896:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1796,"name":"uint96","nodeType":"ElementaryTypeName","src":"2896:6:6","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"2862:52:6"},"returnParameters":{"id":1801,"nodeType":"ParameterList","parameters":[],"src":"2933:0:6"},"scope":2134,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1828,"nodeType":"FunctionDefinition","src":"3179:118:6","nodes":[],"body":{"id":1827,"nodeType":"Block","src":"3258:39:6","nodes":[],"statements":[{"expression":{"arguments":[{"id":1824,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1818,"src":"3281:10:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1823,"name":"_updateImageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3826,"src":"3264:16:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":1825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3264:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1826,"nodeType":"ExpressionStatement","src":"3264:28:6"}]},"documentation":{"id":1816,"nodeType":"StructuredDocumentation","src":"3054:122:6","text":"@notice Update the image hash\n @param _imageHash The new image hash\n @dev Only callable by the wallet itself"},"functionSelector":"29561426","implemented":true,"kind":"function","modifiers":[{"id":1821,"kind":"modifierInvocation","modifierName":{"id":1820,"name":"onlySelf","nameLocations":["3249:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":3810,"src":"3249:8:6"},"nodeType":"ModifierInvocation","src":"3249:8:6"}],"name":"updateImageHash","nameLocation":"3188:15:6","parameters":{"id":1819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1818,"mutability":"mutable","name":"_imageHash","nameLocation":"3217:10:6","nodeType":"VariableDeclaration","scope":1828,"src":"3209:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1817,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3209:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3203:28:6"},"returnParameters":{"id":1822,"nodeType":"ParameterList","parameters":[],"src":"3258:0:6"},"scope":2134,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":1957,"nodeType":"FunctionDefinition","src":"3301:1229:6","nodes":[],"body":{"id":1956,"nodeType":"Block","src":"3463:1067:6","nodes":[],"statements":[{"assignments":[1841],"declarations":[{"constant":false,"id":1841,"mutability":"mutable","name":"signatureFlag","nameLocation":"3539:13:6","nodeType":"VariableDeclaration","scope":1956,"src":"3532:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":1840,"name":"bytes1","nodeType":"ElementaryTypeName","src":"3532:6:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":1845,"initialValue":{"baseExpression":{"id":1842,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1833,"src":"3555:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1844,"indexExpression":{"hexValue":"30","id":1843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3566:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3555:13:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"3532:36:6"},{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1846,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1841,"src":"3579:13:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783830","id":1847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3595:4:6","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"src":"3579:20:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783830","id":1849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3603:4:6","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"src":"3579:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1911,"nodeType":"IfStatement","src":"3575:521:6","trueBody":{"id":1910,"nodeType":"Block","src":"3609:487:6","statements":[{"expression":{"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1851,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"3652:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3661:9:6","memberName":"noChainId","nodeType":"MemberAccess","referencedDeclaration":836,"src":"3652:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":1856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1854,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1841,"src":"3673:13:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783032","id":1855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3689:4:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"3673:20:6","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783032","id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3697:4:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"3673:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3652:49:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1860,"nodeType":"ExpressionStatement","src":"3652:49:6"},{"expression":{"id":1865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1861,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"3709:6:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1862,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"3718:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3727:4:6","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":1453,"src":"3718:13:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Decoded_$854_memory_ptr_$","typeString":"function (struct Payload.Decoded memory) view returns (bytes32)"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3718:15:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3709:24:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1866,"nodeType":"ExpressionStatement","src":"3709:24:6"},{"assignments":[1868,1870],"declarations":[{"constant":false,"id":1868,"mutability":"mutable","name":"addr","nameLocation":"3751:4:6","nodeType":"VariableDeclaration","scope":1910,"src":"3743:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1867,"name":"address","nodeType":"ElementaryTypeName","src":"3743:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1870,"mutability":"mutable","name":"timestamp","nameLocation":"3765:9:6","nodeType":"VariableDeclaration","scope":1910,"src":"3757:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1869,"name":"uint256","nodeType":"ElementaryTypeName","src":"3757:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1874,"initialValue":{"arguments":[{"id":1872,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"3798:6:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1871,"name":"_getStaticSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"3778:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$_t_uint256_$","typeString":"function (bytes32) view returns (address,uint256)"}},"id":1873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3778:27:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3742:63:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1875,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"3817:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":1876,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3830:5:6","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3836:9:6","memberName":"timestamp","nodeType":"MemberAccess","src":"3830:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3817:28:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1885,"nodeType":"IfStatement","src":"3813:108:6","trueBody":{"id":1884,"nodeType":"Block","src":"3847:74:6","statements":[{"errorCall":{"arguments":[{"id":1880,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"3894:6:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1881,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"3902:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1879,"name":"InvalidStaticSignatureExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1684,"src":"3864:29:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$_t_uint256_$returns$_t_error_$","typeString":"function (bytes32,uint256) pure returns (error)"}},"id":1882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3864:48:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1883,"nodeType":"RevertStatement","src":"3857:55:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1886,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1868,"src":"3933:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3949:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3941:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1887,"name":"address","nodeType":"ElementaryTypeName","src":"3941:7:6","typeDescriptions":{}}},"id":1890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3941:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3933:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1892,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1868,"src":"3955:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":1893,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3963:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3967:6:6","memberName":"sender","nodeType":"MemberAccess","src":"3963:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3955:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3933:40:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1905,"nodeType":"IfStatement","src":"3929:131:6","trueBody":{"id":1904,"nodeType":"Block","src":"3975:85:6","statements":[{"errorCall":{"arguments":[{"id":1898,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"4026:6:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1899,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4034:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4038:6:6","memberName":"sender","nodeType":"MemberAccess","src":"4034:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1901,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1868,"src":"4046:4:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1897,"name":"InvalidStaticSignatureWrongCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1693,"src":"3992:33:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (bytes32,address,address) pure returns (error)"}},"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3992:59:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1903,"nodeType":"RevertStatement","src":"3985:66:6"}]}},{"expression":{"components":[{"hexValue":"74727565","id":1906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4076:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1907,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"4082:6:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1908,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4075:14:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"functionReturnParameters":1839,"id":1909,"nodeType":"Return","src":"4068:21:6"}]}},{"assignments":[1913],"declarations":[{"constant":false,"id":1913,"mutability":"mutable","name":"threshold","nameLocation":"4179:9:6","nodeType":"VariableDeclaration","scope":1956,"src":"4171:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1912,"name":"uint256","nodeType":"ElementaryTypeName","src":"4171:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1914,"nodeType":"VariableDeclarationStatement","src":"4171:17:6"},{"assignments":[1916],"declarations":[{"constant":false,"id":1916,"mutability":"mutable","name":"weight","nameLocation":"4202:6:6","nodeType":"VariableDeclaration","scope":1956,"src":"4194:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1915,"name":"uint256","nodeType":"ElementaryTypeName","src":"4194:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1917,"nodeType":"VariableDeclarationStatement","src":"4194:14:6"},{"assignments":[1919],"declarations":[{"constant":false,"id":1919,"mutability":"mutable","name":"imageHash","nameLocation":"4222:9:6","nodeType":"VariableDeclaration","scope":1956,"src":"4214:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4214:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1920,"nodeType":"VariableDeclarationStatement","src":"4214:17:6"},{"expression":{"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1921,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1913,"src":"4239:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1922,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1916,"src":"4250:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1923,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1919,"src":"4258:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},null,{"id":1924,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"4270:6:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1925,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4238:39:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$__$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1928,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"4302:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":1929,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1833,"src":"4312:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"expression":{"id":1930,"name":"BaseSig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3784,"src":"4324:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseSig_$3784_$","typeString":"type(library BaseSig)"}},"id":1931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4332:11:6","memberName":"RecoverMode","nodeType":"MemberAccess","referencedDeclaration":2235,"src":"4324:19:6","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2235_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":1932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4344:7:6","memberName":"Initial","nodeType":"MemberAccess","referencedDeclaration":2232,"src":"4324:27:6","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},{"arguments":[{"hexValue":"30","id":1935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4361:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4353:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1933,"name":"address","nodeType":"ElementaryTypeName","src":"4353:7:6","typeDescriptions":{}}},"id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4353:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1926,"name":"BaseSig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3784,"src":"4286:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseSig_$3784_$","typeString":"type(library BaseSig)"}},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4294:7:6","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":2597,"src":"4286:15:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes_calldata_ptr_$_t_enum$_RecoverMode_$2235_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata,enum BaseSig.RecoverMode,address) view returns (uint256,uint256,bytes32,uint256,bytes32)"}},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4286:78:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"src":"4238:126:6","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1939,"nodeType":"ExpressionStatement","src":"4238:126:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1940,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1916,"src":"4402:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1941,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1913,"src":"4411:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4402:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1949,"nodeType":"IfStatement","src":"4398:87:6","trueBody":{"id":1948,"nodeType":"Block","src":"4422:63:6","statements":[{"errorCall":{"arguments":[{"id":1944,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1913,"src":"4460:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1945,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1916,"src":"4471:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1943,"name":"InvalidSignatureWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"4437:22:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4437:41:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1947,"nodeType":"RevertStatement","src":"4430:48:6"}]}},{"expression":{"id":1954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1950,"name":"isValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1836,"src":"4491:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1952,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1919,"src":"4515:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1951,"name":"_isValidImage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"4501:13:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":1953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4501:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4491:34:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1955,"nodeType":"ExpressionStatement","src":"4491:34:6"}]},"implemented":true,"kind":"function","modifiers":[],"name":"signatureValidation","nameLocation":"3310:19:6","parameters":{"id":1834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1831,"mutability":"mutable","name":"_payload","nameLocation":"3358:8:6","nodeType":"VariableDeclaration","scope":1957,"src":"3335:31:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1830,"nodeType":"UserDefinedTypeName","pathNode":{"id":1829,"name":"Payload.Decoded","nameLocations":["3335:7:6","3343:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"3335:15:6"},"referencedDeclaration":854,"src":"3335:15:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":1833,"mutability":"mutable","name":"_signature","nameLocation":"3387:10:6","nodeType":"VariableDeclaration","scope":1957,"src":"3372:25:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1832,"name":"bytes","nodeType":"ElementaryTypeName","src":"3372:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3329:72:6"},"returnParameters":{"id":1839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1836,"mutability":"mutable","name":"isValid","nameLocation":"3438:7:6","nodeType":"VariableDeclaration","scope":1957,"src":"3433:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1835,"name":"bool","nodeType":"ElementaryTypeName","src":"3433:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1838,"mutability":"mutable","name":"opHash","nameLocation":"3455:6:6","nodeType":"VariableDeclaration","scope":1957,"src":"3447:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1837,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3447:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3432:30:6"},"scope":2134,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2046,"nodeType":"FunctionDefinition","src":"4561:698:6","nodes":[],"body":{"id":2045,"nodeType":"Block","src":"4698:561:6","nodes":[],"statements":[{"assignments":[1972],"declarations":[{"constant":false,"id":1972,"mutability":"mutable","name":"parentWallets","nameLocation":"4772:13:6","nodeType":"VariableDeclaration","scope":2045,"src":"4755:30:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1970,"name":"address","nodeType":"ElementaryTypeName","src":"4755:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1971,"nodeType":"ArrayTypeName","src":"4755:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":1982,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1976,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"4802:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4811:13:6","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":853,"src":"4802:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4825:6:6","memberName":"length","nodeType":"MemberAccess","src":"4802:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4834:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4802:33:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4788:13:6","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":1973,"name":"address","nodeType":"ElementaryTypeName","src":"4792:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1974,"nodeType":"ArrayTypeName","src":"4792:9:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":1981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4788:48:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4755:81:6"},{"body":{"id":2004,"nodeType":"Block","src":"4903:59:6","statements":[{"expression":{"id":2002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1995,"name":"parentWallets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1972,"src":"4911:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1997,"indexExpression":{"id":1996,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1984,"src":"4925:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4911:16:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"id":1998,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"4930:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1999,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4939:13:6","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":853,"src":"4930:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2001,"indexExpression":{"id":2000,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1984,"src":"4953:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4930:25:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4911:44:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2003,"nodeType":"ExpressionStatement","src":"4911:44:6"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1987,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1984,"src":"4863:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":1988,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"4867:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1989,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4876:13:6","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":853,"src":"4867:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4890:6:6","memberName":"length","nodeType":"MemberAccess","src":"4867:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4863:33:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2005,"initializationExpression":{"assignments":[1984],"declarations":[{"constant":false,"id":1984,"mutability":"mutable","name":"i","nameLocation":"4856:1:6","nodeType":"VariableDeclaration","scope":2005,"src":"4848:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1983,"name":"uint256","nodeType":"ElementaryTypeName","src":"4848:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1986,"initialValue":{"hexValue":"30","id":1985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4860:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4848:13:6"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4898:3:6","subExpression":{"id":1992,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1984,"src":"4898:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1994,"nodeType":"ExpressionStatement","src":"4898:3:6"},"nodeType":"ForStatement","src":"4843:119:6"},{"expression":{"id":2013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2006,"name":"parentWallets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1972,"src":"4968:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2010,"indexExpression":{"expression":{"expression":{"id":2007,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"4982:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2008,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4991:13:6","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":853,"src":"4982:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5005:6:6","memberName":"length","nodeType":"MemberAccess","src":"4982:29:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4968:44:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2011,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5015:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5019:6:6","memberName":"sender","nodeType":"MemberAccess","src":"5015:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4968:57:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2014,"nodeType":"ExpressionStatement","src":"4968:57:6"},{"expression":{"id":2019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2015,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"5031:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5040:13:6","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":853,"src":"5031:22:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2018,"name":"parentWallets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1972,"src":"5056:13:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"5031:38:6","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2020,"nodeType":"ExpressionStatement","src":"5031:38:6"},{"assignments":[2022,null],"declarations":[{"constant":false,"id":2022,"mutability":"mutable","name":"isValid","nameLocation":"5082:7:6","nodeType":"VariableDeclaration","scope":2045,"src":"5077:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2021,"name":"bool","nodeType":"ElementaryTypeName","src":"5077:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2027,"initialValue":{"arguments":[{"id":2024,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"5114:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2025,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"5124:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2023,"name":"signatureValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1957,"src":"5094:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata) view returns (bool,bytes32)"}},"id":2026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5094:41:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"5076:59:6"},{"condition":{"id":2029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5145:8:6","subExpression":{"id":2028,"name":"isValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"5146:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2036,"nodeType":"IfStatement","src":"5141:81:6","trueBody":{"id":2035,"nodeType":"Block","src":"5155:67:6","statements":[{"errorCall":{"arguments":[{"id":2031,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"5194:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2032,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"5204:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2030,"name":"InvalidSapientSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"5170:23:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (struct Payload.Decoded memory,bytes memory) pure returns (error)"}},"id":2033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5170:45:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2034,"nodeType":"RevertStatement","src":"5163:52:6"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"31","id":2041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5251:1:6","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":2040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5243:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2039,"name":"uint256","nodeType":"ElementaryTypeName","src":"5243:7:6","typeDescriptions":{}}},"id":2042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5243:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5235:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2037,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5235:7:6","typeDescriptions":{}}},"id":2043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5235:19:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1967,"id":2044,"nodeType":"Return","src":"5228:26:6"}]},"baseFunctions":[3943],"documentation":{"id":1958,"nodeType":"StructuredDocumentation","src":"4534:24:6","text":"@inheritdoc ISapient"},"functionSelector":"13792a4a","implemented":true,"kind":"function","modifiers":[],"name":"recoverSapientSignature","nameLocation":"4570:23:6","parameters":{"id":1964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1961,"mutability":"mutable","name":"_payload","nameLocation":"4622:8:6","nodeType":"VariableDeclaration","scope":2046,"src":"4599:31:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1960,"nodeType":"UserDefinedTypeName","pathNode":{"id":1959,"name":"Payload.Decoded","nameLocations":["4599:7:6","4607:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"4599:15:6"},"referencedDeclaration":854,"src":"4599:15:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":1963,"mutability":"mutable","name":"_signature","nameLocation":"4651:10:6","nodeType":"VariableDeclaration","scope":2046,"src":"4636:25:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1962,"name":"bytes","nodeType":"ElementaryTypeName","src":"4636:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4593:72:6"},"returnParameters":{"id":1967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2046,"src":"4689:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1965,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4689:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4688:9:6"},"scope":2134,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2085,"nodeType":"FunctionDefinition","src":"5290:320:6","nodes":[],"body":{"id":2084,"nodeType":"Block","src":"5387:223:6","nodes":[],"statements":[{"assignments":[2060],"declarations":[{"constant":false,"id":2060,"mutability":"mutable","name":"payload","nameLocation":"5416:7:6","nodeType":"VariableDeclaration","scope":2084,"src":"5393:30:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":2059,"nodeType":"UserDefinedTypeName","pathNode":{"id":2058,"name":"Payload.Decoded","nameLocations":["5393:7:6","5401:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"5393:15:6"},"referencedDeclaration":854,"src":"5393:15:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"id":2065,"initialValue":{"arguments":[{"id":2063,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"5445:5:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2061,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"5426:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":2062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5434:10:6","memberName":"fromDigest","nodeType":"MemberAccess","referencedDeclaration":917,"src":"5426:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Decoded_$854_memory_ptr_$","typeString":"function (bytes32) pure returns (struct Payload.Decoded memory)"}},"id":2064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5426:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"nodeType":"VariableDeclarationStatement","src":"5393:58:6"},{"assignments":[2067,null],"declarations":[{"constant":false,"id":2067,"mutability":"mutable","name":"isValid","nameLocation":"5464:7:6","nodeType":"VariableDeclaration","scope":2084,"src":"5459:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2066,"name":"bool","nodeType":"ElementaryTypeName","src":"5459:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2072,"initialValue":{"arguments":[{"id":2069,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"5496:7:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2070,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"5505:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2068,"name":"signatureValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1957,"src":"5476:19:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata) view returns (bool,bytes32)"}},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5476:40:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"5458:58:6"},{"condition":{"id":2074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5526:8:6","subExpression":{"id":2073,"name":"isValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2067,"src":"5527:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2081,"nodeType":"IfStatement","src":"5522:45:6","trueBody":{"id":2080,"nodeType":"Block","src":"5536:31:6","statements":[{"expression":{"arguments":[{"hexValue":"30","id":2077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5558:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5551:6:6","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2075,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5551:6:6","typeDescriptions":{}}},"id":2078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5551:9:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2055,"id":2079,"nodeType":"Return","src":"5544:16:6"}]}},{"expression":{"id":2082,"name":"IERC1271_MAGIC_VALUE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"5580:25:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2055,"id":2083,"nodeType":"Return","src":"5573:32:6"}]},"baseFunctions":[3887],"documentation":{"id":2047,"nodeType":"StructuredDocumentation","src":"5263:24:6","text":"@inheritdoc IERC1271"},"functionSelector":"1626ba7e","implemented":true,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"5299:16:6","parameters":{"id":2052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2049,"mutability":"mutable","name":"_hash","nameLocation":"5324:5:6","nodeType":"VariableDeclaration","scope":2085,"src":"5316:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2048,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5316:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2051,"mutability":"mutable","name":"_signature","nameLocation":"5346:10:6","nodeType":"VariableDeclaration","scope":2085,"src":"5331:25:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2050,"name":"bytes","nodeType":"ElementaryTypeName","src":"5331:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5315:42:6"},"returnParameters":{"id":2055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2054,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2085,"src":"5379:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2053,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5379:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5378:8:6"},"scope":2134,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":2133,"nodeType":"FunctionDefinition","src":"5645:486:6","nodes":[],"body":{"id":2132,"nodeType":"Block","src":"5938:193:6","nodes":[],"statements":[{"expression":{"id":2124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2106,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2094,"src":"5945:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2107,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2096,"src":"5956:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2108,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"5964:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2109,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2102,"src":"5975:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2110,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2104,"src":"5987:6:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2111,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5944:50:6","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2114,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2089,"src":"6019:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2115,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2091,"src":"6029:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"expression":{"id":2116,"name":"BaseSig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3784,"src":"6041:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseSig_$3784_$","typeString":"type(library BaseSig)"}},"id":2117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6049:11:6","memberName":"RecoverMode","nodeType":"MemberAccess","referencedDeclaration":2235,"src":"6041:19:6","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2235_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":2118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6061:7:6","memberName":"Initial","nodeType":"MemberAccess","referencedDeclaration":2232,"src":"6041:27:6","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},{"arguments":[{"hexValue":"30","id":2121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6078:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6070:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2119,"name":"address","nodeType":"ElementaryTypeName","src":"6070:7:6","typeDescriptions":{}}},"id":2122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6070:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2112,"name":"BaseSig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3784,"src":"6003:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseSig_$3784_$","typeString":"type(library BaseSig)"}},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6011:7:6","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":2597,"src":"6003:15:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes_calldata_ptr_$_t_enum$_RecoverMode_$2235_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata,enum BaseSig.RecoverMode,address) view returns (uint256,uint256,bytes32,uint256,bytes32)"}},"id":2123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6003:78:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"src":"5944:137:6","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2125,"nodeType":"ExpressionStatement","src":"5944:137:6"},{"expression":{"id":2130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2126,"name":"isValidImage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2098,"src":"6087:12:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2128,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"6116:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2127,"name":"_isValidImage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"6102:13:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":2129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6102:24:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6087:39:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2131,"nodeType":"ExpressionStatement","src":"6087:39:6"}]},"baseFunctions":[3926],"documentation":{"id":2086,"nodeType":"StructuredDocumentation","src":"5614:28:6","text":"@inheritdoc IPartialAuth"},"functionSelector":"ad55366b","implemented":true,"kind":"function","modifiers":[],"name":"recoverPartialSignature","nameLocation":"5654:23:6","parameters":{"id":2092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2089,"mutability":"mutable","name":"_payload","nameLocation":"5706:8:6","nodeType":"VariableDeclaration","scope":2133,"src":"5683:31:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":2088,"nodeType":"UserDefinedTypeName","pathNode":{"id":2087,"name":"Payload.Decoded","nameLocations":["5683:7:6","5691:7:6"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"5683:15:6"},"referencedDeclaration":854,"src":"5683:15:6","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":2091,"mutability":"mutable","name":"_signature","nameLocation":"5735:10:6","nodeType":"VariableDeclaration","scope":2133,"src":"5720:25:6","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2090,"name":"bytes","nodeType":"ElementaryTypeName","src":"5720:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5677:72:6"},"returnParameters":{"id":2105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2094,"mutability":"mutable","name":"threshold","nameLocation":"5800:9:6","nodeType":"VariableDeclaration","scope":2133,"src":"5792:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2093,"name":"uint256","nodeType":"ElementaryTypeName","src":"5792:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2096,"mutability":"mutable","name":"weight","nameLocation":"5825:6:6","nodeType":"VariableDeclaration","scope":2133,"src":"5817:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2095,"name":"uint256","nodeType":"ElementaryTypeName","src":"5817:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2098,"mutability":"mutable","name":"isValidImage","nameLocation":"5844:12:6","nodeType":"VariableDeclaration","scope":2133,"src":"5839:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2097,"name":"bool","nodeType":"ElementaryTypeName","src":"5839:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2100,"mutability":"mutable","name":"imageHash","nameLocation":"5872:9:6","nodeType":"VariableDeclaration","scope":2133,"src":"5864:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2099,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5864:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2102,"mutability":"mutable","name":"checkpoint","nameLocation":"5897:10:6","nodeType":"VariableDeclaration","scope":2133,"src":"5889:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2101,"name":"uint256","nodeType":"ElementaryTypeName","src":"5889:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2104,"mutability":"mutable","name":"opHash","nameLocation":"5923:6:6","nodeType":"VariableDeclaration","scope":2133,"src":"5915:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2103,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5915:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5784:151:6"},"scope":2134,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":true,"baseContracts":[{"baseName":{"id":1646,"name":"IAuth","nameLocations":["663:5:6"],"nodeType":"IdentifierPath","referencedDeclaration":3827,"src":"663:5:6"},"id":1647,"nodeType":"InheritanceSpecifier","src":"663:5:6"},{"baseName":{"id":1648,"name":"IPartialAuth","nameLocations":["670:12:6"],"nodeType":"IdentifierPath","referencedDeclaration":3927,"src":"670:12:6"},"id":1649,"nodeType":"InheritanceSpecifier","src":"670:12:6"},{"baseName":{"id":1650,"name":"ISapient","nameLocations":["684:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":3944,"src":"684:8:6"},"id":1651,"nodeType":"InheritanceSpecifier","src":"684:8:6"},{"baseName":{"id":1652,"name":"IERC1271","nameLocations":["694:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":3888,"src":"694:8:6"},"id":1653,"nodeType":"InheritanceSpecifier","src":"694:8:6"},{"baseName":{"id":1654,"name":"SelfAuth","nameLocations":["704:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":3811,"src":"704:8:6"},"id":1655,"nodeType":"InheritanceSpecifier","src":"704:8:6"}],"canonicalName":"BaseAuth","contractDependencies":[],"contractKind":"contract","documentation":{"id":1645,"nodeType":"StructuredDocumentation","src":"522:111:6","text":"@title BaseAuth\n @author Agustin Aguilar, Michael Standen\n @notice Base contract for the auth module"},"fullyImplemented":false,"linearizedBaseContracts":[2134,3811,3888,3944,3927,3827],"name":"BaseAuth","nameLocation":"651:8:6","scope":2135,"usedErrors":[725,1670,1677,1684,1693,2201,2210,2217,2223,2228,2231,3792],"usedEvents":[1702]}],"license":"Apache-2.0"}},"src/modules/auth/BaseSig.sol":{"id":7,"ast":{"absolutePath":"src/modules/auth/BaseSig.sol","id":3785,"exportedSymbols":{"BaseSig":[3784],"ICheckpointer":[3848],"IERC1271":[3888],"IERC1271_MAGIC_VALUE_HASH":[3873],"ISapient":[3944],"ISapientCompact":[3956],"LibBytes":[4160],"LibOptim":[4214],"Payload":[1488],"Snapshot":[3835]},"nodeType":"SourceUnit","src":"39:19372:7","nodes":[{"id":2136,"nodeType":"PragmaDirective","src":"39:24:7","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":2138,"nodeType":"ImportDirective","src":"65:52:7","nodes":[],"absolutePath":"src/utils/LibBytes.sol","file":"../../utils/LibBytes.sol","nameLocation":"-1:-1:-1","scope":3785,"sourceUnit":4161,"symbolAliases":[{"foreign":{"id":2137,"name":"LibBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4160,"src":"74:8:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2140,"nodeType":"ImportDirective","src":"118:52:7","nodes":[],"absolutePath":"src/utils/LibOptim.sol","file":"../../utils/LibOptim.sol","nameLocation":"-1:-1:-1","scope":3785,"sourceUnit":4215,"symbolAliases":[{"foreign":{"id":2139,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"127:8:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2142,"nodeType":"ImportDirective","src":"171:41:7","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"../Payload.sol","nameLocation":"-1:-1:-1","scope":3785,"sourceUnit":1489,"symbolAliases":[{"foreign":{"id":2141,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"180:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2145,"nodeType":"ImportDirective","src":"214:74:7","nodes":[],"absolutePath":"src/modules/interfaces/ICheckpointer.sol","file":"../interfaces/ICheckpointer.sol","nameLocation":"-1:-1:-1","scope":3785,"sourceUnit":3849,"symbolAliases":[{"foreign":{"id":2143,"name":"ICheckpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3848,"src":"223:13:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2144,"name":"Snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"238:8:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2148,"nodeType":"ImportDirective","src":"289:81:7","nodes":[],"absolutePath":"src/modules/interfaces/IERC1271.sol","file":"../interfaces/IERC1271.sol","nameLocation":"-1:-1:-1","scope":3785,"sourceUnit":3901,"symbolAliases":[{"foreign":{"id":2146,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"298:8:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2147,"name":"IERC1271_MAGIC_VALUE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"308:25:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2151,"nodeType":"ImportDirective","src":"371:71:7","nodes":[],"absolutePath":"src/modules/interfaces/ISapient.sol","file":"../interfaces/ISapient.sol","nameLocation":"-1:-1:-1","scope":3785,"sourceUnit":3957,"symbolAliases":[{"foreign":{"id":2149,"name":"ISapient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"380:8:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2150,"name":"ISapientCompact","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"390:15:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2154,"nodeType":"UsingForDirective","src":"444:25:7","nodes":[],"global":false,"libraryName":{"id":2152,"name":"LibBytes","nameLocations":["450:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":4160,"src":"450:8:7"},"typeName":{"id":2153,"name":"bytes","nodeType":"ElementaryTypeName","src":"463:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"id":2158,"nodeType":"UsingForDirective","src":"470:34:7","nodes":[],"global":false,"libraryName":{"id":2155,"name":"Payload","nameLocations":["476:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":1488,"src":"476:7:7"},"typeName":{"id":2157,"nodeType":"UserDefinedTypeName","pathNode":{"id":2156,"name":"Payload.Decoded","nameLocations":["488:7:7","496:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"488:15:7"},"referencedDeclaration":854,"src":"488:15:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}}},{"id":3784,"nodeType":"ContractDefinition","src":"671:18739:7","nodes":[{"id":2162,"nodeType":"VariableDeclaration","src":"692:49:7","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SIGNATURE_HASH","nameLocation":"718:19:7","scope":3784,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2160,"name":"uint256","nodeType":"ElementaryTypeName","src":"692:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":2161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"740:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"id":2165,"nodeType":"VariableDeclaration","src":"745:42:7","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_ADDRESS","nameLocation":"771:12:7","scope":3784,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2163,"name":"uint256","nodeType":"ElementaryTypeName","src":"745:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":2164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"786:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"id":2168,"nodeType":"VariableDeclaration","src":"791:52:7","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SIGNATURE_ERC1271","nameLocation":"817:22:7","scope":3784,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2166,"name":"uint256","nodeType":"ElementaryTypeName","src":"791:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":2167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"842:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"id":2171,"nodeType":"VariableDeclaration","src":"847:39:7","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_NODE","nameLocation":"873:9:7","scope":3784,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2169,"name":"uint256","nodeType":"ElementaryTypeName","src":"847:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":2170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"885:1:7","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"id":2174,"nodeType":"VariableDeclaration","src":"890:41:7","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_BRANCH","nameLocation":"916:11:7","scope":3784,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2172,"name":"uint256","nodeType":"ElementaryTypeName","src":"890:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"34","id":2173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"930:1:7","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"id":2177,"nodeType":"VariableDeclaration","src":"935:44:7","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SUBDIGEST","nameLocation":"961:14:7","scope":3784,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2175,"name":"uint256","nodeType":"ElementaryTypeName","src":"935:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":2176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"978:1:7","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"id":2180,"nodeType":"VariableDeclaration","src":"983:41:7","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_NESTED","nameLocation":"1009:11:7","scope":3784,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2178,"name":"uint256","nodeType":"ElementaryTypeName","src":"983:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"36","id":2179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1023:1:7","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"visibility":"internal"},{"id":2183,"nodeType":"VariableDeclaration","src":"1028:53:7","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SIGNATURE_ETH_SIGN","nameLocation":"1054:23:7","scope":3784,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2181,"name":"uint256","nodeType":"ElementaryTypeName","src":"1028:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"37","id":2182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1080:1:7","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"visibility":"internal"},{"id":2186,"nodeType":"VariableDeclaration","src":"1085:66:7","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SIGNATURE_ANY_ADDRESS_SUBDIGEST","nameLocation":"1111:36:7","scope":3784,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2184,"name":"uint256","nodeType":"ElementaryTypeName","src":"1085:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":2185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1150:1:7","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"internal"},{"id":2189,"nodeType":"VariableDeclaration","src":"1155:52:7","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SIGNATURE_SAPIENT","nameLocation":"1181:22:7","scope":3784,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2187,"name":"uint256","nodeType":"ElementaryTypeName","src":"1155:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39","id":2188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1206:1:7","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"visibility":"internal"},{"id":2192,"nodeType":"VariableDeclaration","src":"1211:61:7","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SIGNATURE_SAPIENT_COMPACT","nameLocation":"1237:30:7","scope":3784,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2190,"name":"uint256","nodeType":"ElementaryTypeName","src":"1211:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130","id":2191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1270:2:7","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"visibility":"internal"},{"id":2201,"nodeType":"ErrorDefinition","src":"1355:87:7","nodes":[],"documentation":{"id":2193,"nodeType":"StructuredDocumentation","src":"1277:75:7","text":"@notice Error thrown when the weight is too low for a chained signature"},"errorSelector":"b006aba0","name":"LowWeightChainedSignature","nameLocation":"1361:25:7","parameters":{"id":2200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2195,"mutability":"mutable","name":"_signature","nameLocation":"1393:10:7","nodeType":"VariableDeclaration","scope":2201,"src":"1387:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2194,"name":"bytes","nodeType":"ElementaryTypeName","src":"1387:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2197,"mutability":"mutable","name":"_threshold","nameLocation":"1413:10:7","nodeType":"VariableDeclaration","scope":2201,"src":"1405:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2196,"name":"uint256","nodeType":"ElementaryTypeName","src":"1405:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2199,"mutability":"mutable","name":"_weight","nameLocation":"1433:7:7","nodeType":"VariableDeclaration","scope":2201,"src":"1425:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2198,"name":"uint256","nodeType":"ElementaryTypeName","src":"1425:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1386:55:7"}},{"id":2210,"nodeType":"ErrorDefinition","src":"1510:82:7","nodes":[],"documentation":{"id":2202,"nodeType":"StructuredDocumentation","src":"1445:62:7","text":"@notice Error thrown when the ERC1271 signature is invalid"},"errorSelector":"b2fed7ae","name":"InvalidERC1271Signature","nameLocation":"1516:23:7","parameters":{"id":2209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2204,"mutability":"mutable","name":"_opHash","nameLocation":"1548:7:7","nodeType":"VariableDeclaration","scope":2210,"src":"1540:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2203,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1540:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2206,"mutability":"mutable","name":"_signer","nameLocation":"1565:7:7","nodeType":"VariableDeclaration","scope":2210,"src":"1557:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2205,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2208,"mutability":"mutable","name":"_signature","nameLocation":"1580:10:7","nodeType":"VariableDeclaration","scope":2210,"src":"1574:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2207,"name":"bytes","nodeType":"ElementaryTypeName","src":"1574:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1539:52:7"}},{"id":2217,"nodeType":"ErrorDefinition","src":"1657:80:7","nodes":[],"documentation":{"id":2211,"nodeType":"StructuredDocumentation","src":"1595:59:7","text":"@notice Error thrown when the checkpoint order is wrong"},"errorSelector":"37daf62b","name":"WrongChainedCheckpointOrder","nameLocation":"1663:27:7","parameters":{"id":2216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2213,"mutability":"mutable","name":"_nextCheckpoint","nameLocation":"1699:15:7","nodeType":"VariableDeclaration","scope":2217,"src":"1691:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2212,"name":"uint256","nodeType":"ElementaryTypeName","src":"1691:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2215,"mutability":"mutable","name":"_checkpoint","nameLocation":"1724:11:7","nodeType":"VariableDeclaration","scope":2217,"src":"1716:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2214,"name":"uint256","nodeType":"ElementaryTypeName","src":"1716:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1690:46:7"}},{"id":2223,"nodeType":"ErrorDefinition","src":"1795:41:7","nodes":[],"documentation":{"id":2218,"nodeType":"StructuredDocumentation","src":"1740:52:7","text":"@notice Error thrown when the snapshot is unused"},"errorSelector":"ccbb534f","name":"UnusedSnapshot","nameLocation":"1801:14:7","parameters":{"id":2222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2221,"mutability":"mutable","name":"_snapshot","nameLocation":"1825:9:7","nodeType":"VariableDeclaration","scope":2223,"src":"1816:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot"},"typeName":{"id":2220,"nodeType":"UserDefinedTypeName","pathNode":{"id":2219,"name":"Snapshot","nameLocations":["1816:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":3835,"src":"1816:8:7"},"referencedDeclaration":3835,"src":"1816:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_storage_ptr","typeString":"struct Snapshot"}},"visibility":"internal"}],"src":"1815:20:7"}},{"id":2228,"nodeType":"ErrorDefinition","src":"1901:42:7","nodes":[],"documentation":{"id":2224,"nodeType":"StructuredDocumentation","src":"1839:59:7","text":"@notice Error thrown when the signature flag is invalid"},"errorSelector":"b2505f7c","name":"InvalidSignatureFlag","nameLocation":"1907:20:7","parameters":{"id":2227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2226,"mutability":"mutable","name":"_flag","nameLocation":"1936:5:7","nodeType":"VariableDeclaration","scope":2228,"src":"1928:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2225,"name":"uint256","nodeType":"ElementaryTypeName","src":"1928:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1927:15:7"}},{"id":2231,"nodeType":"ErrorDefinition","src":"2041:49:7","nodes":[],"documentation":{"id":2229,"nodeType":"StructuredDocumentation","src":"1946:92:7","text":"@notice Error thrown when a chained signature is nested inside another chained signature"},"errorSelector":"fdf132ad","name":"ChainedSignatureNestedInChainedSignature","nameLocation":"2047:40:7","parameters":{"id":2230,"nodeType":"ParameterList","parameters":[],"src":"2087:2:7"}},{"id":2235,"nodeType":"EnumDefinition","src":"2094:85:7","nodes":[],"canonicalName":"BaseSig.RecoverMode","members":[{"id":2232,"name":"Initial","nameLocation":"2117:7:7","nodeType":"EnumValue","src":"2117:7:7"},{"id":2233,"name":"UseProvidedCheckpointer","nameLocation":"2130:23:7","nodeType":"EnumValue","src":"2130:23:7"},{"id":2234,"name":"SkipSnapshotRead","nameLocation":"2159:16:7","nodeType":"EnumValue","src":"2159:16:7"}],"name":"RecoverMode","nameLocation":"2099:11:7"},{"id":2254,"nodeType":"FunctionDefinition","src":"2183:181:7","nodes":[],"body":{"id":2253,"nodeType":"Block","src":"2281:83:7","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"53657175656e6365207369676e65723a0a","id":2247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2321:20:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_c50c8e59dc73336f9600d21716f2eb311d05aee77dc581a5a8024234f75649e5","typeString":"literal_string hex\"53657175656e6365207369676e65723a0a\""},"value":"Sequence signer:\n"},{"id":2248,"name":"_addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2237,"src":"2343:5:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2249,"name":"_weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2239,"src":"2350:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c50c8e59dc73336f9600d21716f2eb311d05aee77dc581a5a8024234f75649e5","typeString":"literal_string hex\"53657175656e6365207369676e65723a0a\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2245,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2304:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2308:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"2304:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2304:54:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2244,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2294:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2294:65:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2243,"id":2252,"nodeType":"Return","src":"2287:72:7"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_leafForAddressAndWeight","nameLocation":"2192:24:7","parameters":{"id":2240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2237,"mutability":"mutable","name":"_addr","nameLocation":"2225:5:7","nodeType":"VariableDeclaration","scope":2254,"src":"2217:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2236,"name":"address","nodeType":"ElementaryTypeName","src":"2217:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2239,"mutability":"mutable","name":"_weight","nameLocation":"2240:7:7","nodeType":"VariableDeclaration","scope":2254,"src":"2232:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2238,"name":"uint256","nodeType":"ElementaryTypeName","src":"2232:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2216:32:7"},"returnParameters":{"id":2243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2242,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2254,"src":"2272:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2241,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2272:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2271:9:7"},"scope":3784,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2276,"nodeType":"FunctionDefinition","src":"2368:210:7","nodes":[],"body":{"id":2275,"nodeType":"Block","src":"2476:102:7","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"53657175656e6365206e657374656420636f6e6669673a0a","id":2268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2516:27:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_58d1832f15932b40f8da147bd99ac98efab990f25a786a2229b05ee5f5be41a7","typeString":"literal_string hex\"53657175656e6365206e657374656420636f6e6669673a0a\""},"value":"Sequence nested config:\n"},{"id":2269,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"2545:5:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2270,"name":"_threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"2552:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2271,"name":"_weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"2564:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_58d1832f15932b40f8da147bd99ac98efab990f25a786a2229b05ee5f5be41a7","typeString":"literal_string hex\"53657175656e6365206e657374656420636f6e6669673a0a\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2266,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2499:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2503:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"2499:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2499:73:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2265,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2489:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2489:84:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2264,"id":2274,"nodeType":"Return","src":"2482:91:7"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_leafForNested","nameLocation":"2377:14:7","parameters":{"id":2261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2256,"mutability":"mutable","name":"_node","nameLocation":"2400:5:7","nodeType":"VariableDeclaration","scope":2276,"src":"2392:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2255,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2392:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2258,"mutability":"mutable","name":"_threshold","nameLocation":"2415:10:7","nodeType":"VariableDeclaration","scope":2276,"src":"2407:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2257,"name":"uint256","nodeType":"ElementaryTypeName","src":"2407:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2260,"mutability":"mutable","name":"_weight","nameLocation":"2435:7:7","nodeType":"VariableDeclaration","scope":2276,"src":"2427:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2259,"name":"uint256","nodeType":"ElementaryTypeName","src":"2427:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2391:52:7"},"returnParameters":{"id":2264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2276,"src":"2467:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2262,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2467:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2466:9:7"},"scope":3784,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2298,"nodeType":"FunctionDefinition","src":"2582:212:7","nodes":[],"body":{"id":2297,"nodeType":"Block","src":"2691:103:7","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"53657175656e63652073617069656e7420636f6e6669673a0a","id":2290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2731:28:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc8102a6fc61346ec8cb26d526073734fc790a2138b3a629a10d5d59e5e0474d","typeString":"literal_string hex\"53657175656e63652073617069656e7420636f6e6669673a0a\""},"value":"Sequence sapient config:\n"},{"id":2291,"name":"_addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2278,"src":"2761:5:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2292,"name":"_weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2280,"src":"2768:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2293,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2282,"src":"2777:10:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_cc8102a6fc61346ec8cb26d526073734fc790a2138b3a629a10d5d59e5e0474d","typeString":"literal_string hex\"53657175656e63652073617069656e7420636f6e6669673a0a\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2288,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2714:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2718:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"2714:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2714:74:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2287,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2704:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2704:85:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2286,"id":2296,"nodeType":"Return","src":"2697:92:7"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_leafForSapient","nameLocation":"2591:15:7","parameters":{"id":2283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2278,"mutability":"mutable","name":"_addr","nameLocation":"2615:5:7","nodeType":"VariableDeclaration","scope":2298,"src":"2607:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2277,"name":"address","nodeType":"ElementaryTypeName","src":"2607:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2280,"mutability":"mutable","name":"_weight","nameLocation":"2630:7:7","nodeType":"VariableDeclaration","scope":2298,"src":"2622:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2279,"name":"uint256","nodeType":"ElementaryTypeName","src":"2622:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2282,"mutability":"mutable","name":"_imageHash","nameLocation":"2647:10:7","nodeType":"VariableDeclaration","scope":2298,"src":"2639:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2281,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2639:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2606:52:7"},"returnParameters":{"id":2286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2298,"src":"2682:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2284,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2682:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2681:9:7"},"scope":3784,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2314,"nodeType":"FunctionDefinition","src":"2798:182:7","nodes":[],"body":{"id":2313,"nodeType":"Block","src":"2894:86:7","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"53657175656e636520737461746963206469676573743a0a","id":2308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2934:27:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_583557e68bca91e5400591dbc9ae31043113c95e3cd985463ae532f51d706f8c","typeString":"literal_string hex\"53657175656e636520737461746963206469676573743a0a\""},"value":"Sequence static digest:\n"},{"id":2309,"name":"_subdigest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"2963:10:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_583557e68bca91e5400591dbc9ae31043113c95e3cd985463ae532f51d706f8c","typeString":"literal_string hex\"53657175656e636520737461746963206469676573743a0a\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2306,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2917:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2921:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"2917:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2917:57:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2305,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2907:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2907:68:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2304,"id":2312,"nodeType":"Return","src":"2900:75:7"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_leafForHardcodedSubdigest","nameLocation":"2807:26:7","parameters":{"id":2301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2300,"mutability":"mutable","name":"_subdigest","nameLocation":"2847:10:7","nodeType":"VariableDeclaration","scope":2314,"src":"2839:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2299,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2839:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2833:28:7"},"returnParameters":{"id":2304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2303,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2314,"src":"2885:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2302,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2885:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2884:9:7"},"scope":3784,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2330,"nodeType":"FunctionDefinition","src":"2984:211:7","nodes":[],"body":{"id":2329,"nodeType":"Block","src":"3091:104:7","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"53657175656e636520616e792061646472657373207375626469676573743a0a","id":2324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3131:35:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_2de18b01fcf9a040f99bbca33e0663010b7bf255f29e5c6c28d4deac89cc6608","typeString":"literal_string hex\"53657175656e636520616e792061646472657373207375626469676573743a0a\""},"value":"Sequence any address subdigest:\n"},{"id":2325,"name":"_anyAddressSubdigest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2316,"src":"3168:20:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2de18b01fcf9a040f99bbca33e0663010b7bf255f29e5c6c28d4deac89cc6608","typeString":"literal_string hex\"53657175656e636520616e792061646472657373207375626469676573743a0a\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2322,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3114:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3118:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"3114:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3114:75:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2321,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3104:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3104:86:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2320,"id":2328,"nodeType":"Return","src":"3097:93:7"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_leafForAnyAddressSubdigest","nameLocation":"2993:27:7","parameters":{"id":2317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2316,"mutability":"mutable","name":"_anyAddressSubdigest","nameLocation":"3034:20:7","nodeType":"VariableDeclaration","scope":2330,"src":"3026:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2315,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3026:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3020:38:7"},"returnParameters":{"id":2320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2319,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2330,"src":"3082:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2318,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3082:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3081:9:7"},"scope":3784,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2597,"nodeType":"FunctionDefinition","src":"3199:3386:7","nodes":[],"body":{"id":2596,"nodeType":"Block","src":"3458:3127:7","nodes":[],"statements":[{"assignments":[2354,2356],"declarations":[{"constant":false,"id":2354,"mutability":"mutable","name":"signatureFlag","nameLocation":"3513:13:7","nodeType":"VariableDeclaration","scope":2596,"src":"3505:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2353,"name":"uint256","nodeType":"ElementaryTypeName","src":"3505:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2356,"mutability":"mutable","name":"rindex","nameLocation":"3536:6:7","nodeType":"VariableDeclaration","scope":2596,"src":"3528:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2355,"name":"uint256","nodeType":"ElementaryTypeName","src":"3528:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2360,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2357,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"3546:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3557:14:7","memberName":"readFirstUint8","nodeType":"MemberAccess","referencedDeclaration":3970,"src":"3546:25:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint8,uint256)"}},"id":2359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3546:27:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3504:69:7"},{"assignments":[2363],"declarations":[{"constant":false,"id":2363,"mutability":"mutable","name":"snapshot","nameLocation":"4015:8:7","nodeType":"VariableDeclaration","scope":2596,"src":"3999:24:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot"},"typeName":{"id":2362,"nodeType":"UserDefinedTypeName","pathNode":{"id":2361,"name":"Snapshot","nameLocations":["3999:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":3835,"src":"3999:8:7"},"referencedDeclaration":3835,"src":"3999:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_storage_ptr","typeString":"struct Snapshot"}},"visibility":"internal"}],"id":2364,"nodeType":"VariableDeclarationStatement","src":"3999:24:7"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"},"id":2368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2365,"name":"_recoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"4200:12:7","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2366,"name":"RecoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"4216:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2235_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":2367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4228:23:7","memberName":"UseProvidedCheckpointer","nodeType":"MemberAccess","referencedDeclaration":2233,"src":"4216:35:7","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},"src":"4200:51:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2437,"nodeType":"IfStatement","src":"4196:870:7","trueBody":{"id":2436,"nodeType":"Block","src":"4253:813:7","statements":[{"expression":{"id":2374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2369,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"4362:13:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4386:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4378:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2370,"name":"address","nodeType":"ElementaryTypeName","src":"4378:7:7","typeDescriptions":{}}},"id":2373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4378:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4362:26:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2375,"nodeType":"ExpressionStatement","src":"4362:26:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2376,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2354,"src":"4401:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783430","id":2377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4417:4:7","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"src":"4401:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783430","id":2379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4425:4:7","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"src":"4401:28:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2435,"nodeType":"IfStatement","src":"4397:663:7","trueBody":{"id":2434,"nodeType":"Block","src":"4431:629:7","statements":[{"expression":{"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2381,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"4442:13:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2382,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"4457:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2383,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4441:23:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2386,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"4490:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2384,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"4467:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4478:11:7","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":4102,"src":"4467:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":2387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4467:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"4441:56:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2389,"nodeType":"ExpressionStatement","src":"4441:56:7"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"},"id":2393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2390,"name":"_recoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"4512:12:7","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2391,"name":"RecoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"4528:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2235_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4540:16:7","memberName":"SkipSnapshotRead","nodeType":"MemberAccess","referencedDeclaration":2234,"src":"4528:28:7","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},"src":"4512:44:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2433,"nodeType":"IfStatement","src":"4508:544:7","trueBody":{"id":2432,"nodeType":"Block","src":"4558:494:7","statements":[{"assignments":[2395],"declarations":[{"constant":false,"id":2395,"mutability":"mutable","name":"checkpointerDataSize","nameLocation":"4641:20:7","nodeType":"VariableDeclaration","scope":2432,"src":"4633:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2394,"name":"uint256","nodeType":"ElementaryTypeName","src":"4633:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2396,"nodeType":"VariableDeclarationStatement","src":"4633:28:7"},{"expression":{"id":2404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2397,"name":"checkpointerDataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2395,"src":"4674:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2398,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"4696:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2399,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4673:30:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2402,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"4728:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2400,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"4706:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4717:10:7","memberName":"readUint24","nodeType":"MemberAccess","referencedDeclaration":4009,"src":"4706:21:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint24,uint256)"}},"id":2403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4706:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint24_$_t_uint256_$","typeString":"tuple(uint24,uint256)"}},"src":"4673:62:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2405,"nodeType":"ExpressionStatement","src":"4673:62:7"},{"assignments":[2407],"declarations":[{"constant":false,"id":2407,"mutability":"mutable","name":"checkpointerData","nameLocation":"4801:16:7","nodeType":"VariableDeclaration","scope":2432,"src":"4788:29:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2406,"name":"bytes","nodeType":"ElementaryTypeName","src":"4788:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2414,"initialValue":{"baseExpression":{"id":2408,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"4820:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2410,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"4838:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2411,"name":"checkpointerDataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2395,"src":"4847:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4838:29:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"4820:48:7","startExpression":{"id":2409,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"4831:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"nodeType":"VariableDeclarationStatement","src":"4788:80:7"},{"expression":{"id":2426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2415,"name":"snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"4914:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":2422,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4974:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_BaseSig_$3784","typeString":"library BaseSig"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseSig_$3784","typeString":"library BaseSig"}],"id":2421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4966:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2420,"name":"address","nodeType":"ElementaryTypeName","src":"4966:7:7","typeDescriptions":{}}},"id":2423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4966:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2424,"name":"checkpointerData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2407,"src":"4981:16:7","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":{"arguments":[{"id":2417,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"4939:13:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2416,"name":"ICheckpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3848,"src":"4925:13:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICheckpointer_$3848_$","typeString":"type(contract ICheckpointer)"}},"id":2418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4925:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICheckpointer_$3848","typeString":"contract ICheckpointer"}},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4954:11:7","memberName":"snapshotFor","nodeType":"MemberAccess","referencedDeclaration":3847,"src":"4925:40:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_struct$_Snapshot_$3835_memory_ptr_$","typeString":"function (address,bytes memory) view external returns (struct Snapshot memory)"}},"id":2425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4925:73:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}},"src":"4914:84:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}},"id":2427,"nodeType":"ExpressionStatement","src":"4914:84:7"},{"expression":{"id":2430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2428,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"5011:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2429,"name":"checkpointerDataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2395,"src":"5021:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5011:30:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2431,"nodeType":"ExpressionStatement","src":"5011:30:7"}]}}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2438,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2354,"src":"5139:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783031","id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5155:4:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"5139:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783031","id":2441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5163:4:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"5139:28:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2462,"nodeType":"IfStatement","src":"5135:242:7","trueBody":{"id":2461,"nodeType":"Block","src":"5169:208:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"},"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2443,"name":"_recoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2338,"src":"5181:12:7","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2444,"name":"RecoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"5197:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2235_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":2445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5209:7:7","memberName":"Initial","nodeType":"MemberAccess","referencedDeclaration":2232,"src":"5197:19:7","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},"src":"5181:35:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2451,"nodeType":"IfStatement","src":"5177:109:7","trueBody":{"id":2450,"nodeType":"Block","src":"5218:68:7","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2447,"name":"ChainedSignatureNestedInChainedSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2231,"src":"5235:40:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5235:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2449,"nodeType":"RevertStatement","src":"5228:49:7"}]}},{"expression":{"arguments":[{"id":2453,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"5315:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2454,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"5325:13:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2455,"name":"snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"5340:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}},{"baseExpression":{"id":2456,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"5350:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"5350:19:7","startExpression":{"id":2457,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"5361:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":2452,"name":"recoverChained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"5300:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$_t_address_$_t_struct$_Snapshot_$3835_memory_ptr_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,address,struct Snapshot memory,bytes calldata) view returns (uint256,uint256,bytes32,uint256,bytes32)"}},"id":2459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5300:70:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"functionReturnParameters":2352,"id":2460,"nodeType":"Return","src":"5293:77:7"}]}},{"expression":{"id":2471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2463,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"5448:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2465,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5457:9:7","memberName":"noChainId","nodeType":"MemberAccess","referencedDeclaration":836,"src":"5448:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2466,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2354,"src":"5469:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783032","id":2467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5485:4:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"5469:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783032","id":2469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5493:4:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"5469:28:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5448:49:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2472,"nodeType":"ExpressionStatement","src":"5448:49:7"},{"id":2492,"nodeType":"Block","src":"5504:209:7","statements":[{"assignments":[2474],"declarations":[{"constant":false,"id":2474,"mutability":"mutable","name":"checkpointSize","nameLocation":"5587:14:7","nodeType":"VariableDeclaration","scope":2492,"src":"5579:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2473,"name":"uint256","nodeType":"ElementaryTypeName","src":"5579:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2481,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2475,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2354,"src":"5605:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783163","id":2476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5621:4:7","typeDescriptions":{"typeIdentifier":"t_rational_28_by_1","typeString":"int_const 28"},"value":"0x1c"},"src":"5605:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2478,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5604:22:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":2479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5630:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5604:27:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5579:52:7"},{"expression":{"id":2490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2482,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"5640:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2483,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"5652:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2484,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5639:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2487,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"5683:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2488,"name":"checkpointSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"5691:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2485,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"5662:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5673:9:7","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4063,"src":"5662:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5662:44:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5639:67:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2491,"nodeType":"ExpressionStatement","src":"5639:67:7"}]},{"id":2515,"nodeType":"Block","src":"5777:145:7","statements":[{"assignments":[2494],"declarations":[{"constant":false,"id":2494,"mutability":"mutable","name":"thresholdSize","nameLocation":"5793:13:7","nodeType":"VariableDeclaration","scope":2515,"src":"5785:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2493,"name":"uint256","nodeType":"ElementaryTypeName","src":"5785:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2504,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2495,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2354,"src":"5811:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":2496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5827:4:7","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5811:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2498,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5810:22:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"35","id":2499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5836:1:7","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"5810:27:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2501,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5809:29:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5841:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5809:33:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5785:57:7"},{"expression":{"id":2513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2505,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"5851:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2506,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"5862:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2507,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5850:19:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2510,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"5893:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2511,"name":"thresholdSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"5901:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2508,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"5872:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5883:9:7","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4063,"src":"5872:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5872:43:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5850:65:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2514,"nodeType":"ExpressionStatement","src":"5850:65:7"}]},{"expression":{"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2516,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"5952:6:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2517,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"5961:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5970:4:7","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":1453,"src":"5961:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Decoded_$854_memory_ptr_$","typeString":"function (struct Payload.Decoded memory) view returns (bytes32)"}},"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5961:15:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5952:24:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2521,"nodeType":"ExpressionStatement","src":"5952:24:7"},{"expression":{"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2522,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2345,"src":"5983:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2523,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"5991:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2524,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5982:19:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2526,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"6018:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2527,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"6028:6:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":2528,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"6036:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6036:19:7","startExpression":{"id":2529,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"6047:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":2525,"name":"recoverBranch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3783,"src":"6004:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes32,bytes calldata) view returns (uint256,bytes32)"}},"id":2531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6004:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,bytes32)"}},"src":"5982:74:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2533,"nodeType":"ExpressionStatement","src":"5982:74:7"},{"expression":{"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2534,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"6063:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2537,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"6095:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":2540,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"6114:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6106:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2538,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6106:7:7","typeDescriptions":{}}},"id":2541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6106:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2535,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"6075:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":2536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6084:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"6075:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":2542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6075:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6063:62:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2544,"nodeType":"ExpressionStatement","src":"6063:62:7"},{"expression":{"id":2554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2545,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"6131:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2548,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"6163:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":2551,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"6182:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6174:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2549,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6174:7:7","typeDescriptions":{}}},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2546,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"6143:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6152:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"6143:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6143:51:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6131:63:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2555,"nodeType":"ExpressionStatement","src":"6131:63:7"},{"expression":{"id":2571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2556,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"6200:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2559,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"6232:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"arguments":[{"id":2566,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"6267:13:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6259:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2564,"name":"uint160","nodeType":"ElementaryTypeName","src":"6259:7:7","typeDescriptions":{}}},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6259:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2563,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6251:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2562,"name":"uint256","nodeType":"ElementaryTypeName","src":"6251:7:7","typeDescriptions":{}}},"id":2568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6251:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6243:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2560,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6243:7:7","typeDescriptions":{}}},"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6243:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2557,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"6212:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":2558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6221:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"6212:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6212:72:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6200:84:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2572,"nodeType":"ExpressionStatement","src":"6200:84:7"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2573,"name":"snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"6429:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}},"id":2574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6438:9:7","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":3832,"src":"6429:18:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6459:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6451:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2575,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6451:7:7","typeDescriptions":{}}},"id":2578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6451:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6429:32:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2580,"name":"snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"6465:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}},"id":2581,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6474:9:7","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":3832,"src":"6465:18:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2582,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"6487:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6465:31:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6429:67:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2585,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"6500:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":2586,"name":"snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"6514:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}},"id":2587,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6523:10:7","memberName":"checkpoint","nodeType":"MemberAccess","referencedDeclaration":3834,"src":"6514:19:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6500:33:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6429:104:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2595,"nodeType":"IfStatement","src":"6425:156:7","trueBody":{"id":2594,"nodeType":"Block","src":"6535:46:7","statements":[{"errorCall":{"arguments":[{"id":2591,"name":"snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"6565:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}],"id":2590,"name":"UnusedSnapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"6550:14:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Snapshot_$3835_memory_ptr_$returns$_t_error_$","typeString":"function (struct Snapshot memory) pure returns (error)"}},"id":2592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6550:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2593,"nodeType":"RevertStatement","src":"6543:31:7"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3208:7:7","parameters":{"id":2341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2333,"mutability":"mutable","name":"_payload","nameLocation":"3244:8:7","nodeType":"VariableDeclaration","scope":2597,"src":"3221:31:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":2332,"nodeType":"UserDefinedTypeName","pathNode":{"id":2331,"name":"Payload.Decoded","nameLocations":["3221:7:7","3229:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"3221:15:7"},"referencedDeclaration":854,"src":"3221:15:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":2335,"mutability":"mutable","name":"_signature","nameLocation":"3273:10:7","nodeType":"VariableDeclaration","scope":2597,"src":"3258:25:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2334,"name":"bytes","nodeType":"ElementaryTypeName","src":"3258:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2338,"mutability":"mutable","name":"_recoverMode","nameLocation":"3301:12:7","nodeType":"VariableDeclaration","scope":2597,"src":"3289:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"},"typeName":{"id":2337,"nodeType":"UserDefinedTypeName","pathNode":{"id":2336,"name":"RecoverMode","nameLocations":["3289:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":2235,"src":"3289:11:7"},"referencedDeclaration":2235,"src":"3289:11:7","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},"visibility":"internal"},{"constant":false,"id":2340,"mutability":"mutable","name":"_checkpointer","nameLocation":"3327:13:7","nodeType":"VariableDeclaration","scope":2597,"src":"3319:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2339,"name":"address","nodeType":"ElementaryTypeName","src":"3319:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3215:129:7"},"returnParameters":{"id":2352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2343,"mutability":"mutable","name":"threshold","nameLocation":"3376:9:7","nodeType":"VariableDeclaration","scope":2597,"src":"3368:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2342,"name":"uint256","nodeType":"ElementaryTypeName","src":"3368:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2345,"mutability":"mutable","name":"weight","nameLocation":"3395:6:7","nodeType":"VariableDeclaration","scope":2597,"src":"3387:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2344,"name":"uint256","nodeType":"ElementaryTypeName","src":"3387:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2347,"mutability":"mutable","name":"imageHash","nameLocation":"3411:9:7","nodeType":"VariableDeclaration","scope":2597,"src":"3403:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2346,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3403:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2349,"mutability":"mutable","name":"checkpoint","nameLocation":"3430:10:7","nodeType":"VariableDeclaration","scope":2597,"src":"3422:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2348,"name":"uint256","nodeType":"ElementaryTypeName","src":"3422:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2351,"mutability":"mutable","name":"opHash","nameLocation":"3450:6:7","nodeType":"VariableDeclaration","scope":2597,"src":"3442:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2350,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3442:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3367:90:7"},"scope":3784,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2800,"nodeType":"FunctionDefinition","src":"6589:1730:7","nodes":[],"body":{"id":2799,"nodeType":"Block","src":"6856:1463:7","nodes":[],"statements":[{"assignments":[2624],"declarations":[{"constant":false,"id":2624,"mutability":"mutable","name":"linkedPayload","nameLocation":"6885:13:7","nodeType":"VariableDeclaration","scope":2799,"src":"6862:36:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":2623,"nodeType":"UserDefinedTypeName","pathNode":{"id":2622,"name":"Payload.Decoded","nameLocations":["6862:7:7","6870:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"6862:15:7"},"referencedDeclaration":854,"src":"6862:15:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"id":2625,"nodeType":"VariableDeclarationStatement","src":"6862:36:7"},{"expression":{"id":2631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2626,"name":"linkedPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"6904:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2628,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6918:4:7","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":834,"src":"6904:18:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2629,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"6925:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1488_$","typeString":"type(library Payload)"}},"id":2630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6933:18:7","memberName":"KIND_CONFIG_UPDATE","nodeType":"MemberAccess","referencedDeclaration":799,"src":"6925:26:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6904:47:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":2632,"nodeType":"ExpressionStatement","src":"6904:47:7"},{"assignments":[2634],"declarations":[{"constant":false,"id":2634,"mutability":"mutable","name":"rindex","nameLocation":"6966:6:7","nodeType":"VariableDeclaration","scope":2799,"src":"6958:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2633,"name":"uint256","nodeType":"ElementaryTypeName","src":"6958:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2635,"nodeType":"VariableDeclarationStatement","src":"6958:14:7"},{"assignments":[2637],"declarations":[{"constant":false,"id":2637,"mutability":"mutable","name":"prevCheckpoint","nameLocation":"6986:14:7","nodeType":"VariableDeclaration","scope":2799,"src":"6978:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2636,"name":"uint256","nodeType":"ElementaryTypeName","src":"6978:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2643,"initialValue":{"expression":{"arguments":[{"id":2640,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7008:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2639,"name":"uint256","nodeType":"ElementaryTypeName","src":"7008:7:7","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":2638,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7003:4:7","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7003:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":2642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7017:3:7","memberName":"max","nodeType":"MemberAccess","src":"7003:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6978:42:7"},{"body":{"id":2779,"nodeType":"Block","src":"7062:1123:7","statements":[{"assignments":[2649],"declarations":[{"constant":false,"id":2649,"mutability":"mutable","name":"nrindex","nameLocation":"7078:7:7","nodeType":"VariableDeclaration","scope":2779,"src":"7070:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2648,"name":"uint256","nodeType":"ElementaryTypeName","src":"7070:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2650,"nodeType":"VariableDeclarationStatement","src":"7070:15:7"},{"id":2669,"nodeType":"Block","src":"7094:129:7","statements":[{"assignments":[2652],"declarations":[{"constant":false,"id":2652,"mutability":"mutable","name":"sigSize","nameLocation":"7112:7:7","nodeType":"VariableDeclaration","scope":2669,"src":"7104:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2651,"name":"uint256","nodeType":"ElementaryTypeName","src":"7104:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2653,"nodeType":"VariableDeclarationStatement","src":"7104:15:7"},{"expression":{"id":2661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2654,"name":"sigSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2652,"src":"7130:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2655,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2634,"src":"7139:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2656,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7129:17:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2659,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2634,"src":"7171:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2657,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2607,"src":"7149:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7160:10:7","memberName":"readUint24","nodeType":"MemberAccess","referencedDeclaration":4009,"src":"7149:21:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint24,uint256)"}},"id":2660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7149:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint24_$_t_uint256_$","typeString":"tuple(uint24,uint256)"}},"src":"7129:49:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2662,"nodeType":"ExpressionStatement","src":"7129:49:7"},{"expression":{"id":2667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2663,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"7188:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2664,"name":"sigSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2652,"src":"7198:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2665,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2634,"src":"7208:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7198:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7188:26:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2668,"nodeType":"ExpressionStatement","src":"7188:26:7"}]},{"assignments":[2672],"declarations":[{"constant":false,"id":2672,"mutability":"mutable","name":"recoverMode","nameLocation":"7243:11:7","nodeType":"VariableDeclaration","scope":2779,"src":"7231:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"},"typeName":{"id":2671,"nodeType":"UserDefinedTypeName","pathNode":{"id":2670,"name":"RecoverMode","nameLocations":["7231:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":2235,"src":"7231:11:7"},"referencedDeclaration":2235,"src":"7231:11:7","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},"visibility":"internal"}],"id":2682,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2673,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"7265:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2674,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2607,"src":"7276:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7287:6:7","memberName":"length","nodeType":"MemberAccess","src":"7276:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7265:28:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":2679,"name":"RecoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"7334:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2235_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":2680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7346:16:7","memberName":"SkipSnapshotRead","nodeType":"MemberAccess","referencedDeclaration":2234,"src":"7334:28:7","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7265:97:7","trueExpression":{"expression":{"id":2677,"name":"RecoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"7296:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2235_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":2678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7308:23:7","memberName":"UseProvidedCheckpointer","nodeType":"MemberAccess","referencedDeclaration":2233,"src":"7296:35:7","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},"typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},"nodeType":"VariableDeclarationStatement","src":"7231:131:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2683,"name":"prevCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"7375:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7398:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2685,"name":"uint256","nodeType":"ElementaryTypeName","src":"7398:7:7","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":2684,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7393:4:7","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7393:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":2688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7407:3:7","memberName":"max","nodeType":"MemberAccess","src":"7393:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7375:35:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2724,"nodeType":"Block","src":"7573:153:7","statements":[{"expression":{"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2708,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"7584:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2709,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"7595:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2710,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2614,"src":"7603:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2711,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2616,"src":"7614:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null],"id":2712,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7583:43:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$__$","typeString":"tuple(uint256,uint256,bytes32,uint256,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2714,"name":"linkedPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"7647:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"baseExpression":{"id":2715,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2607,"src":"7662:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":2717,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"7680:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"7662:26:7","startExpression":{"id":2716,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2634,"src":"7673:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"id":2719,"name":"recoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2672,"src":"7690:11:7","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},{"id":2720,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"7703:13:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2713,"name":"recover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"7639:7:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes_calldata_ptr_$_t_enum$_RecoverMode_$2235_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata,enum BaseSig.RecoverMode,address) view returns (uint256,uint256,bytes32,uint256,bytes32)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7639:78:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"src":"7583:134:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2723,"nodeType":"ExpressionStatement","src":"7583:134:7"}]},"id":2725,"nodeType":"IfStatement","src":"7371:355:7","trueBody":{"id":2707,"nodeType":"Block","src":"7412:155:7","statements":[{"expression":{"id":2705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2690,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"7423:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2691,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"7434:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2692,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2614,"src":"7442:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2693,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2616,"src":"7453:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2694,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2618,"src":"7465:6:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2695,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7422:50:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2697,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2600,"src":"7493:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"baseExpression":{"id":2698,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2607,"src":"7503:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":2700,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"7521:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"7503:26:7","startExpression":{"id":2699,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2634,"src":"7514:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"id":2702,"name":"recoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2672,"src":"7531:11:7","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"}},{"id":2703,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"7544:13:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_enum$_RecoverMode_$2235","typeString":"enum BaseSig.RecoverMode"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2696,"name":"recover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"7485:7:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes_calldata_ptr_$_t_enum$_RecoverMode_$2235_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata,enum BaseSig.RecoverMode,address) view returns (uint256,uint256,bytes32,uint256,bytes32)"}},"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7485:73:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"src":"7422:136:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2706,"nodeType":"ExpressionStatement","src":"7422:136:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2726,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"7738:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2727,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"7747:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7738:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2739,"nodeType":"IfStatement","src":"7734:122:7","trueBody":{"id":2738,"nodeType":"Block","src":"7758:98:7","statements":[{"errorCall":{"arguments":[{"baseExpression":{"id":2730,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2607,"src":"7801:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":2732,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"7819:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"7801:26:7","startExpression":{"id":2731,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2634,"src":"7812:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"id":2734,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"7829:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2735,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"7840:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2729,"name":"LowWeightChainedSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2201,"src":"7775:25:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (bytes memory,uint256,uint256) pure returns (error)"}},"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7775:72:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2737,"nodeType":"RevertStatement","src":"7768:79:7"}]}},{"expression":{"id":2742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2740,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2634,"src":"7863:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2741,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2649,"src":"7872:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7863:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2743,"nodeType":"ExpressionStatement","src":"7863:16:7"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2744,"name":"_snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2605,"src":"7892:9:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}},"id":2745,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7902:9:7","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":3832,"src":"7892:19:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2746,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2614,"src":"7915:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7892:32:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2758,"nodeType":"IfStatement","src":"7888:89:7","trueBody":{"id":2757,"nodeType":"Block","src":"7926:51:7","statements":[{"expression":{"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2748,"name":"_snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2605,"src":"7936:9:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}},"id":2750,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7946:9:7","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":3832,"src":"7936:19:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7966:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7958:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2751,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7958:7:7","typeDescriptions":{}}},"id":2754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7958:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7936:32:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2756,"nodeType":"ExpressionStatement","src":"7936:32:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2759,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2616,"src":"7989:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2760,"name":"prevCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8003:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7989:28:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2768,"nodeType":"IfStatement","src":"7985:115:7","trueBody":{"id":2767,"nodeType":"Block","src":"8019:81:7","statements":[{"errorCall":{"arguments":[{"id":2763,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2616,"src":"8064:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2764,"name":"prevCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8076:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2762,"name":"WrongChainedCheckpointOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2217,"src":"8036:27:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":2765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8036:55:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2766,"nodeType":"RevertStatement","src":"8029:62:7"}]}},{"expression":{"id":2773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2769,"name":"linkedPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"8108:13:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8122:9:7","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":848,"src":"8108:23:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2772,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2614,"src":"8134:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8108:35:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2774,"nodeType":"ExpressionStatement","src":"8108:35:7"},{"expression":{"id":2777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2775,"name":"prevCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2637,"src":"8151:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2776,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2616,"src":"8168:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8151:27:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2778,"nodeType":"ExpressionStatement","src":"8151:27:7"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2644,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2634,"src":"7034:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2645,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2607,"src":"7043:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7054:6:7","memberName":"length","nodeType":"MemberAccess","src":"7043:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7034:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2780,"nodeType":"WhileStatement","src":"7027:1158:7"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2781,"name":"_snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2605,"src":"8195:9:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}},"id":2782,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8205:9:7","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":3832,"src":"8195:19:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8226:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8218:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2783,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8218:7:7","typeDescriptions":{}}},"id":2786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8218:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8195:33:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2788,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2616,"src":"8232:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":2789,"name":"_snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2605,"src":"8246:9:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}},"id":2790,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8256:10:7","memberName":"checkpoint","nodeType":"MemberAccess","referencedDeclaration":3834,"src":"8246:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8232:34:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8195:71:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2798,"nodeType":"IfStatement","src":"8191:124:7","trueBody":{"id":2797,"nodeType":"Block","src":"8268:47:7","statements":[{"errorCall":{"arguments":[{"id":2794,"name":"_snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2605,"src":"8298:9:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot memory"}],"id":2793,"name":"UnusedSnapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"8283:14:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Snapshot_$3835_memory_ptr_$returns$_t_error_$","typeString":"function (struct Snapshot memory) pure returns (error)"}},"id":2795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8283:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2796,"nodeType":"RevertStatement","src":"8276:32:7"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"recoverChained","nameLocation":"6598:14:7","parameters":{"id":2608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2600,"mutability":"mutable","name":"_payload","nameLocation":"6641:8:7","nodeType":"VariableDeclaration","scope":2800,"src":"6618:31:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":2599,"nodeType":"UserDefinedTypeName","pathNode":{"id":2598,"name":"Payload.Decoded","nameLocations":["6618:7:7","6626:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"6618:15:7"},"referencedDeclaration":854,"src":"6618:15:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":2602,"mutability":"mutable","name":"_checkpointer","nameLocation":"6663:13:7","nodeType":"VariableDeclaration","scope":2800,"src":"6655:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2601,"name":"address","nodeType":"ElementaryTypeName","src":"6655:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2605,"mutability":"mutable","name":"_snapshot","nameLocation":"6698:9:7","nodeType":"VariableDeclaration","scope":2800,"src":"6682:25:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot"},"typeName":{"id":2604,"nodeType":"UserDefinedTypeName","pathNode":{"id":2603,"name":"Snapshot","nameLocations":["6682:8:7"],"nodeType":"IdentifierPath","referencedDeclaration":3835,"src":"6682:8:7"},"referencedDeclaration":3835,"src":"6682:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_storage_ptr","typeString":"struct Snapshot"}},"visibility":"internal"},{"constant":false,"id":2607,"mutability":"mutable","name":"_signature","nameLocation":"6728:10:7","nodeType":"VariableDeclaration","scope":2800,"src":"6713:25:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2606,"name":"bytes","nodeType":"ElementaryTypeName","src":"6713:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6612:130:7"},"returnParameters":{"id":2619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2610,"mutability":"mutable","name":"threshold","nameLocation":"6774:9:7","nodeType":"VariableDeclaration","scope":2800,"src":"6766:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2609,"name":"uint256","nodeType":"ElementaryTypeName","src":"6766:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2612,"mutability":"mutable","name":"weight","nameLocation":"6793:6:7","nodeType":"VariableDeclaration","scope":2800,"src":"6785:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2611,"name":"uint256","nodeType":"ElementaryTypeName","src":"6785:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2614,"mutability":"mutable","name":"imageHash","nameLocation":"6809:9:7","nodeType":"VariableDeclaration","scope":2800,"src":"6801:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2613,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6801:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2616,"mutability":"mutable","name":"checkpoint","nameLocation":"6828:10:7","nodeType":"VariableDeclaration","scope":2800,"src":"6820:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2615,"name":"uint256","nodeType":"ElementaryTypeName","src":"6820:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2618,"mutability":"mutable","name":"opHash","nameLocation":"6848:6:7","nodeType":"VariableDeclaration","scope":2800,"src":"6840:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2617,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6840:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6765:90:7"},"scope":3784,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":3783,"nodeType":"FunctionDefinition","src":"8323:11084:7","nodes":[],"body":{"id":3782,"nodeType":"Block","src":"8492:10915:7","nodes":[],"statements":[{"id":3781,"nodeType":"UncheckedBlock","src":"8498:10905:7","statements":[{"assignments":[2815],"declarations":[{"constant":false,"id":2815,"mutability":"mutable","name":"rindex","nameLocation":"8524:6:7","nodeType":"VariableDeclaration","scope":3781,"src":"8516:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2814,"name":"uint256","nodeType":"ElementaryTypeName","src":"8516:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2816,"nodeType":"VariableDeclarationStatement","src":"8516:14:7"},{"body":{"id":3779,"nodeType":"Block","src":"8620:10777:7","statements":[{"assignments":[2822],"declarations":[{"constant":false,"id":2822,"mutability":"mutable","name":"firstByte","nameLocation":"8797:9:7","nodeType":"VariableDeclaration","scope":3779,"src":"8789:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2821,"name":"uint256","nodeType":"ElementaryTypeName","src":"8789:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2823,"nodeType":"VariableDeclarationStatement","src":"8789:17:7"},{"expression":{"id":2831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2824,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"8817:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2825,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"8828:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2826,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8816:19:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2829,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"8859:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2827,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"8838:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8849:9:7","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":3983,"src":"8838:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":2830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8838:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"8816:50:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2832,"nodeType":"ExpressionStatement","src":"8816:50:7"},{"assignments":[2834],"declarations":[{"constant":false,"id":2834,"mutability":"mutable","name":"flag","nameLocation":"8924:4:7","nodeType":"VariableDeclaration","scope":3779,"src":"8916:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"8916:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2841,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2835,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"8932:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30786630","id":2836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8944:4:7","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"0xf0"},"src":"8932:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2838,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8931:18:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8953:1:7","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"8931:23:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8916:38:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2842,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"9002:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2843,"name":"FLAG_SIGNATURE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2162,"src":"9010:19:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9002:27:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2926,"nodeType":"IfStatement","src":"8998:864:7","trueBody":{"id":2925,"nodeType":"Block","src":"9031:831:7","statements":[{"assignments":[2846],"declarations":[{"constant":false,"id":2846,"mutability":"mutable","name":"addrWeight","nameLocation":"9323:10:7","nodeType":"VariableDeclaration","scope":2925,"src":"9317:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2845,"name":"uint8","nodeType":"ElementaryTypeName","src":"9317:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2853,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2849,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"9342:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783066","id":2850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9354:4:7","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0x0f"},"src":"9342:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9336:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2847,"name":"uint8","nodeType":"ElementaryTypeName","src":"9336:5:7","typeDescriptions":{}}},"id":2852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9336:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"9317:42:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2854,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"9375:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9389:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9375:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2867,"nodeType":"IfStatement","src":"9371:99:7","trueBody":{"id":2866,"nodeType":"Block","src":"9392:78:7","statements":[{"expression":{"id":2864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2857,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"9407:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2858,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"9419:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2859,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9406:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2862,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"9450:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2860,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"9429:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9440:9:7","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":3983,"src":"9429:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":2863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9429:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"9406:51:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2865,"nodeType":"ExpressionStatement","src":"9406:51:7"}]}},{"assignments":[2869],"declarations":[{"constant":false,"id":2869,"mutability":"mutable","name":"r","nameLocation":"9490:1:7","nodeType":"VariableDeclaration","scope":2925,"src":"9482:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2868,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9482:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2870,"nodeType":"VariableDeclarationStatement","src":"9482:9:7"},{"assignments":[2872],"declarations":[{"constant":false,"id":2872,"mutability":"mutable","name":"s","nameLocation":"9511:1:7","nodeType":"VariableDeclaration","scope":2925,"src":"9503:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2871,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9503:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2873,"nodeType":"VariableDeclarationStatement","src":"9503:9:7"},{"assignments":[2875],"declarations":[{"constant":false,"id":2875,"mutability":"mutable","name":"v","nameLocation":"9530:1:7","nodeType":"VariableDeclaration","scope":2925,"src":"9524:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2874,"name":"uint8","nodeType":"ElementaryTypeName","src":"9524:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2876,"nodeType":"VariableDeclarationStatement","src":"9524:7:7"},{"expression":{"id":2886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2877,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"9544:1:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2878,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2872,"src":"9547:1:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2879,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2875,"src":"9550:1:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2880,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"9553:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2881,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9543:17:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$","typeString":"tuple(bytes32,bytes32,uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2884,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"9589:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2882,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"9563:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9574:14:7","memberName":"readRSVCompact","nodeType":"MemberAccess","referencedDeclaration":4159,"src":"9563:25:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes32,bytes32,uint8,uint256)"}},"id":2885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9563:33:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$","typeString":"tuple(bytes32,bytes32,uint8,uint256)"}},"src":"9543:53:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2887,"nodeType":"ExpressionStatement","src":"9543:53:7"},{"assignments":[2889],"declarations":[{"constant":false,"id":2889,"mutability":"mutable","name":"addr","nameLocation":"9617:4:7","nodeType":"VariableDeclaration","scope":2925,"src":"9609:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2888,"name":"address","nodeType":"ElementaryTypeName","src":"9609:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2896,"initialValue":{"arguments":[{"id":2891,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"9634:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2892,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2875,"src":"9643:1:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2893,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"9646:1:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2894,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2872,"src":"9649:1:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2890,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"9624:9:7","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":2895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9624:27:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9609:42:7"},{"expression":{"id":2899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2897,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"9664:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2898,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"9674:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9664:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2900,"nodeType":"ExpressionStatement","src":"9664:20:7"},{"assignments":[2902],"declarations":[{"constant":false,"id":2902,"mutability":"mutable","name":"node","nameLocation":"9704:4:7","nodeType":"VariableDeclaration","scope":2925,"src":"9696:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9696:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2907,"initialValue":{"arguments":[{"id":2904,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"9736:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2905,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"9742:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2903,"name":"_leafForAddressAndWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"9711:24:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (address,uint256) pure returns (bytes32)"}},"id":2906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9711:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9696:57:7"},{"expression":{"id":2922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2908,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"9765:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2909,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"9772:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9788:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9780:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2910,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9780:7:7","typeDescriptions":{}}},"id":2913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9780:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9772:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2920,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"9827:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9772:59:7","trueExpression":{"arguments":[{"id":2917,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"9813:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2918,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2902,"src":"9819:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2915,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"9793:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":2916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9802:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"9793:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":2919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9793:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9765:66:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2923,"nodeType":"ExpressionStatement","src":"9765:66:7"},{"id":2924,"nodeType":"Continue","src":"9843:8:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2927,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"9922:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2928,"name":"FLAG_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"9930:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9922:20:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2990,"nodeType":"IfStatement","src":"9918:676:7","trueBody":{"id":2989,"nodeType":"Block","src":"9944:650:7","statements":[{"assignments":[2931],"declarations":[{"constant":false,"id":2931,"mutability":"mutable","name":"addrWeight","nameLocation":"10096:10:7","nodeType":"VariableDeclaration","scope":2989,"src":"10090:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2930,"name":"uint8","nodeType":"ElementaryTypeName","src":"10090:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2938,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2934,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"10115:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783066","id":2935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10127:4:7","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0x0f"},"src":"10115:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10109:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2932,"name":"uint8","nodeType":"ElementaryTypeName","src":"10109:5:7","typeDescriptions":{}}},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10109:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"10090:42:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2939,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2931,"src":"10148:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10162:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10148:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2952,"nodeType":"IfStatement","src":"10144:99:7","trueBody":{"id":2951,"nodeType":"Block","src":"10165:78:7","statements":[{"expression":{"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2942,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2931,"src":"10180:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2943,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"10192:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2944,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"10179:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2947,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"10223:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2945,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"10202:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10213:9:7","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":3983,"src":"10202:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10202:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"10179:51:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2950,"nodeType":"ExpressionStatement","src":"10179:51:7"}]}},{"assignments":[2954],"declarations":[{"constant":false,"id":2954,"mutability":"mutable","name":"addr","nameLocation":"10289:4:7","nodeType":"VariableDeclaration","scope":2989,"src":"10281:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2953,"name":"address","nodeType":"ElementaryTypeName","src":"10281:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2955,"nodeType":"VariableDeclarationStatement","src":"10281:12:7"},{"expression":{"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2956,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"10306:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2957,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"10312:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2958,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"10305:14:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2961,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"10345:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2959,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"10322:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10333:11:7","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":4102,"src":"10322:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":2962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10322:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"10305:47:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2964,"nodeType":"ExpressionStatement","src":"10305:47:7"},{"assignments":[2966],"declarations":[{"constant":false,"id":2966,"mutability":"mutable","name":"node","nameLocation":"10436:4:7","nodeType":"VariableDeclaration","scope":2989,"src":"10428:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2965,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10428:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2971,"initialValue":{"arguments":[{"id":2968,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2954,"src":"10468:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2969,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2931,"src":"10474:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2967,"name":"_leafForAddressAndWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"10443:24:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (address,uint256) pure returns (bytes32)"}},"id":2970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10443:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"10428:57:7"},{"expression":{"id":2986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2972,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"10497:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2973,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"10504:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10520:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10512:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2974,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10512:7:7","typeDescriptions":{}}},"id":2977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10512:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10504:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2984,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2966,"src":"10559:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10504:59:7","trueExpression":{"arguments":[{"id":2981,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"10545:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2982,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2966,"src":"10551:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2979,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"10525:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":2980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10534:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"10525:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":2983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10525:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10497:66:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2987,"nodeType":"ExpressionStatement","src":"10497:66:7"},{"id":2988,"nodeType":"Continue","src":"10575:8:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2991,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"10644:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2992,"name":"FLAG_SIGNATURE_ERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2168,"src":"10652:22:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10644:30:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3115,"nodeType":"IfStatement","src":"10640:1383:7","trueBody":{"id":3114,"nodeType":"Block","src":"10676:1347:7","statements":[{"assignments":[2995],"declarations":[{"constant":false,"id":2995,"mutability":"mutable","name":"addrWeight","nameLocation":"10916:10:7","nodeType":"VariableDeclaration","scope":3114,"src":"10910:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2994,"name":"uint8","nodeType":"ElementaryTypeName","src":"10910:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3002,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2998,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"10935:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783033","id":2999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:4:7","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x03"},"src":"10935:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2997,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10929:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2996,"name":"uint8","nodeType":"ElementaryTypeName","src":"10929:5:7","typeDescriptions":{}}},"id":3001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10929:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"10910:42:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3003,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2995,"src":"10968:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10982:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10968:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3016,"nodeType":"IfStatement","src":"10964:99:7","trueBody":{"id":3015,"nodeType":"Block","src":"10985:78:7","statements":[{"expression":{"id":3013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3006,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2995,"src":"11000:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3007,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"11012:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3008,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"10999:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3011,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"11043:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3009,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"11022:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11033:9:7","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":3983,"src":"11022:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":3012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11022:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"10999:51:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3014,"nodeType":"ExpressionStatement","src":"10999:51:7"}]}},{"assignments":[3018],"declarations":[{"constant":false,"id":3018,"mutability":"mutable","name":"addr","nameLocation":"11108:4:7","nodeType":"VariableDeclaration","scope":3114,"src":"11100:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3017,"name":"address","nodeType":"ElementaryTypeName","src":"11100:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3019,"nodeType":"VariableDeclarationStatement","src":"11100:12:7"},{"expression":{"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3020,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3018,"src":"11125:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3021,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"11131:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3022,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"11124:14:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3025,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"11164:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3023,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"11141:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11152:11:7","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":4102,"src":"11141:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":3026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11141:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"11124:47:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3028,"nodeType":"ExpressionStatement","src":"11124:47:7"},{"assignments":[3030],"declarations":[{"constant":false,"id":3030,"mutability":"mutable","name":"sizeSize","nameLocation":"11225:8:7","nodeType":"VariableDeclaration","scope":3114,"src":"11217:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3029,"name":"uint256","nodeType":"ElementaryTypeName","src":"11217:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3039,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3033,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"11242:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783063","id":3034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11254:4:7","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"11242:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11236:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3031,"name":"uint8","nodeType":"ElementaryTypeName","src":"11236:5:7","typeDescriptions":{}}},"id":3036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11236:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11263:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11236:28:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"11217:47:7"},{"assignments":[3041],"declarations":[{"constant":false,"id":3041,"mutability":"mutable","name":"size","nameLocation":"11284:4:7","nodeType":"VariableDeclaration","scope":3114,"src":"11276:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3040,"name":"uint256","nodeType":"ElementaryTypeName","src":"11276:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3042,"nodeType":"VariableDeclarationStatement","src":"11276:12:7"},{"expression":{"id":3051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3043,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"11301:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3044,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"11307:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3045,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"11300:14:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3048,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"11338:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3049,"name":"sizeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3030,"src":"11346:8:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3046,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"11317:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11328:9:7","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4063,"src":"11317:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":3050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11317:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"11300:55:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3052,"nodeType":"ExpressionStatement","src":"11300:55:7"},{"assignments":[3054],"declarations":[{"constant":false,"id":3054,"mutability":"mutable","name":"nrindex","nameLocation":"11417:7:7","nodeType":"VariableDeclaration","scope":3114,"src":"11409:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3053,"name":"uint256","nodeType":"ElementaryTypeName","src":"11409:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3058,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3055,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"11427:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3056,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3041,"src":"11436:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11427:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11409:31:7"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3063,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"11563:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":3064,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"11572:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3066,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3054,"src":"11590:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"11572:26:7","startExpression":{"id":3065,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"11583:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"expression":{"arguments":[{"id":3060,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3018,"src":"11540:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3059,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3888,"src":"11531:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$3888_$","typeString":"type(contract IERC1271)"}},"id":3061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11531:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$3888","typeString":"contract IERC1271"}},"id":3062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11546:16:7","memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":3887,"src":"11531:31:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (bytes32,bytes memory) view external returns (bytes4)"}},"id":3068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11531:68:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3069,"name":"IERC1271_MAGIC_VALUE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"11603:25:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"11531:97:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3081,"nodeType":"IfStatement","src":"11527:203:7","trueBody":{"id":3080,"nodeType":"Block","src":"11630:100:7","statements":[{"errorCall":{"arguments":[{"id":3072,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"11675:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3073,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3018,"src":"11684:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3074,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"11690:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3076,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3054,"src":"11708:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"11690:26:7","startExpression":{"id":3075,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"11701:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3071,"name":"InvalidERC1271Signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2210,"src":"11651:23:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (bytes32,address,bytes memory) pure returns (error)"}},"id":3078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11651:66:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3079,"nodeType":"RevertStatement","src":"11644:73:7"}]}},{"expression":{"id":3084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3082,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"11741:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3083,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3054,"src":"11750:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11741:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3085,"nodeType":"ExpressionStatement","src":"11741:16:7"},{"expression":{"id":3088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3086,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"11825:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3087,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2995,"src":"11835:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11825:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3089,"nodeType":"ExpressionStatement","src":"11825:20:7"},{"assignments":[3091],"declarations":[{"constant":false,"id":3091,"mutability":"mutable","name":"node","nameLocation":"11865:4:7","nodeType":"VariableDeclaration","scope":3114,"src":"11857:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3090,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11857:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3096,"initialValue":{"arguments":[{"id":3093,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3018,"src":"11897:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3094,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2995,"src":"11903:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":3092,"name":"_leafForAddressAndWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"11872:24:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (address,uint256) pure returns (bytes32)"}},"id":3095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11872:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11857:57:7"},{"expression":{"id":3111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3097,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"11926:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3098,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"11933:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11949:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11941:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3099,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11941:7:7","typeDescriptions":{}}},"id":3102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11941:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11933:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3109,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3091,"src":"11988:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11933:59:7","trueExpression":{"arguments":[{"id":3106,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"11974:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3107,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3091,"src":"11980:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3104,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"11954:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":3105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11963:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"11954:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11954:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11926:66:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3112,"nodeType":"ExpressionStatement","src":"11926:66:7"},{"id":3113,"nodeType":"Continue","src":"12004:8:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3116,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"12060:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3117,"name":"FLAG_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"12068:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12060:17:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3149,"nodeType":"IfStatement","src":"12056:279:7","trueBody":{"id":3148,"nodeType":"Block","src":"12079:256:7","statements":[{"assignments":[3120],"declarations":[{"constant":false,"id":3120,"mutability":"mutable","name":"node","nameLocation":"12163:4:7","nodeType":"VariableDeclaration","scope":3148,"src":"12155:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3119,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12155:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3121,"nodeType":"VariableDeclarationStatement","src":"12155:12:7"},{"expression":{"id":3129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3122,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3120,"src":"12180:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3123,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"12186:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3124,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12179:14:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3127,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"12219:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3125,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"12196:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12207:11:7","memberName":"readBytes32","nodeType":"MemberAccess","referencedDeclaration":4089,"src":"12196:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes32,uint256)"}},"id":3128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12196:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"src":"12179:47:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3130,"nodeType":"ExpressionStatement","src":"12179:47:7"},{"expression":{"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3131,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"12238:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3132,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"12245:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12261:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12253:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3133,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12253:7:7","typeDescriptions":{}}},"id":3136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12253:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12245:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3143,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3120,"src":"12300:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12245:59:7","trueExpression":{"arguments":[{"id":3140,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"12286:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3141,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3120,"src":"12292:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3138,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"12266:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":3139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12275:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"12266:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12266:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12238:66:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3146,"nodeType":"ExpressionStatement","src":"12238:66:7"},{"id":3147,"nodeType":"Continue","src":"12316:8:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3150,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"12374:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3151,"name":"FLAG_BRANCH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"12382:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12374:19:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3212,"nodeType":"IfStatement","src":"12370:656:7","trueBody":{"id":3211,"nodeType":"Block","src":"12395:631:7","statements":[{"assignments":[3154],"declarations":[{"constant":false,"id":3154,"mutability":"mutable","name":"sizeSize","nameLocation":"12554:8:7","nodeType":"VariableDeclaration","scope":3211,"src":"12546:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3153,"name":"uint256","nodeType":"ElementaryTypeName","src":"12546:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3161,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3157,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"12571:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783066","id":3158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12583:4:7","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0x0f"},"src":"12571:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12565:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3155,"name":"uint8","nodeType":"ElementaryTypeName","src":"12565:5:7","typeDescriptions":{}}},"id":3160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12565:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"12546:42:7"},{"assignments":[3163],"declarations":[{"constant":false,"id":3163,"mutability":"mutable","name":"size","nameLocation":"12608:4:7","nodeType":"VariableDeclaration","scope":3211,"src":"12600:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3162,"name":"uint256","nodeType":"ElementaryTypeName","src":"12600:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3164,"nodeType":"VariableDeclarationStatement","src":"12600:12:7"},{"expression":{"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3165,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3163,"src":"12625:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3166,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"12631:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3167,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12624:14:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3170,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"12662:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3171,"name":"sizeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3154,"src":"12670:8:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3168,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"12641:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12652:9:7","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4063,"src":"12641:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":3172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12641:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"12624:55:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3174,"nodeType":"ExpressionStatement","src":"12624:55:7"},{"assignments":[3176],"declarations":[{"constant":false,"id":3176,"mutability":"mutable","name":"nrindex","nameLocation":"12757:7:7","nodeType":"VariableDeclaration","scope":3211,"src":"12749:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3175,"name":"uint256","nodeType":"ElementaryTypeName","src":"12749:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3180,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3177,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"12767:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3178,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3163,"src":"12776:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12767:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12749:31:7"},{"assignments":[3182,3184],"declarations":[{"constant":false,"id":3182,"mutability":"mutable","name":"nweight","nameLocation":"12802:7:7","nodeType":"VariableDeclaration","scope":3211,"src":"12794:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3181,"name":"uint256","nodeType":"ElementaryTypeName","src":"12794:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3184,"mutability":"mutable","name":"node","nameLocation":"12819:4:7","nodeType":"VariableDeclaration","scope":3211,"src":"12811:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3183,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12811:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3193,"initialValue":{"arguments":[{"id":3186,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2803,"src":"12841:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":3187,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"12851:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":3188,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"12860:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3190,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3176,"src":"12878:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"12860:26:7","startExpression":{"id":3189,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"12871:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3185,"name":"recoverBranch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3783,"src":"12827:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes32,bytes calldata) view returns (uint256,bytes32)"}},"id":3192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12827:60:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"12793:94:7"},{"expression":{"id":3196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3194,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"12899:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3195,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3176,"src":"12908:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12899:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3197,"nodeType":"ExpressionStatement","src":"12899:16:7"},{"expression":{"id":3200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3198,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"12928:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3199,"name":"nweight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3182,"src":"12938:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12928:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3201,"nodeType":"ExpressionStatement","src":"12928:17:7"},{"expression":{"id":3208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3202,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"12957:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3205,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"12984:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3206,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3184,"src":"12990:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3203,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"12964:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":3204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12973:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"12964:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12964:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12957:38:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3209,"nodeType":"ExpressionStatement","src":"12957:38:7"},{"id":3210,"nodeType":"Continue","src":"13007:8:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3213,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"13065:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3214,"name":"FLAG_NESTED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2180,"src":"13073:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13065:19:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3334,"nodeType":"IfStatement","src":"13061:1278:7","trueBody":{"id":3333,"nodeType":"Block","src":"13086:1253:7","statements":[{"assignments":[3217],"declarations":[{"constant":false,"id":3217,"mutability":"mutable","name":"externalWeight","nameLocation":"13407:14:7","nodeType":"VariableDeclaration","scope":3333,"src":"13399:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3216,"name":"uint256","nodeType":"ElementaryTypeName","src":"13399:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3226,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3220,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"13430:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783063","id":3221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13442:4:7","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"13430:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13424:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3218,"name":"uint8","nodeType":"ElementaryTypeName","src":"13424:5:7","typeDescriptions":{}}},"id":3223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13424:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13451:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"13424:28:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"13399:53:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3227,"name":"externalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"13468:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13486:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13468:19:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3240,"nodeType":"IfStatement","src":"13464:107:7","trueBody":{"id":3239,"nodeType":"Block","src":"13489:82:7","statements":[{"expression":{"id":3237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3230,"name":"externalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"13504:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3231,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"13520:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3232,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13503:24:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3235,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"13551:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3233,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"13530:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13541:9:7","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":3983,"src":"13530:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":3236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13530:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"13503:55:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3238,"nodeType":"ExpressionStatement","src":"13503:55:7"}]}},{"assignments":[3242],"declarations":[{"constant":false,"id":3242,"mutability":"mutable","name":"internalThreshold","nameLocation":"13591:17:7","nodeType":"VariableDeclaration","scope":3333,"src":"13583:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3241,"name":"uint256","nodeType":"ElementaryTypeName","src":"13583:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3249,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3245,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"13617:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783033","id":3246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13629:4:7","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x03"},"src":"13617:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13611:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3243,"name":"uint8","nodeType":"ElementaryTypeName","src":"13611:5:7","typeDescriptions":{}}},"id":3248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13611:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"13583:51:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3250,"name":"internalThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"13650:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13671:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13650:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3263,"nodeType":"IfStatement","src":"13646:114:7","trueBody":{"id":3262,"nodeType":"Block","src":"13674:86:7","statements":[{"expression":{"id":3260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3253,"name":"internalThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"13689:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3254,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"13708:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3255,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13688:27:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3258,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"13740:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3256,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"13718:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13729:10:7","memberName":"readUint16","nodeType":"MemberAccess","referencedDeclaration":3996,"src":"13718:21:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint16_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint16,uint256)"}},"id":3259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13718:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint256_$","typeString":"tuple(uint16,uint256)"}},"src":"13688:59:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3261,"nodeType":"ExpressionStatement","src":"13688:59:7"}]}},{"assignments":[3265],"declarations":[{"constant":false,"id":3265,"mutability":"mutable","name":"size","nameLocation":"13780:4:7","nodeType":"VariableDeclaration","scope":3333,"src":"13772:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3264,"name":"uint256","nodeType":"ElementaryTypeName","src":"13772:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3266,"nodeType":"VariableDeclarationStatement","src":"13772:12:7"},{"expression":{"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3267,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3265,"src":"13797:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3268,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"13803:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3269,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13796:14:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3272,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"13835:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3270,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"13813:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13824:10:7","memberName":"readUint24","nodeType":"MemberAccess","referencedDeclaration":4009,"src":"13813:21:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint24,uint256)"}},"id":3273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13813:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint24_$_t_uint256_$","typeString":"tuple(uint24,uint256)"}},"src":"13796:46:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3275,"nodeType":"ExpressionStatement","src":"13796:46:7"},{"assignments":[3277],"declarations":[{"constant":false,"id":3277,"mutability":"mutable","name":"nrindex","nameLocation":"13862:7:7","nodeType":"VariableDeclaration","scope":3333,"src":"13854:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3276,"name":"uint256","nodeType":"ElementaryTypeName","src":"13854:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3281,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3278,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"13872:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3279,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3265,"src":"13881:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13872:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13854:31:7"},{"assignments":[3283,3285],"declarations":[{"constant":false,"id":3283,"mutability":"mutable","name":"internalWeight","nameLocation":"13907:14:7","nodeType":"VariableDeclaration","scope":3333,"src":"13899:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3282,"name":"uint256","nodeType":"ElementaryTypeName","src":"13899:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3285,"mutability":"mutable","name":"internalRoot","nameLocation":"13931:12:7","nodeType":"VariableDeclaration","scope":3333,"src":"13923:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3284,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13923:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3294,"initialValue":{"arguments":[{"id":3287,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2803,"src":"13961:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":3288,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"13971:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":3289,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"13980:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3291,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"13998:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"13980:26:7","startExpression":{"id":3290,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"13991:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3286,"name":"recoverBranch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3783,"src":"13947:13:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes32,bytes calldata) view returns (uint256,bytes32)"}},"id":3293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13947:60:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"13898:109:7"},{"expression":{"id":3297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3295,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"14019:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3296,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"14028:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14019:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3298,"nodeType":"ExpressionStatement","src":"14019:16:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3299,"name":"internalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3283,"src":"14052:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3300,"name":"internalThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"14070:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14052:35:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3307,"nodeType":"IfStatement","src":"14048:92:7","trueBody":{"id":3306,"nodeType":"Block","src":"14089:51:7","statements":[{"expression":{"id":3304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3302,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"14103:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3303,"name":"externalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"14113:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14103:24:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3305,"nodeType":"ExpressionStatement","src":"14103:24:7"}]}},{"assignments":[3309],"declarations":[{"constant":false,"id":3309,"mutability":"mutable","name":"node","nameLocation":"14160:4:7","nodeType":"VariableDeclaration","scope":3333,"src":"14152:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3308,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14152:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3315,"initialValue":{"arguments":[{"id":3311,"name":"internalRoot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"14182:12:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3312,"name":"internalThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"14196:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3313,"name":"externalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"14215:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3310,"name":"_leafForNested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2276,"src":"14167:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256) pure returns (bytes32)"}},"id":3314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14167:63:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"14152:78:7"},{"expression":{"id":3330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3316,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"14242:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3317,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"14249:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14265:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14257:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3318,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14257:7:7","typeDescriptions":{}}},"id":3321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14257:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14249:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3328,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3309,"src":"14304:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14249:59:7","trueExpression":{"arguments":[{"id":3325,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"14290:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3326,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3309,"src":"14296:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3323,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"14270:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":3324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14279:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"14270:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14270:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14242:66:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3331,"nodeType":"ExpressionStatement","src":"14242:66:7"},{"id":3332,"nodeType":"Continue","src":"14320:8:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3335,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"14381:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3336,"name":"FLAG_SUBDIGEST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2177,"src":"14389:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14381:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3387,"nodeType":"IfStatement","src":"14377:518:7","trueBody":{"id":3386,"nodeType":"Block","src":"14405:490:7","statements":[{"assignments":[3339],"declarations":[{"constant":false,"id":3339,"mutability":"mutable","name":"hardcoded","nameLocation":"14558:9:7","nodeType":"VariableDeclaration","scope":3386,"src":"14550:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3338,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14550:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3340,"nodeType":"VariableDeclarationStatement","src":"14550:17:7"},{"expression":{"id":3348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3341,"name":"hardcoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3339,"src":"14580:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3342,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"14591:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3343,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14579:19:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3346,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"14624:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3344,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"14601:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14612:11:7","memberName":"readBytes32","nodeType":"MemberAccess","referencedDeclaration":4089,"src":"14601:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes32,uint256)"}},"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14601:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"src":"14579:52:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3349,"nodeType":"ExpressionStatement","src":"14579:52:7"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3350,"name":"hardcoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3339,"src":"14647:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3351,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"14660:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14647:20:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3362,"nodeType":"IfStatement","src":"14643:79:7","trueBody":{"id":3361,"nodeType":"Block","src":"14669:53:7","statements":[{"expression":{"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3353,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"14683:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":3356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14697:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3355,"name":"uint256","nodeType":"ElementaryTypeName","src":"14697:7:7","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3354,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14692:4:7","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14692:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14706:3:7","memberName":"max","nodeType":"MemberAccess","src":"14692:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14683:26:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3360,"nodeType":"ExpressionStatement","src":"14683:26:7"}]}},{"assignments":[3364],"declarations":[{"constant":false,"id":3364,"mutability":"mutable","name":"node","nameLocation":"14742:4:7","nodeType":"VariableDeclaration","scope":3386,"src":"14734:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3363,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14734:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3368,"initialValue":{"arguments":[{"id":3366,"name":"hardcoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3339,"src":"14776:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3365,"name":"_leafForHardcodedSubdigest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2314,"src":"14749:26:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":3367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14749:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"14734:52:7"},{"expression":{"id":3383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3369,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"14798:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3370,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"14805:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14821:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14813:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3371,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14813:7:7","typeDescriptions":{}}},"id":3374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14813:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14805:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3381,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3364,"src":"14860:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14805:59:7","trueExpression":{"arguments":[{"id":3378,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"14846:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3379,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3364,"src":"14852:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3376,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"14826:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":3377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14835:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"14826:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14826:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14798:66:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3384,"nodeType":"ExpressionStatement","src":"14798:66:7"},{"id":3385,"nodeType":"Continue","src":"14876:8:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3388,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"14946:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3389,"name":"FLAG_SIGNATURE_ETH_SIGN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"14954:23:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14946:31:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3478,"nodeType":"IfStatement","src":"14942:933:7","trueBody":{"id":3477,"nodeType":"Block","src":"14979:896:7","statements":[{"assignments":[3392],"declarations":[{"constant":false,"id":3392,"mutability":"mutable","name":"addrWeight","nameLocation":"15271:10:7","nodeType":"VariableDeclaration","scope":3477,"src":"15265:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3391,"name":"uint8","nodeType":"ElementaryTypeName","src":"15265:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3399,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3395,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"15290:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783066","id":3396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15302:4:7","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0x0f"},"src":"15290:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15284:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3393,"name":"uint8","nodeType":"ElementaryTypeName","src":"15284:5:7","typeDescriptions":{}}},"id":3398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15284:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"15265:42:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3400,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"15323:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15337:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15323:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3413,"nodeType":"IfStatement","src":"15319:99:7","trueBody":{"id":3412,"nodeType":"Block","src":"15340:78:7","statements":[{"expression":{"id":3410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3403,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"15355:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3404,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"15367:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3405,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"15354:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3408,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"15398:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3406,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"15377:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15388:9:7","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":3983,"src":"15377:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":3409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15377:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"15354:51:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3411,"nodeType":"ExpressionStatement","src":"15354:51:7"}]}},{"assignments":[3415],"declarations":[{"constant":false,"id":3415,"mutability":"mutable","name":"r","nameLocation":"15438:1:7","nodeType":"VariableDeclaration","scope":3477,"src":"15430:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3414,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15430:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3416,"nodeType":"VariableDeclarationStatement","src":"15430:9:7"},{"assignments":[3418],"declarations":[{"constant":false,"id":3418,"mutability":"mutable","name":"s","nameLocation":"15459:1:7","nodeType":"VariableDeclaration","scope":3477,"src":"15451:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3417,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15451:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3419,"nodeType":"VariableDeclarationStatement","src":"15451:9:7"},{"assignments":[3421],"declarations":[{"constant":false,"id":3421,"mutability":"mutable","name":"v","nameLocation":"15478:1:7","nodeType":"VariableDeclaration","scope":3477,"src":"15472:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3420,"name":"uint8","nodeType":"ElementaryTypeName","src":"15472:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3422,"nodeType":"VariableDeclarationStatement","src":"15472:7:7"},{"expression":{"id":3432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3423,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"15492:1:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3424,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3418,"src":"15495:1:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3425,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3421,"src":"15498:1:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3426,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"15501:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3427,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"15491:17:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$","typeString":"tuple(bytes32,bytes32,uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3430,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"15537:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3428,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"15511:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15522:14:7","memberName":"readRSVCompact","nodeType":"MemberAccess","referencedDeclaration":4159,"src":"15511:25:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes32,bytes32,uint8,uint256)"}},"id":3431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15511:33:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$","typeString":"tuple(bytes32,bytes32,uint8,uint256)"}},"src":"15491:53:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3433,"nodeType":"ExpressionStatement","src":"15491:53:7"},{"assignments":[3435],"declarations":[{"constant":false,"id":3435,"mutability":"mutable","name":"addr","nameLocation":"15565:4:7","nodeType":"VariableDeclaration","scope":3477,"src":"15557:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3434,"name":"address","nodeType":"ElementaryTypeName","src":"15557:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3448,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","id":3440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15609:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""},"value":"\u0019Ethereum Signed Message:\n32"},{"id":3441,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"15645:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3438,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15592:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15596:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"15592:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15592:61:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3437,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15582:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15582:72:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3444,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3421,"src":"15656:1:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3445,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3415,"src":"15659:1:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3446,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3418,"src":"15662:1:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3436,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"15572:9:7","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":3447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15572:92:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15557:107:7"},{"expression":{"id":3451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3449,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"15677:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3450,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"15687:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"15677:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3452,"nodeType":"ExpressionStatement","src":"15677:20:7"},{"assignments":[3454],"declarations":[{"constant":false,"id":3454,"mutability":"mutable","name":"node","nameLocation":"15717:4:7","nodeType":"VariableDeclaration","scope":3477,"src":"15709:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3453,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15709:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3459,"initialValue":{"arguments":[{"id":3456,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3435,"src":"15749:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3457,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"15755:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":3455,"name":"_leafForAddressAndWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"15724:24:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (address,uint256) pure returns (bytes32)"}},"id":3458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15724:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"15709:57:7"},{"expression":{"id":3474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3460,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"15778:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3461,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"15785:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15801:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15793:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15793:7:7","typeDescriptions":{}}},"id":3465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15793:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"15785:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3472,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3454,"src":"15840:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15785:59:7","trueExpression":{"arguments":[{"id":3469,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"15826:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3470,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3454,"src":"15832:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3467,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"15806:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":3468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15815:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"15806:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15806:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"15778:66:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3475,"nodeType":"ExpressionStatement","src":"15778:66:7"},{"id":3476,"nodeType":"Continue","src":"15856:8:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3479,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"16012:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3480,"name":"FLAG_SIGNATURE_ANY_ADDRESS_SUBDIGEST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"16020:36:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16012:44:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3541,"nodeType":"IfStatement","src":"16008:617:7","trueBody":{"id":3540,"nodeType":"Block","src":"16058:567:7","statements":[{"assignments":[3483],"declarations":[{"constant":false,"id":3483,"mutability":"mutable","name":"hardcoded","nameLocation":"16211:9:7","nodeType":"VariableDeclaration","scope":3540,"src":"16203:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3482,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16203:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3484,"nodeType":"VariableDeclarationStatement","src":"16203:17:7"},{"expression":{"id":3492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3485,"name":"hardcoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"16233:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3486,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"16244:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3487,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"16232:19:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3490,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"16277:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3488,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"16254:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16265:11:7","memberName":"readBytes32","nodeType":"MemberAccess","referencedDeclaration":4089,"src":"16254:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes32,uint256)"}},"id":3491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16254:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"src":"16232:52:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3493,"nodeType":"ExpressionStatement","src":"16232:52:7"},{"assignments":[3495],"declarations":[{"constant":false,"id":3495,"mutability":"mutable","name":"anyAddressOpHash","nameLocation":"16304:16:7","nodeType":"VariableDeclaration","scope":3540,"src":"16296:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3494,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16296:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3503,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":3500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16348:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16340:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3498,"name":"address","nodeType":"ElementaryTypeName","src":"16340:7:7","typeDescriptions":{}}},"id":3501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16340:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3496,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2803,"src":"16323:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":3497,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16332:7:7","memberName":"hashFor","nodeType":"MemberAccess","referencedDeclaration":1487,"src":"16323:16:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$854_memory_ptr_$_t_address_$returns$_t_bytes32_$attached_to$_t_struct$_Decoded_$854_memory_ptr_$","typeString":"function (struct Payload.Decoded memory,address) view returns (bytes32)"}},"id":3502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16323:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"16296:55:7"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3504,"name":"hardcoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"16367:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3505,"name":"anyAddressOpHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3495,"src":"16380:16:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16367:29:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3516,"nodeType":"IfStatement","src":"16363:88:7","trueBody":{"id":3515,"nodeType":"Block","src":"16398:53:7","statements":[{"expression":{"id":3513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3507,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"16412:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":3510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16426:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3509,"name":"uint256","nodeType":"ElementaryTypeName","src":"16426:7:7","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3508,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16421:4:7","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16421:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16435:3:7","memberName":"max","nodeType":"MemberAccess","src":"16421:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16412:26:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3514,"nodeType":"ExpressionStatement","src":"16412:26:7"}]}},{"assignments":[3518],"declarations":[{"constant":false,"id":3518,"mutability":"mutable","name":"node","nameLocation":"16471:4:7","nodeType":"VariableDeclaration","scope":3540,"src":"16463:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3517,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16463:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3522,"initialValue":{"arguments":[{"id":3520,"name":"hardcoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"16506:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3519,"name":"_leafForAnyAddressSubdigest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2330,"src":"16478:27:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":3521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16478:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"16463:53:7"},{"expression":{"id":3537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3523,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"16528:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3524,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"16535:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16551:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16543:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3525,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16543:7:7","typeDescriptions":{}}},"id":3528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16543:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16535:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3535,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3518,"src":"16590:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16535:59:7","trueExpression":{"arguments":[{"id":3532,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"16576:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3533,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3518,"src":"16582:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3530,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"16556:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":3531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16565:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"16556:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16556:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16528:66:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3538,"nodeType":"ExpressionStatement","src":"16528:66:7"},{"id":3539,"nodeType":"Continue","src":"16606:8:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3542,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"16675:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3543,"name":"FLAG_SIGNATURE_SAPIENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2189,"src":"16683:22:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16675:30:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3658,"nodeType":"IfStatement","src":"16671:1308:7","trueBody":{"id":3657,"nodeType":"Block","src":"16707:1272:7","statements":[{"assignments":[3546],"declarations":[{"constant":false,"id":3546,"mutability":"mutable","name":"addrWeight","nameLocation":"16958:10:7","nodeType":"VariableDeclaration","scope":3657,"src":"16952:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3545,"name":"uint8","nodeType":"ElementaryTypeName","src":"16952:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3553,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3549,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"16977:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783033","id":3550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16989:4:7","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x03"},"src":"16977:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16971:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3547,"name":"uint8","nodeType":"ElementaryTypeName","src":"16971:5:7","typeDescriptions":{}}},"id":3552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16971:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"16952:42:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3554,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3546,"src":"17010:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17024:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17010:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3567,"nodeType":"IfStatement","src":"17006:99:7","trueBody":{"id":3566,"nodeType":"Block","src":"17027:78:7","statements":[{"expression":{"id":3564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3557,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3546,"src":"17042:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3558,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"17054:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3559,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"17041:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3562,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"17085:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3560,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"17064:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17075:9:7","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":3983,"src":"17064:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":3563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17064:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"17041:51:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3565,"nodeType":"ExpressionStatement","src":"17041:51:7"}]}},{"assignments":[3569],"declarations":[{"constant":false,"id":3569,"mutability":"mutable","name":"addr","nameLocation":"17125:4:7","nodeType":"VariableDeclaration","scope":3657,"src":"17117:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3568,"name":"address","nodeType":"ElementaryTypeName","src":"17117:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3570,"nodeType":"VariableDeclarationStatement","src":"17117:12:7"},{"expression":{"id":3578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3571,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3569,"src":"17142:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3572,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"17148:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3573,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"17141:14:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3576,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"17181:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3574,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"17158:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17169:11:7","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":4102,"src":"17158:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":3577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17158:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"17141:47:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3579,"nodeType":"ExpressionStatement","src":"17141:47:7"},{"assignments":[3581],"declarations":[{"constant":false,"id":3581,"mutability":"mutable","name":"size","nameLocation":"17242:4:7","nodeType":"VariableDeclaration","scope":3657,"src":"17234:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3580,"name":"uint256","nodeType":"ElementaryTypeName","src":"17234:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3582,"nodeType":"VariableDeclarationStatement","src":"17234:12:7"},{"id":3604,"nodeType":"Block","src":"17258:143:7","statements":[{"assignments":[3584],"declarations":[{"constant":false,"id":3584,"mutability":"mutable","name":"sizeSize","nameLocation":"17280:8:7","nodeType":"VariableDeclaration","scope":3604,"src":"17272:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3583,"name":"uint256","nodeType":"ElementaryTypeName","src":"17272:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3593,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3587,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"17297:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783063","id":3588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17309:4:7","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"17297:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17291:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3585,"name":"uint8","nodeType":"ElementaryTypeName","src":"17291:5:7","typeDescriptions":{}}},"id":3590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17291:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17318:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"17291:28:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"17272:47:7"},{"expression":{"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3594,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3581,"src":"17334:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3595,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"17340:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3596,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"17333:14:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3599,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"17371:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3600,"name":"sizeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3584,"src":"17379:8:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3597,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"17350:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17361:9:7","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4063,"src":"17350:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":3601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17350:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"17333:55:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3603,"nodeType":"ExpressionStatement","src":"17333:55:7"}]},{"assignments":[3606],"declarations":[{"constant":false,"id":3606,"mutability":"mutable","name":"nrindex","nameLocation":"17462:7:7","nodeType":"VariableDeclaration","scope":3657,"src":"17454:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3605,"name":"uint256","nodeType":"ElementaryTypeName","src":"17454:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3610,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3607,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"17472:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3608,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3581,"src":"17481:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17472:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17454:31:7"},{"assignments":[3612],"declarations":[{"constant":false,"id":3612,"mutability":"mutable","name":"sapientImageHash","nameLocation":"17580:16:7","nodeType":"VariableDeclaration","scope":3657,"src":"17572:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3611,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17572:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3623,"initialValue":{"arguments":[{"id":3617,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2803,"src":"17638:8:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"baseExpression":{"id":3618,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"17648:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3620,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3606,"src":"17666:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"17648:26:7","startExpression":{"id":3619,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"17659:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"expression":{"arguments":[{"id":3614,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3569,"src":"17608:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3613,"name":"ISapient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"17599:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISapient_$3944_$","typeString":"type(contract ISapient)"}},"id":3615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17599:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISapient_$3944","typeString":"contract ISapient"}},"id":3616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17614:23:7","memberName":"recoverSapientSignature","nodeType":"MemberAccess","referencedDeclaration":3943,"src":"17599:38:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_struct$_Decoded_$854_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes memory) view external returns (bytes32)"}},"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17599:76:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"17572:103:7"},{"expression":{"id":3626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3624,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"17687:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3625,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3606,"src":"17696:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17687:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3627,"nodeType":"ExpressionStatement","src":"17687:16:7"},{"expression":{"id":3630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3628,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"17772:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3629,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3546,"src":"17782:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17772:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3631,"nodeType":"ExpressionStatement","src":"17772:20:7"},{"assignments":[3633],"declarations":[{"constant":false,"id":3633,"mutability":"mutable","name":"node","nameLocation":"17812:4:7","nodeType":"VariableDeclaration","scope":3657,"src":"17804:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17804:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3639,"initialValue":{"arguments":[{"id":3635,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3569,"src":"17835:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3636,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3546,"src":"17841:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3637,"name":"sapientImageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"17853:16:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3634,"name":"_leafForSapient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"17819:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,uint256,bytes32) pure returns (bytes32)"}},"id":3638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17819:51:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"17804:66:7"},{"expression":{"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3640,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"17882:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3641,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"17889:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17905:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17897:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3642,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17897:7:7","typeDescriptions":{}}},"id":3645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17897:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"17889:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3652,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"17944:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"17889:59:7","trueExpression":{"arguments":[{"id":3649,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"17930:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3650,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3633,"src":"17936:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3647,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"17910:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":3648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17919:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"17910:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17910:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"17882:66:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3655,"nodeType":"ExpressionStatement","src":"17882:66:7"},{"id":3656,"nodeType":"Continue","src":"17960:8:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3659,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"18037:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3660,"name":"FLAG_SIGNATURE_SAPIENT_COMPACT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2192,"src":"18045:30:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18037:38:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3774,"nodeType":"IfStatement","src":"18033:1312:7","trueBody":{"id":3773,"nodeType":"Block","src":"18077:1268:7","statements":[{"assignments":[3663],"declarations":[{"constant":false,"id":3663,"mutability":"mutable","name":"addrWeight","nameLocation":"18328:10:7","nodeType":"VariableDeclaration","scope":3773,"src":"18322:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3662,"name":"uint8","nodeType":"ElementaryTypeName","src":"18322:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3670,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3666,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"18347:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783033","id":3667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18359:4:7","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x03"},"src":"18347:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18341:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3664,"name":"uint8","nodeType":"ElementaryTypeName","src":"18341:5:7","typeDescriptions":{}}},"id":3669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18341:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"18322:42:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3671,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"18380:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18394:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18380:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3684,"nodeType":"IfStatement","src":"18376:99:7","trueBody":{"id":3683,"nodeType":"Block","src":"18397:78:7","statements":[{"expression":{"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3674,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"18412:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3675,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"18424:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3676,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"18411:20:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3679,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"18455:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3677,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"18434:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18445:9:7","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":3983,"src":"18434:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":3680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18434:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"18411:51:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3682,"nodeType":"ExpressionStatement","src":"18411:51:7"}]}},{"assignments":[3686],"declarations":[{"constant":false,"id":3686,"mutability":"mutable","name":"addr","nameLocation":"18495:4:7","nodeType":"VariableDeclaration","scope":3773,"src":"18487:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3685,"name":"address","nodeType":"ElementaryTypeName","src":"18487:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3687,"nodeType":"VariableDeclarationStatement","src":"18487:12:7"},{"expression":{"id":3695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3688,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3686,"src":"18512:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3689,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"18518:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3690,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"18511:14:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3693,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"18551:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3691,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"18528:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18539:11:7","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":4102,"src":"18528:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":3694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18528:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"18511:47:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3696,"nodeType":"ExpressionStatement","src":"18511:47:7"},{"assignments":[3698],"declarations":[{"constant":false,"id":3698,"mutability":"mutable","name":"sizeSize","nameLocation":"18612:8:7","nodeType":"VariableDeclaration","scope":3773,"src":"18604:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3697,"name":"uint256","nodeType":"ElementaryTypeName","src":"18604:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3707,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3701,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2822,"src":"18629:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783063","id":3702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18641:4:7","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"18629:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18623:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3699,"name":"uint8","nodeType":"ElementaryTypeName","src":"18623:5:7","typeDescriptions":{}}},"id":3704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18623:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18650:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"18623:28:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"18604:47:7"},{"assignments":[3709],"declarations":[{"constant":false,"id":3709,"mutability":"mutable","name":"size","nameLocation":"18671:4:7","nodeType":"VariableDeclaration","scope":3773,"src":"18663:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3708,"name":"uint256","nodeType":"ElementaryTypeName","src":"18663:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3710,"nodeType":"VariableDeclarationStatement","src":"18663:12:7"},{"expression":{"id":3719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3711,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3709,"src":"18688:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3712,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"18694:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3713,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"18687:14:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3716,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"18725:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3717,"name":"sizeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"18733:8:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3714,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"18704:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18715:9:7","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4063,"src":"18704:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":3718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18704:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"18687:55:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3720,"nodeType":"ExpressionStatement","src":"18687:55:7"},{"assignments":[3722],"declarations":[{"constant":false,"id":3722,"mutability":"mutable","name":"nrindex","nameLocation":"18804:7:7","nodeType":"VariableDeclaration","scope":3773,"src":"18796:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3721,"name":"uint256","nodeType":"ElementaryTypeName","src":"18796:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3726,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3723,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"18814:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3724,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3709,"src":"18823:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18814:13:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18796:31:7"},{"assignments":[3728],"declarations":[{"constant":false,"id":3728,"mutability":"mutable","name":"sapientImageHash","nameLocation":"18922:16:7","nodeType":"VariableDeclaration","scope":3773,"src":"18914:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3727,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18914:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3739,"initialValue":{"arguments":[{"id":3733,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"19006:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":3734,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"19015:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3736,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3722,"src":"19033:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"19015:26:7","startExpression":{"id":3735,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"19026:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"expression":{"arguments":[{"id":3730,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3686,"src":"18969:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3729,"name":"ISapientCompact","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3956,"src":"18953:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISapientCompact_$3956_$","typeString":"type(contract ISapientCompact)"}},"id":3731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18953:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISapientCompact_$3956","typeString":"contract ISapientCompact"}},"id":3732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18975:30:7","memberName":"recoverSapientSignatureCompact","nodeType":"MemberAccess","referencedDeclaration":3955,"src":"18953:52:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes memory) view external returns (bytes32)"}},"id":3738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18953:89:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"18914:128:7"},{"expression":{"id":3742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3740,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"19054:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3741,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3722,"src":"19063:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19054:16:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3743,"nodeType":"ExpressionStatement","src":"19054:16:7"},{"expression":{"id":3746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3744,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"19138:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3745,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"19148:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19138:20:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3747,"nodeType":"ExpressionStatement","src":"19138:20:7"},{"assignments":[3749],"declarations":[{"constant":false,"id":3749,"mutability":"mutable","name":"node","nameLocation":"19178:4:7","nodeType":"VariableDeclaration","scope":3773,"src":"19170:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3748,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19170:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3755,"initialValue":{"arguments":[{"id":3751,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3686,"src":"19201:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3752,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"19207:10:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3753,"name":"sapientImageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3728,"src":"19219:16:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3750,"name":"_leafForSapient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"19185:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,uint256,bytes32) pure returns (bytes32)"}},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19185:51:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"19170:66:7"},{"expression":{"id":3770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3756,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"19248:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3757,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"19255:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19271:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19263:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3758,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19263:7:7","typeDescriptions":{}}},"id":3761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19263:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"19255:18:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3768,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3749,"src":"19310:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19255:59:7","trueExpression":{"arguments":[{"id":3765,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2812,"src":"19296:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3766,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3749,"src":"19302:4:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3763,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"19276:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$4214_$","typeString":"type(library LibOptim)"}},"id":3764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19285:10:7","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4175,"src":"19276:19:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19276:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"19248:66:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3771,"nodeType":"ExpressionStatement","src":"19248:66:7"},{"id":3772,"nodeType":"Continue","src":"19326:8:7"}]}},{"errorCall":{"arguments":[{"id":3776,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2834,"src":"19383:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3775,"name":"InvalidSignatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2228,"src":"19362:20:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":3777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19362:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3778,"nodeType":"RevertStatement","src":"19355:33:7"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2817,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"8592:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2818,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"8601:10:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8612:6:7","memberName":"length","nodeType":"MemberAccess","src":"8601:17:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8592:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3780,"nodeType":"WhileStatement","src":"8585:10812:7"}]}]},"implemented":true,"kind":"function","modifiers":[],"name":"recoverBranch","nameLocation":"8332:13:7","parameters":{"id":2808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2803,"mutability":"mutable","name":"_payload","nameLocation":"8374:8:7","nodeType":"VariableDeclaration","scope":3783,"src":"8351:31:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":2802,"nodeType":"UserDefinedTypeName","pathNode":{"id":2801,"name":"Payload.Decoded","nameLocations":["8351:7:7","8359:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"8351:15:7"},"referencedDeclaration":854,"src":"8351:15:7","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":2805,"mutability":"mutable","name":"_opHash","nameLocation":"8396:7:7","nodeType":"VariableDeclaration","scope":3783,"src":"8388:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2804,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8388:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2807,"mutability":"mutable","name":"_signature","nameLocation":"8424:10:7","nodeType":"VariableDeclaration","scope":3783,"src":"8409:25:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2806,"name":"bytes","nodeType":"ElementaryTypeName","src":"8409:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8345:93:7"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"weight","nameLocation":"8470:6:7","nodeType":"VariableDeclaration","scope":3783,"src":"8462:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2809,"name":"uint256","nodeType":"ElementaryTypeName","src":"8462:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2812,"mutability":"mutable","name":"root","nameLocation":"8486:4:7","nodeType":"VariableDeclaration","scope":3783,"src":"8478:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2811,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8478:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8461:30:7"},"scope":3784,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"BaseSig","contractDependencies":[],"contractKind":"library","documentation":{"id":2159,"nodeType":"StructuredDocumentation","src":"506:165:7","text":"@title BaseSig\n @author Agustin Aguilar, Michael Standen, William Hua, Shun Kakinoki\n @notice Library for recovering signatures from the base-auth payload"},"fullyImplemented":true,"linearizedBaseContracts":[3784],"name":"BaseSig","nameLocation":"679:7:7","scope":3785,"usedErrors":[2201,2210,2217,2223,2228,2231],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/auth/SelfAuth.sol":{"id":8,"ast":{"absolutePath":"src/modules/auth/SelfAuth.sol","id":3812,"exportedSymbols":{"SelfAuth":[3811]},"nodeType":"SourceUnit","src":"39:426:8","nodes":[{"id":3786,"nodeType":"PragmaDirective","src":"39:24:8","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":3811,"nodeType":"ContractDefinition","src":"206:258:8","nodes":[{"id":3792,"nodeType":"ErrorDefinition","src":"313:32:8","nodes":[],"documentation":{"id":3788,"nodeType":"StructuredDocumentation","src":"238:72:8","text":"@notice Error thrown when the caller is not the same as the contract"},"errorSelector":"a19dbf00","name":"OnlySelf","nameLocation":"319:8:8","parameters":{"id":3791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3790,"mutability":"mutable","name":"_sender","nameLocation":"336:7:8","nodeType":"VariableDeclaration","scope":3792,"src":"328:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3789,"name":"address","nodeType":"ElementaryTypeName","src":"328:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"327:17:8"}},{"id":3810,"nodeType":"ModifierDefinition","src":"349:112:8","nodes":[],"body":{"id":3809,"nodeType":"Block","src":"369:92:8","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3794,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"379:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"383:6:8","memberName":"sender","nodeType":"MemberAccess","src":"379:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":3798,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"401:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_SelfAuth_$3811","typeString":"contract SelfAuth"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfAuth_$3811","typeString":"contract SelfAuth"}],"id":3797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"393:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3796,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:8","typeDescriptions":{}}},"id":3799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"393:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"379:27:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3807,"nodeType":"IfStatement","src":"375:75:8","trueBody":{"id":3806,"nodeType":"Block","src":"408:42:8","statements":[{"errorCall":{"arguments":[{"expression":{"id":3802,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"432:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"436:6:8","memberName":"sender","nodeType":"MemberAccess","src":"432:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3801,"name":"OnlySelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3792,"src":"423:8:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"423:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3805,"nodeType":"RevertStatement","src":"416:27:8"}]}},{"id":3808,"nodeType":"PlaceholderStatement","src":"455:1:8"}]},"name":"onlySelf","nameLocation":"358:8:8","parameters":{"id":3793,"nodeType":"ParameterList","parameters":[],"src":"366:2:8"},"virtual":false,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"SelfAuth","contractDependencies":[],"contractKind":"contract","documentation":{"id":3787,"nodeType":"StructuredDocumentation","src":"65:141:8","text":"@title SelfAuth\n @author Agustin Aguilar, Michael Standen\n @notice Modifier for checking if the caller is the same as the contract"},"fullyImplemented":true,"linearizedBaseContracts":[3811],"name":"SelfAuth","nameLocation":"224:8:8","scope":3812,"usedErrors":[3792],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/IAuth.sol":{"id":9,"ast":{"absolutePath":"src/modules/interfaces/IAuth.sol","id":3828,"exportedSymbols":{"IAuth":[3827]},"nodeType":"SourceUnit","src":"39:355:9","nodes":[{"id":3813,"nodeType":"PragmaDirective","src":"39:24:9","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":3827,"nodeType":"ContractDefinition","src":"192:201:9","nodes":[{"id":3821,"nodeType":"FunctionDefinition","src":"221:95:9","nodes":[],"implemented":false,"kind":"function","modifiers":[],"name":"_isValidImage","nameLocation":"230:13:9","parameters":{"id":3817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3816,"mutability":"mutable","name":"imageHash","nameLocation":"257:9:9","nodeType":"VariableDeclaration","scope":3821,"src":"249:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3815,"name":"bytes32","nodeType":"ElementaryTypeName","src":"249:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"243:27:9"},"returnParameters":{"id":3820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3819,"mutability":"mutable","name":"isValid","nameLocation":"307:7:9","nodeType":"VariableDeclaration","scope":3821,"src":"302:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3818,"name":"bool","nodeType":"ElementaryTypeName","src":"302:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"301:14:9"},"scope":3827,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":3826,"nodeType":"FunctionDefinition","src":"320:70:9","nodes":[],"implemented":false,"kind":"function","modifiers":[],"name":"_updateImageHash","nameLocation":"329:16:9","parameters":{"id":3824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3823,"mutability":"mutable","name":"imageHash","nameLocation":"359:9:9","nodeType":"VariableDeclaration","scope":3826,"src":"351:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3822,"name":"bytes32","nodeType":"ElementaryTypeName","src":"351:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"345:27:9"},"returnParameters":{"id":3825,"nodeType":"ParameterList","parameters":[],"src":"389:0:9"},"scope":3827,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"IAuth","contractDependencies":[],"contractKind":"contract","documentation":{"id":3814,"nodeType":"StructuredDocumentation","src":"65:127:9","text":"@title IAuth\n @author Agustin Aguilar, Michael Standen, William Hua\n @notice Internal interface for the auth modules"},"fullyImplemented":false,"linearizedBaseContracts":[3827],"name":"IAuth","nameLocation":"210:5:9","scope":3828,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/ICheckpointer.sol":{"id":10,"ast":{"absolutePath":"src/modules/interfaces/ICheckpointer.sol","id":3849,"exportedSymbols":{"ICheckpointer":[3848],"Snapshot":[3835]},"nodeType":"SourceUnit","src":"39:628:10","nodes":[{"id":3829,"nodeType":"PragmaDirective","src":"39:24:10","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":3835,"nodeType":"StructDefinition","src":"198:62:10","nodes":[],"canonicalName":"Snapshot","documentation":{"id":3830,"nodeType":"StructuredDocumentation","src":"65:133:10","text":"@notice Snapshot for a specific wallet\n @param imageHash Image hash of the wallet\n @param checkpoint Checkpoint identifier"},"members":[{"constant":false,"id":3832,"mutability":"mutable","name":"imageHash","nameLocation":"226:9:10","nodeType":"VariableDeclaration","scope":3835,"src":"218:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3831,"name":"bytes32","nodeType":"ElementaryTypeName","src":"218:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3834,"mutability":"mutable","name":"checkpoint","nameLocation":"247:10:10","nodeType":"VariableDeclaration","scope":3835,"src":"239:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3833,"name":"uint256","nodeType":"ElementaryTypeName","src":"239:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Snapshot","nameLocation":"205:8:10","scope":3849,"visibility":"public"},{"id":3848,"nodeType":"ContractDefinition","src":"365:301:10","nodes":[{"id":3847,"nodeType":"FunctionDefinition","src":"553:110:10","nodes":[],"documentation":{"id":3837,"nodeType":"StructuredDocumentation","src":"394:156:10","text":"@notice Get the snapshot for a specific wallet\n @param _wallet The wallet address\n @param _proof The proof\n @return snapshot The snapshot"},"functionSelector":"ccce3bc8","implemented":false,"kind":"function","modifiers":[],"name":"snapshotFor","nameLocation":"562:11:10","parameters":{"id":3842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3839,"mutability":"mutable","name":"_wallet","nameLocation":"582:7:10","nodeType":"VariableDeclaration","scope":3847,"src":"574:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3838,"name":"address","nodeType":"ElementaryTypeName","src":"574:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3841,"mutability":"mutable","name":"_proof","nameLocation":"606:6:10","nodeType":"VariableDeclaration","scope":3847,"src":"591:21:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3840,"name":"bytes","nodeType":"ElementaryTypeName","src":"591:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"573:40:10"},"returnParameters":{"id":3846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3845,"mutability":"mutable","name":"snapshot","nameLocation":"653:8:10","nodeType":"VariableDeclaration","scope":3847,"src":"637:24:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_memory_ptr","typeString":"struct Snapshot"},"typeName":{"id":3844,"nodeType":"UserDefinedTypeName","pathNode":{"id":3843,"name":"Snapshot","nameLocations":["637:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":3835,"src":"637:8:10"},"referencedDeclaration":3835,"src":"637:8:10","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$3835_storage_ptr","typeString":"struct Snapshot"}},"visibility":"internal"}],"src":"636:26:10"},"scope":3848,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ICheckpointer","contractDependencies":[],"contractKind":"interface","documentation":{"id":3836,"nodeType":"StructuredDocumentation","src":"262:103:10","text":"@title ICheckpointer\n @author Agustin Aguilar\n @notice Interface for the checkpointer module"},"fullyImplemented":false,"linearizedBaseContracts":[3848],"name":"ICheckpointer","nameLocation":"375:13:10","scope":3849,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/IDelegatedExtension.sol":{"id":11,"ast":{"absolutePath":"src/modules/interfaces/IDelegatedExtension.sol","id":3869,"exportedSymbols":{"IDelegatedExtension":[3868]},"nodeType":"SourceUnit","src":"39:626:11","nodes":[{"id":3850,"nodeType":"PragmaDirective","src":"39:24:11","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":3868,"nodeType":"ContractDefinition","src":"181:483:11","nodes":[{"id":3867,"nodeType":"FunctionDefinition","src":"476:185:11","nodes":[],"documentation":{"id":3852,"nodeType":"StructuredDocumentation","src":"216:257:11","text":"@notice Handle a sequence delegate call\n @param _opHash The operation hash\n @param _startingGas The starting gas\n @param _index The index\n @param _numCalls The number of calls\n @param _space The space\n @param _data The data"},"functionSelector":"4c4e814c","implemented":false,"kind":"function","modifiers":[],"name":"handleSequenceDelegateCall","nameLocation":"485:26:11","parameters":{"id":3865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3854,"mutability":"mutable","name":"_opHash","nameLocation":"525:7:11","nodeType":"VariableDeclaration","scope":3867,"src":"517:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3853,"name":"bytes32","nodeType":"ElementaryTypeName","src":"517:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3856,"mutability":"mutable","name":"_startingGas","nameLocation":"546:12:11","nodeType":"VariableDeclaration","scope":3867,"src":"538:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3855,"name":"uint256","nodeType":"ElementaryTypeName","src":"538:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3858,"mutability":"mutable","name":"_index","nameLocation":"572:6:11","nodeType":"VariableDeclaration","scope":3867,"src":"564:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3857,"name":"uint256","nodeType":"ElementaryTypeName","src":"564:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3860,"mutability":"mutable","name":"_numCalls","nameLocation":"592:9:11","nodeType":"VariableDeclaration","scope":3867,"src":"584:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3859,"name":"uint256","nodeType":"ElementaryTypeName","src":"584:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3862,"mutability":"mutable","name":"_space","nameLocation":"615:6:11","nodeType":"VariableDeclaration","scope":3867,"src":"607:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3861,"name":"uint256","nodeType":"ElementaryTypeName","src":"607:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3864,"mutability":"mutable","name":"_data","nameLocation":"642:5:11","nodeType":"VariableDeclaration","scope":3867,"src":"627:20:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3863,"name":"bytes","nodeType":"ElementaryTypeName","src":"627:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"511:140:11"},"returnParameters":{"id":3866,"nodeType":"ParameterList","parameters":[],"src":"660:0:11"},"scope":3868,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IDelegatedExtension","contractDependencies":[],"contractKind":"interface","documentation":{"id":3851,"nodeType":"StructuredDocumentation","src":"65:116:11","text":"@title IDelegatedExtension\n @author Agustin Aguilar\n @notice Interface for the delegated extension module"},"fullyImplemented":false,"linearizedBaseContracts":[3868],"name":"IDelegatedExtension","nameLocation":"191:19:11","scope":3869,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/IERC1271.sol":{"id":12,"ast":{"absolutePath":"src/modules/interfaces/IERC1271.sol","id":3901,"exportedSymbols":{"IERC1271":[3888],"IERC1271Data":[3900],"IERC1271_MAGIC_VALUE_BYTES":[3876],"IERC1271_MAGIC_VALUE_HASH":[3873]},"nodeType":"SourceUnit","src":"39:1764:12","nodes":[{"id":3870,"nodeType":"PragmaDirective","src":"39:24:12","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":3873,"nodeType":"VariableDeclaration","src":"65:54:12","nodes":[],"constant":true,"mutability":"constant","name":"IERC1271_MAGIC_VALUE_HASH","nameLocation":"81:25:12","scope":3901,"stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3871,"name":"bytes4","nodeType":"ElementaryTypeName","src":"65:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783136323662613765","id":3872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"109:10:12","typeDescriptions":{"typeIdentifier":"t_rational_371636862_by_1","typeString":"int_const 371636862"},"value":"0x1626ba7e"},"visibility":"internal"},{"id":3876,"nodeType":"VariableDeclaration","src":"121:55:12","nodes":[],"constant":true,"mutability":"constant","name":"IERC1271_MAGIC_VALUE_BYTES","nameLocation":"137:26:12","scope":3901,"stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3874,"name":"bytes4","nodeType":"ElementaryTypeName","src":"121:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783230633133623062","id":3875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"166:10:12","typeDescriptions":{"typeIdentifier":"t_rational_549534475_by_1","typeString":"int_const 549534475"},"value":"0x20c13b0b"},"visibility":"internal"},{"id":3888,"nodeType":"ContractDefinition","src":"233:734:12","nodes":[{"id":3887,"nodeType":"FunctionDefinition","src":"854:110:12","nodes":[],"documentation":{"id":3878,"nodeType":"StructuredDocumentation","src":"257:594:12","text":"@notice Verifies whether the provided signature is valid with respect to the provided hash\n @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\"isValidSignature(bytes32,bytes)\")\n > This function MAY modify Ethereum's state\n @param _hash keccak256 hash that was signed\n @param _signature Signature byte array associated with _data\n @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise"},"functionSelector":"1626ba7e","implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"863:16:12","parameters":{"id":3883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3880,"mutability":"mutable","name":"_hash","nameLocation":"888:5:12","nodeType":"VariableDeclaration","scope":3887,"src":"880:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3879,"name":"bytes32","nodeType":"ElementaryTypeName","src":"880:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3882,"mutability":"mutable","name":"_signature","nameLocation":"910:10:12","nodeType":"VariableDeclaration","scope":3887,"src":"895:25:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3881,"name":"bytes","nodeType":"ElementaryTypeName","src":"895:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"879:42:12"},"returnParameters":{"id":3886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3885,"mutability":"mutable","name":"magicValue","nameLocation":"952:10:12","nodeType":"VariableDeclaration","scope":3887,"src":"945:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3884,"name":"bytes4","nodeType":"ElementaryTypeName","src":"945:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"944:19:12"},"scope":3888,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1271","contractDependencies":[],"contractKind":"interface","documentation":{"id":3877,"nodeType":"StructuredDocumentation","src":"179:54:12","text":"@title IERC1271\n @notice Interface for ERC1271"},"fullyImplemented":false,"linearizedBaseContracts":[3888],"name":"IERC1271","nameLocation":"243:8:12","scope":3901,"usedErrors":[],"usedEvents":[]},{"id":3900,"nodeType":"ContractDefinition","src":"1069:733:12","nodes":[{"id":3899,"nodeType":"FunctionDefinition","src":"1682:117:12","nodes":[],"documentation":{"id":3890,"nodeType":"StructuredDocumentation","src":"1097:582:12","text":"@notice Verifies whether the provided signature is valid with respect to the provided hash\n @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n > This function MAY modify Ethereum's state\n @param _data Data that was signed\n @param _signature Signature byte array associated with _data\n @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise"},"functionSelector":"20c13b0b","implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"1691:16:12","parameters":{"id":3895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3892,"mutability":"mutable","name":"_data","nameLocation":"1723:5:12","nodeType":"VariableDeclaration","scope":3899,"src":"1708:20:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3891,"name":"bytes","nodeType":"ElementaryTypeName","src":"1708:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3894,"mutability":"mutable","name":"_signature","nameLocation":"1745:10:12","nodeType":"VariableDeclaration","scope":3899,"src":"1730:25:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3893,"name":"bytes","nodeType":"ElementaryTypeName","src":"1730:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1707:49:12"},"returnParameters":{"id":3898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3897,"mutability":"mutable","name":"magicValue","nameLocation":"1787:10:12","nodeType":"VariableDeclaration","scope":3899,"src":"1780:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3896,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1780:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1779:19:12"},"scope":3900,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1271Data","contractDependencies":[],"contractKind":"interface","documentation":{"id":3889,"nodeType":"StructuredDocumentation","src":"969:100:12","text":"@title IERC1271Data\n @notice Deprecated interface for ERC1271 using bytes instead of bytes32"},"fullyImplemented":false,"linearizedBaseContracts":[3900],"name":"IERC1271Data","nameLocation":"1079:12:12","scope":3901,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/IPartialAuth.sol":{"id":13,"ast":{"absolutePath":"src/modules/interfaces/IPartialAuth.sol","id":3928,"exportedSymbols":{"IPartialAuth":[3927],"Payload":[1488]},"nodeType":"SourceUnit","src":"39:913:13","nodes":[{"id":3902,"nodeType":"PragmaDirective","src":"39:24:13","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":3904,"nodeType":"ImportDirective","src":"65:41:13","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"../Payload.sol","nameLocation":"-1:-1:-1","scope":3928,"sourceUnit":1489,"symbolAliases":[{"foreign":{"id":3903,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"74:7:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":3927,"nodeType":"ContractDefinition","src":"210:741:13","nodes":[{"id":3926,"nodeType":"FunctionDefinition","src":"655:293:13","nodes":[],"documentation":{"id":3906,"nodeType":"StructuredDocumentation","src":"238:414:13","text":"@notice Recover the partial signature\n @param _payload The payload\n @param _signature The signature to recover\n @return threshold The signature threshold\n @return weight The derived weight\n @return isValidImage Whether the image hash is valid\n @return imageHash The derived image hash\n @return checkpoint The checkpoint identifier\n @return opHash The hash of the payload"},"functionSelector":"ad55366b","implemented":false,"kind":"function","modifiers":[],"name":"recoverPartialSignature","nameLocation":"664:23:13","parameters":{"id":3912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3909,"mutability":"mutable","name":"_payload","nameLocation":"718:8:13","nodeType":"VariableDeclaration","scope":3926,"src":"693:33:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_calldata_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":3908,"nodeType":"UserDefinedTypeName","pathNode":{"id":3907,"name":"Payload.Decoded","nameLocations":["693:7:13","701:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"693:15:13"},"referencedDeclaration":854,"src":"693:15:13","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":3911,"mutability":"mutable","name":"_signature","nameLocation":"747:10:13","nodeType":"VariableDeclaration","scope":3926,"src":"732:25:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3910,"name":"bytes","nodeType":"ElementaryTypeName","src":"732:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"687:74:13"},"returnParameters":{"id":3925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3914,"mutability":"mutable","name":"threshold","nameLocation":"812:9:13","nodeType":"VariableDeclaration","scope":3926,"src":"804:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3913,"name":"uint256","nodeType":"ElementaryTypeName","src":"804:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3916,"mutability":"mutable","name":"weight","nameLocation":"837:6:13","nodeType":"VariableDeclaration","scope":3926,"src":"829:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3915,"name":"uint256","nodeType":"ElementaryTypeName","src":"829:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3918,"mutability":"mutable","name":"isValidImage","nameLocation":"856:12:13","nodeType":"VariableDeclaration","scope":3926,"src":"851:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3917,"name":"bool","nodeType":"ElementaryTypeName","src":"851:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3920,"mutability":"mutable","name":"imageHash","nameLocation":"884:9:13","nodeType":"VariableDeclaration","scope":3926,"src":"876:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3919,"name":"bytes32","nodeType":"ElementaryTypeName","src":"876:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3922,"mutability":"mutable","name":"checkpoint","nameLocation":"909:10:13","nodeType":"VariableDeclaration","scope":3926,"src":"901:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3921,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3924,"mutability":"mutable","name":"opHash","nameLocation":"935:6:13","nodeType":"VariableDeclaration","scope":3926,"src":"927:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3923,"name":"bytes32","nodeType":"ElementaryTypeName","src":"927:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"796:151:13"},"scope":3927,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IPartialAuth","contractDependencies":[],"contractKind":"interface","documentation":{"id":3905,"nodeType":"StructuredDocumentation","src":"108:102:13","text":"@title IPartialAuth\n @author Agustin Aguilar\n @notice Interface for the partial auth module"},"fullyImplemented":false,"linearizedBaseContracts":[3927],"name":"IPartialAuth","nameLocation":"220:12:13","scope":3928,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/ISapient.sol":{"id":14,"ast":{"absolutePath":"src/modules/interfaces/ISapient.sol","id":3957,"exportedSymbols":{"ISapient":[3944],"ISapientCompact":[3956],"Payload":[1488]},"nodeType":"SourceUnit","src":"39:1460:14","nodes":[{"id":3929,"nodeType":"PragmaDirective","src":"39:24:14","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":3931,"nodeType":"ImportDirective","src":"65:41:14","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"../Payload.sol","nameLocation":"-1:-1:-1","scope":3957,"sourceUnit":1489,"symbolAliases":[{"foreign":{"id":3930,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"74:7:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":3944,"nodeType":"ContractDefinition","src":"384:413:14","nodes":[{"id":3943,"nodeType":"FunctionDefinition","src":"647:147:14","nodes":[],"documentation":{"id":3933,"nodeType":"StructuredDocumentation","src":"408:236:14","text":"@notice Recovers the image hash of a given signature\n @param payload The payload to recover the signature from\n @param signature The signature to recover the image hash from\n @return imageHash The recovered image hash"},"functionSelector":"13792a4a","implemented":false,"kind":"function","modifiers":[],"name":"recoverSapientSignature","nameLocation":"656:23:14","parameters":{"id":3939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3936,"mutability":"mutable","name":"payload","nameLocation":"710:7:14","nodeType":"VariableDeclaration","scope":3943,"src":"685:32:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_calldata_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":3935,"nodeType":"UserDefinedTypeName","pathNode":{"id":3934,"name":"Payload.Decoded","nameLocations":["685:7:14","693:7:14"],"nodeType":"IdentifierPath","referencedDeclaration":854,"src":"685:15:14"},"referencedDeclaration":854,"src":"685:15:14","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$854_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":3938,"mutability":"mutable","name":"signature","nameLocation":"738:9:14","nodeType":"VariableDeclaration","scope":3943,"src":"723:24:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3937,"name":"bytes","nodeType":"ElementaryTypeName","src":"723:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"679:72:14"},"returnParameters":{"id":3942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3941,"mutability":"mutable","name":"imageHash","nameLocation":"783:9:14","nodeType":"VariableDeclaration","scope":3943,"src":"775:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3940,"name":"bytes32","nodeType":"ElementaryTypeName","src":"775:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"774:19:14"},"scope":3944,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ISapient","contractDependencies":[],"contractKind":"interface","documentation":{"id":3932,"nodeType":"StructuredDocumentation","src":"108:276:14","text":"@title ISapient\n @author Agustin Aguilar, Michael Standen\n @notice Sapient signers take an explicit payload and return their own \"imageHash\" as result\n @dev The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration"},"fullyImplemented":false,"linearizedBaseContracts":[3944],"name":"ISapient","nameLocation":"394:8:14","scope":3957,"usedErrors":[],"usedEvents":[]},{"id":3956,"nodeType":"ContractDefinition","src":"1082:416:14","nodes":[{"id":3955,"nodeType":"FunctionDefinition","src":"1359:136:14","nodes":[],"documentation":{"id":3946,"nodeType":"StructuredDocumentation","src":"1113:243:14","text":"@notice Recovers the image hash of a given signature, using a hashed payload\n @param digest The digest of the payload\n @param signature The signature to recover the image hash from\n @return imageHash The recovered image hash"},"functionSelector":"898bd921","implemented":false,"kind":"function","modifiers":[],"name":"recoverSapientSignatureCompact","nameLocation":"1368:30:14","parameters":{"id":3951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3948,"mutability":"mutable","name":"digest","nameLocation":"1412:6:14","nodeType":"VariableDeclaration","scope":3955,"src":"1404:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3947,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1404:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3950,"mutability":"mutable","name":"signature","nameLocation":"1439:9:14","nodeType":"VariableDeclaration","scope":3955,"src":"1424:24:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3949,"name":"bytes","nodeType":"ElementaryTypeName","src":"1424:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1398:54:14"},"returnParameters":{"id":3954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3953,"mutability":"mutable","name":"imageHash","nameLocation":"1484:9:14","nodeType":"VariableDeclaration","scope":3955,"src":"1476:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3952,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1476:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1475:19:14"},"scope":3956,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ISapientCompact","contractDependencies":[],"contractKind":"interface","documentation":{"id":3945,"nodeType":"StructuredDocumentation","src":"799:283:14","text":"@title ISapientCompact\n @author Agustin Aguilar, Michael Standen\n @notice Sapient signers take a compacted payload and return their own \"imageHash\" as result\n @dev The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration"},"fullyImplemented":false,"linearizedBaseContracts":[3956],"name":"ISapientCompact","nameLocation":"1092:15:14","scope":3957,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/utils/LibBytes.sol":{"id":15,"ast":{"absolutePath":"src/utils/LibBytes.sol","id":4161,"exportedSymbols":{"LibBytes":[4160]},"nodeType":"SourceUnit","src":"39:3970:15","nodes":[{"id":3958,"nodeType":"PragmaDirective","src":"39:24:15","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":4160,"nodeType":"ContractDefinition","src":"432:3576:15","nodes":[{"id":3970,"nodeType":"FunctionDefinition","src":"454:225:15","nodes":[],"body":{"id":3969,"nodeType":"Block","src":"560:119:15","nodes":[],"statements":[{"AST":{"nativeSrc":"575:100:15","nodeType":"YulBlock","src":"575:100:15","statements":[{"nativeSrc":"583:38:15","nodeType":"YulVariableDeclaration","src":"583:38:15","value":{"arguments":[{"name":"_data.offset","nativeSrc":"608:12:15","nodeType":"YulIdentifier","src":"608:12:15"}],"functionName":{"name":"calldataload","nativeSrc":"595:12:15","nodeType":"YulIdentifier","src":"595:12:15"},"nativeSrc":"595:26:15","nodeType":"YulFunctionCall","src":"595:26:15"},"variables":[{"name":"word","nativeSrc":"587:4:15","nodeType":"YulTypedName","src":"587:4:15","type":""}]},{"nativeSrc":"628:19:15","nodeType":"YulAssignment","src":"628:19:15","value":{"arguments":[{"kind":"number","nativeSrc":"637:3:15","nodeType":"YulLiteral","src":"637:3:15","type":"","value":"248"},{"name":"word","nativeSrc":"642:4:15","nodeType":"YulIdentifier","src":"642:4:15"}],"functionName":{"name":"shr","nativeSrc":"633:3:15","nodeType":"YulIdentifier","src":"633:3:15"},"nativeSrc":"633:14:15","nodeType":"YulFunctionCall","src":"633:14:15"},"variableNames":[{"name":"a","nativeSrc":"628:1:15","nodeType":"YulIdentifier","src":"628:1:15"}]},{"nativeSrc":"654:15:15","nodeType":"YulAssignment","src":"654:15:15","value":{"kind":"number","nativeSrc":"668:1:15","nodeType":"YulLiteral","src":"668:1:15","type":"","value":"1"},"variableNames":[{"name":"newPointer","nativeSrc":"654:10:15","nodeType":"YulIdentifier","src":"654:10:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3961,"isOffset":true,"isSlot":false,"src":"608:12:15","suffix":"offset","valueSize":1},{"declaration":3964,"isOffset":false,"isSlot":false,"src":"628:1:15","valueSize":1},{"declaration":3966,"isOffset":false,"isSlot":false,"src":"654:10:15","valueSize":1}],"id":3968,"nodeType":"InlineAssembly","src":"566:109:15"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readFirstUint8","nameLocation":"463:14:15","parameters":{"id":3962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3961,"mutability":"mutable","name":"_data","nameLocation":"498:5:15","nodeType":"VariableDeclaration","scope":3970,"src":"483:20:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3960,"name":"bytes","nodeType":"ElementaryTypeName","src":"483:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"477:30:15"},"returnParameters":{"id":3967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3964,"mutability":"mutable","name":"a","nameLocation":"537:1:15","nodeType":"VariableDeclaration","scope":3970,"src":"531:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3963,"name":"uint8","nodeType":"ElementaryTypeName","src":"531:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3966,"mutability":"mutable","name":"newPointer","nameLocation":"548:10:15","nodeType":"VariableDeclaration","scope":3970,"src":"540:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3965,"name":"uint256","nodeType":"ElementaryTypeName","src":"540:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"530:29:15"},"scope":4160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3983,"nodeType":"FunctionDefinition","src":"683:254:15","nodes":[],"body":{"id":3982,"nodeType":"Block","src":"792:145:15","nodes":[],"statements":[{"AST":{"nativeSrc":"807:126:15","nodeType":"YulBlock","src":"807:126:15","statements":[{"nativeSrc":"815:51:15","nodeType":"YulVariableDeclaration","src":"815:51:15","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"844:6:15","nodeType":"YulIdentifier","src":"844:6:15"},{"name":"_data.offset","nativeSrc":"852:12:15","nodeType":"YulIdentifier","src":"852:12:15"}],"functionName":{"name":"add","nativeSrc":"840:3:15","nodeType":"YulIdentifier","src":"840:3:15"},"nativeSrc":"840:25:15","nodeType":"YulFunctionCall","src":"840:25:15"}],"functionName":{"name":"calldataload","nativeSrc":"827:12:15","nodeType":"YulIdentifier","src":"827:12:15"},"nativeSrc":"827:39:15","nodeType":"YulFunctionCall","src":"827:39:15"},"variables":[{"name":"word","nativeSrc":"819:4:15","nodeType":"YulTypedName","src":"819:4:15","type":""}]},{"nativeSrc":"873:19:15","nodeType":"YulAssignment","src":"873:19:15","value":{"arguments":[{"kind":"number","nativeSrc":"882:3:15","nodeType":"YulLiteral","src":"882:3:15","type":"","value":"248"},{"name":"word","nativeSrc":"887:4:15","nodeType":"YulIdentifier","src":"887:4:15"}],"functionName":{"name":"shr","nativeSrc":"878:3:15","nodeType":"YulIdentifier","src":"878:3:15"},"nativeSrc":"878:14:15","nodeType":"YulFunctionCall","src":"878:14:15"},"variableNames":[{"name":"a","nativeSrc":"873:1:15","nodeType":"YulIdentifier","src":"873:1:15"}]},{"nativeSrc":"899:28:15","nodeType":"YulAssignment","src":"899:28:15","value":{"arguments":[{"name":"_index","nativeSrc":"917:6:15","nodeType":"YulIdentifier","src":"917:6:15"},{"kind":"number","nativeSrc":"925:1:15","nodeType":"YulLiteral","src":"925:1:15","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"913:3:15","nodeType":"YulIdentifier","src":"913:3:15"},"nativeSrc":"913:14:15","nodeType":"YulFunctionCall","src":"913:14:15"},"variableNames":[{"name":"newPointer","nativeSrc":"899:10:15","nodeType":"YulIdentifier","src":"899:10:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3972,"isOffset":true,"isSlot":false,"src":"852:12:15","suffix":"offset","valueSize":1},{"declaration":3974,"isOffset":false,"isSlot":false,"src":"844:6:15","valueSize":1},{"declaration":3974,"isOffset":false,"isSlot":false,"src":"917:6:15","valueSize":1},{"declaration":3977,"isOffset":false,"isSlot":false,"src":"873:1:15","valueSize":1},{"declaration":3979,"isOffset":false,"isSlot":false,"src":"899:10:15","valueSize":1}],"id":3981,"nodeType":"InlineAssembly","src":"798:135:15"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint8","nameLocation":"692:9:15","parameters":{"id":3975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3972,"mutability":"mutable","name":"_data","nameLocation":"717:5:15","nodeType":"VariableDeclaration","scope":3983,"src":"702:20:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3971,"name":"bytes","nodeType":"ElementaryTypeName","src":"702:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3974,"mutability":"mutable","name":"_index","nameLocation":"732:6:15","nodeType":"VariableDeclaration","scope":3983,"src":"724:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3973,"name":"uint256","nodeType":"ElementaryTypeName","src":"724:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"701:38:15"},"returnParameters":{"id":3980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3977,"mutability":"mutable","name":"a","nameLocation":"769:1:15","nodeType":"VariableDeclaration","scope":3983,"src":"763:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3976,"name":"uint8","nodeType":"ElementaryTypeName","src":"763:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3979,"mutability":"mutable","name":"newPointer","nameLocation":"780:10:15","nodeType":"VariableDeclaration","scope":3983,"src":"772:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3978,"name":"uint256","nodeType":"ElementaryTypeName","src":"772:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"762:29:15"},"scope":4160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3996,"nodeType":"FunctionDefinition","src":"941:256:15","nodes":[],"body":{"id":3995,"nodeType":"Block","src":"1052:145:15","nodes":[],"statements":[{"AST":{"nativeSrc":"1067:126:15","nodeType":"YulBlock","src":"1067:126:15","statements":[{"nativeSrc":"1075:51:15","nodeType":"YulVariableDeclaration","src":"1075:51:15","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"1104:6:15","nodeType":"YulIdentifier","src":"1104:6:15"},{"name":"_data.offset","nativeSrc":"1112:12:15","nodeType":"YulIdentifier","src":"1112:12:15"}],"functionName":{"name":"add","nativeSrc":"1100:3:15","nodeType":"YulIdentifier","src":"1100:3:15"},"nativeSrc":"1100:25:15","nodeType":"YulFunctionCall","src":"1100:25:15"}],"functionName":{"name":"calldataload","nativeSrc":"1087:12:15","nodeType":"YulIdentifier","src":"1087:12:15"},"nativeSrc":"1087:39:15","nodeType":"YulFunctionCall","src":"1087:39:15"},"variables":[{"name":"word","nativeSrc":"1079:4:15","nodeType":"YulTypedName","src":"1079:4:15","type":""}]},{"nativeSrc":"1133:19:15","nodeType":"YulAssignment","src":"1133:19:15","value":{"arguments":[{"kind":"number","nativeSrc":"1142:3:15","nodeType":"YulLiteral","src":"1142:3:15","type":"","value":"240"},{"name":"word","nativeSrc":"1147:4:15","nodeType":"YulIdentifier","src":"1147:4:15"}],"functionName":{"name":"shr","nativeSrc":"1138:3:15","nodeType":"YulIdentifier","src":"1138:3:15"},"nativeSrc":"1138:14:15","nodeType":"YulFunctionCall","src":"1138:14:15"},"variableNames":[{"name":"a","nativeSrc":"1133:1:15","nodeType":"YulIdentifier","src":"1133:1:15"}]},{"nativeSrc":"1159:28:15","nodeType":"YulAssignment","src":"1159:28:15","value":{"arguments":[{"name":"_index","nativeSrc":"1177:6:15","nodeType":"YulIdentifier","src":"1177:6:15"},{"kind":"number","nativeSrc":"1185:1:15","nodeType":"YulLiteral","src":"1185:1:15","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"1173:3:15","nodeType":"YulIdentifier","src":"1173:3:15"},"nativeSrc":"1173:14:15","nodeType":"YulFunctionCall","src":"1173:14:15"},"variableNames":[{"name":"newPointer","nativeSrc":"1159:10:15","nodeType":"YulIdentifier","src":"1159:10:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3985,"isOffset":true,"isSlot":false,"src":"1112:12:15","suffix":"offset","valueSize":1},{"declaration":3987,"isOffset":false,"isSlot":false,"src":"1104:6:15","valueSize":1},{"declaration":3987,"isOffset":false,"isSlot":false,"src":"1177:6:15","valueSize":1},{"declaration":3990,"isOffset":false,"isSlot":false,"src":"1133:1:15","valueSize":1},{"declaration":3992,"isOffset":false,"isSlot":false,"src":"1159:10:15","valueSize":1}],"id":3994,"nodeType":"InlineAssembly","src":"1058:135:15"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint16","nameLocation":"950:10:15","parameters":{"id":3988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3985,"mutability":"mutable","name":"_data","nameLocation":"976:5:15","nodeType":"VariableDeclaration","scope":3996,"src":"961:20:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3984,"name":"bytes","nodeType":"ElementaryTypeName","src":"961:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3987,"mutability":"mutable","name":"_index","nameLocation":"991:6:15","nodeType":"VariableDeclaration","scope":3996,"src":"983:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3986,"name":"uint256","nodeType":"ElementaryTypeName","src":"983:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"960:38:15"},"returnParameters":{"id":3993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3990,"mutability":"mutable","name":"a","nameLocation":"1029:1:15","nodeType":"VariableDeclaration","scope":3996,"src":"1022:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3989,"name":"uint16","nodeType":"ElementaryTypeName","src":"1022:6:15","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":3992,"mutability":"mutable","name":"newPointer","nameLocation":"1040:10:15","nodeType":"VariableDeclaration","scope":3996,"src":"1032:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3991,"name":"uint256","nodeType":"ElementaryTypeName","src":"1032:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1021:30:15"},"scope":4160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4009,"nodeType":"FunctionDefinition","src":"1201:256:15","nodes":[],"body":{"id":4008,"nodeType":"Block","src":"1312:145:15","nodes":[],"statements":[{"AST":{"nativeSrc":"1327:126:15","nodeType":"YulBlock","src":"1327:126:15","statements":[{"nativeSrc":"1335:51:15","nodeType":"YulVariableDeclaration","src":"1335:51:15","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"1364:6:15","nodeType":"YulIdentifier","src":"1364:6:15"},{"name":"_data.offset","nativeSrc":"1372:12:15","nodeType":"YulIdentifier","src":"1372:12:15"}],"functionName":{"name":"add","nativeSrc":"1360:3:15","nodeType":"YulIdentifier","src":"1360:3:15"},"nativeSrc":"1360:25:15","nodeType":"YulFunctionCall","src":"1360:25:15"}],"functionName":{"name":"calldataload","nativeSrc":"1347:12:15","nodeType":"YulIdentifier","src":"1347:12:15"},"nativeSrc":"1347:39:15","nodeType":"YulFunctionCall","src":"1347:39:15"},"variables":[{"name":"word","nativeSrc":"1339:4:15","nodeType":"YulTypedName","src":"1339:4:15","type":""}]},{"nativeSrc":"1393:19:15","nodeType":"YulAssignment","src":"1393:19:15","value":{"arguments":[{"kind":"number","nativeSrc":"1402:3:15","nodeType":"YulLiteral","src":"1402:3:15","type":"","value":"232"},{"name":"word","nativeSrc":"1407:4:15","nodeType":"YulIdentifier","src":"1407:4:15"}],"functionName":{"name":"shr","nativeSrc":"1398:3:15","nodeType":"YulIdentifier","src":"1398:3:15"},"nativeSrc":"1398:14:15","nodeType":"YulFunctionCall","src":"1398:14:15"},"variableNames":[{"name":"a","nativeSrc":"1393:1:15","nodeType":"YulIdentifier","src":"1393:1:15"}]},{"nativeSrc":"1419:28:15","nodeType":"YulAssignment","src":"1419:28:15","value":{"arguments":[{"name":"_index","nativeSrc":"1437:6:15","nodeType":"YulIdentifier","src":"1437:6:15"},{"kind":"number","nativeSrc":"1445:1:15","nodeType":"YulLiteral","src":"1445:1:15","type":"","value":"3"}],"functionName":{"name":"add","nativeSrc":"1433:3:15","nodeType":"YulIdentifier","src":"1433:3:15"},"nativeSrc":"1433:14:15","nodeType":"YulFunctionCall","src":"1433:14:15"},"variableNames":[{"name":"newPointer","nativeSrc":"1419:10:15","nodeType":"YulIdentifier","src":"1419:10:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3998,"isOffset":true,"isSlot":false,"src":"1372:12:15","suffix":"offset","valueSize":1},{"declaration":4000,"isOffset":false,"isSlot":false,"src":"1364:6:15","valueSize":1},{"declaration":4000,"isOffset":false,"isSlot":false,"src":"1437:6:15","valueSize":1},{"declaration":4003,"isOffset":false,"isSlot":false,"src":"1393:1:15","valueSize":1},{"declaration":4005,"isOffset":false,"isSlot":false,"src":"1419:10:15","valueSize":1}],"id":4007,"nodeType":"InlineAssembly","src":"1318:135:15"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint24","nameLocation":"1210:10:15","parameters":{"id":4001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3998,"mutability":"mutable","name":"_data","nameLocation":"1236:5:15","nodeType":"VariableDeclaration","scope":4009,"src":"1221:20:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3997,"name":"bytes","nodeType":"ElementaryTypeName","src":"1221:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4000,"mutability":"mutable","name":"_index","nameLocation":"1251:6:15","nodeType":"VariableDeclaration","scope":4009,"src":"1243:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3999,"name":"uint256","nodeType":"ElementaryTypeName","src":"1243:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:38:15"},"returnParameters":{"id":4006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4003,"mutability":"mutable","name":"a","nameLocation":"1289:1:15","nodeType":"VariableDeclaration","scope":4009,"src":"1282:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4002,"name":"uint24","nodeType":"ElementaryTypeName","src":"1282:6:15","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":4005,"mutability":"mutable","name":"newPointer","nameLocation":"1300:10:15","nodeType":"VariableDeclaration","scope":4009,"src":"1292:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4004,"name":"uint256","nodeType":"ElementaryTypeName","src":"1292:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1281:30:15"},"scope":4160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4022,"nodeType":"FunctionDefinition","src":"1461:256:15","nodes":[],"body":{"id":4021,"nodeType":"Block","src":"1572:145:15","nodes":[],"statements":[{"AST":{"nativeSrc":"1587:126:15","nodeType":"YulBlock","src":"1587:126:15","statements":[{"nativeSrc":"1595:51:15","nodeType":"YulVariableDeclaration","src":"1595:51:15","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"1624:6:15","nodeType":"YulIdentifier","src":"1624:6:15"},{"name":"_data.offset","nativeSrc":"1632:12:15","nodeType":"YulIdentifier","src":"1632:12:15"}],"functionName":{"name":"add","nativeSrc":"1620:3:15","nodeType":"YulIdentifier","src":"1620:3:15"},"nativeSrc":"1620:25:15","nodeType":"YulFunctionCall","src":"1620:25:15"}],"functionName":{"name":"calldataload","nativeSrc":"1607:12:15","nodeType":"YulIdentifier","src":"1607:12:15"},"nativeSrc":"1607:39:15","nodeType":"YulFunctionCall","src":"1607:39:15"},"variables":[{"name":"word","nativeSrc":"1599:4:15","nodeType":"YulTypedName","src":"1599:4:15","type":""}]},{"nativeSrc":"1653:19:15","nodeType":"YulAssignment","src":"1653:19:15","value":{"arguments":[{"kind":"number","nativeSrc":"1662:3:15","nodeType":"YulLiteral","src":"1662:3:15","type":"","value":"192"},{"name":"word","nativeSrc":"1667:4:15","nodeType":"YulIdentifier","src":"1667:4:15"}],"functionName":{"name":"shr","nativeSrc":"1658:3:15","nodeType":"YulIdentifier","src":"1658:3:15"},"nativeSrc":"1658:14:15","nodeType":"YulFunctionCall","src":"1658:14:15"},"variableNames":[{"name":"a","nativeSrc":"1653:1:15","nodeType":"YulIdentifier","src":"1653:1:15"}]},{"nativeSrc":"1679:28:15","nodeType":"YulAssignment","src":"1679:28:15","value":{"arguments":[{"name":"_index","nativeSrc":"1697:6:15","nodeType":"YulIdentifier","src":"1697:6:15"},{"kind":"number","nativeSrc":"1705:1:15","nodeType":"YulLiteral","src":"1705:1:15","type":"","value":"8"}],"functionName":{"name":"add","nativeSrc":"1693:3:15","nodeType":"YulIdentifier","src":"1693:3:15"},"nativeSrc":"1693:14:15","nodeType":"YulFunctionCall","src":"1693:14:15"},"variableNames":[{"name":"newPointer","nativeSrc":"1679:10:15","nodeType":"YulIdentifier","src":"1679:10:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4011,"isOffset":true,"isSlot":false,"src":"1632:12:15","suffix":"offset","valueSize":1},{"declaration":4013,"isOffset":false,"isSlot":false,"src":"1624:6:15","valueSize":1},{"declaration":4013,"isOffset":false,"isSlot":false,"src":"1697:6:15","valueSize":1},{"declaration":4016,"isOffset":false,"isSlot":false,"src":"1653:1:15","valueSize":1},{"declaration":4018,"isOffset":false,"isSlot":false,"src":"1679:10:15","valueSize":1}],"id":4020,"nodeType":"InlineAssembly","src":"1578:135:15"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint64","nameLocation":"1470:10:15","parameters":{"id":4014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4011,"mutability":"mutable","name":"_data","nameLocation":"1496:5:15","nodeType":"VariableDeclaration","scope":4022,"src":"1481:20:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4010,"name":"bytes","nodeType":"ElementaryTypeName","src":"1481:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4013,"mutability":"mutable","name":"_index","nameLocation":"1511:6:15","nodeType":"VariableDeclaration","scope":4022,"src":"1503:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4012,"name":"uint256","nodeType":"ElementaryTypeName","src":"1503:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1480:38:15"},"returnParameters":{"id":4019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4016,"mutability":"mutable","name":"a","nameLocation":"1549:1:15","nodeType":"VariableDeclaration","scope":4022,"src":"1542:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4015,"name":"uint64","nodeType":"ElementaryTypeName","src":"1542:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4018,"mutability":"mutable","name":"newPointer","nameLocation":"1560:10:15","nodeType":"VariableDeclaration","scope":4022,"src":"1552:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4017,"name":"uint256","nodeType":"ElementaryTypeName","src":"1552:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1541:30:15"},"scope":4160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4035,"nodeType":"FunctionDefinition","src":"1721:258:15","nodes":[],"body":{"id":4034,"nodeType":"Block","src":"1834:145:15","nodes":[],"statements":[{"AST":{"nativeSrc":"1849:126:15","nodeType":"YulBlock","src":"1849:126:15","statements":[{"nativeSrc":"1857:51:15","nodeType":"YulVariableDeclaration","src":"1857:51:15","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"1886:6:15","nodeType":"YulIdentifier","src":"1886:6:15"},{"name":"_data.offset","nativeSrc":"1894:12:15","nodeType":"YulIdentifier","src":"1894:12:15"}],"functionName":{"name":"add","nativeSrc":"1882:3:15","nodeType":"YulIdentifier","src":"1882:3:15"},"nativeSrc":"1882:25:15","nodeType":"YulFunctionCall","src":"1882:25:15"}],"functionName":{"name":"calldataload","nativeSrc":"1869:12:15","nodeType":"YulIdentifier","src":"1869:12:15"},"nativeSrc":"1869:39:15","nodeType":"YulFunctionCall","src":"1869:39:15"},"variables":[{"name":"word","nativeSrc":"1861:4:15","nodeType":"YulTypedName","src":"1861:4:15","type":""}]},{"nativeSrc":"1915:18:15","nodeType":"YulAssignment","src":"1915:18:15","value":{"arguments":[{"kind":"number","nativeSrc":"1924:2:15","nodeType":"YulLiteral","src":"1924:2:15","type":"","value":"96"},{"name":"word","nativeSrc":"1928:4:15","nodeType":"YulIdentifier","src":"1928:4:15"}],"functionName":{"name":"shr","nativeSrc":"1920:3:15","nodeType":"YulIdentifier","src":"1920:3:15"},"nativeSrc":"1920:13:15","nodeType":"YulFunctionCall","src":"1920:13:15"},"variableNames":[{"name":"a","nativeSrc":"1915:1:15","nodeType":"YulIdentifier","src":"1915:1:15"}]},{"nativeSrc":"1940:29:15","nodeType":"YulAssignment","src":"1940:29:15","value":{"arguments":[{"name":"_index","nativeSrc":"1958:6:15","nodeType":"YulIdentifier","src":"1958:6:15"},{"kind":"number","nativeSrc":"1966:2:15","nodeType":"YulLiteral","src":"1966:2:15","type":"","value":"20"}],"functionName":{"name":"add","nativeSrc":"1954:3:15","nodeType":"YulIdentifier","src":"1954:3:15"},"nativeSrc":"1954:15:15","nodeType":"YulFunctionCall","src":"1954:15:15"},"variableNames":[{"name":"newPointer","nativeSrc":"1940:10:15","nodeType":"YulIdentifier","src":"1940:10:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4024,"isOffset":true,"isSlot":false,"src":"1894:12:15","suffix":"offset","valueSize":1},{"declaration":4026,"isOffset":false,"isSlot":false,"src":"1886:6:15","valueSize":1},{"declaration":4026,"isOffset":false,"isSlot":false,"src":"1958:6:15","valueSize":1},{"declaration":4029,"isOffset":false,"isSlot":false,"src":"1915:1:15","valueSize":1},{"declaration":4031,"isOffset":false,"isSlot":false,"src":"1940:10:15","valueSize":1}],"id":4033,"nodeType":"InlineAssembly","src":"1840:135:15"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint160","nameLocation":"1730:11:15","parameters":{"id":4027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4024,"mutability":"mutable","name":"_data","nameLocation":"1757:5:15","nodeType":"VariableDeclaration","scope":4035,"src":"1742:20:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4023,"name":"bytes","nodeType":"ElementaryTypeName","src":"1742:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4026,"mutability":"mutable","name":"_index","nameLocation":"1772:6:15","nodeType":"VariableDeclaration","scope":4035,"src":"1764:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4025,"name":"uint256","nodeType":"ElementaryTypeName","src":"1764:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1741:38:15"},"returnParameters":{"id":4032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4029,"mutability":"mutable","name":"a","nameLocation":"1811:1:15","nodeType":"VariableDeclaration","scope":4035,"src":"1803:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4028,"name":"uint160","nodeType":"ElementaryTypeName","src":"1803:7:15","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4031,"mutability":"mutable","name":"newPointer","nameLocation":"1822:10:15","nodeType":"VariableDeclaration","scope":4035,"src":"1814:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4030,"name":"uint256","nodeType":"ElementaryTypeName","src":"1814:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1802:31:15"},"scope":4160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4048,"nodeType":"FunctionDefinition","src":"1983:226:15","nodes":[],"body":{"id":4047,"nodeType":"Block","src":"2096:113:15","nodes":[],"statements":[{"AST":{"nativeSrc":"2111:94:15","nodeType":"YulBlock","src":"2111:94:15","statements":[{"nativeSrc":"2119:44:15","nodeType":"YulAssignment","src":"2119:44:15","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"2141:6:15","nodeType":"YulIdentifier","src":"2141:6:15"},{"name":"_data.offset","nativeSrc":"2149:12:15","nodeType":"YulIdentifier","src":"2149:12:15"}],"functionName":{"name":"add","nativeSrc":"2137:3:15","nodeType":"YulIdentifier","src":"2137:3:15"},"nativeSrc":"2137:25:15","nodeType":"YulFunctionCall","src":"2137:25:15"}],"functionName":{"name":"calldataload","nativeSrc":"2124:12:15","nodeType":"YulIdentifier","src":"2124:12:15"},"nativeSrc":"2124:39:15","nodeType":"YulFunctionCall","src":"2124:39:15"},"variableNames":[{"name":"a","nativeSrc":"2119:1:15","nodeType":"YulIdentifier","src":"2119:1:15"}]},{"nativeSrc":"2170:29:15","nodeType":"YulAssignment","src":"2170:29:15","value":{"arguments":[{"name":"_index","nativeSrc":"2188:6:15","nodeType":"YulIdentifier","src":"2188:6:15"},{"kind":"number","nativeSrc":"2196:2:15","nodeType":"YulLiteral","src":"2196:2:15","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2184:3:15","nodeType":"YulIdentifier","src":"2184:3:15"},"nativeSrc":"2184:15:15","nodeType":"YulFunctionCall","src":"2184:15:15"},"variableNames":[{"name":"newPointer","nativeSrc":"2170:10:15","nodeType":"YulIdentifier","src":"2170:10:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4037,"isOffset":true,"isSlot":false,"src":"2149:12:15","suffix":"offset","valueSize":1},{"declaration":4039,"isOffset":false,"isSlot":false,"src":"2141:6:15","valueSize":1},{"declaration":4039,"isOffset":false,"isSlot":false,"src":"2188:6:15","valueSize":1},{"declaration":4042,"isOffset":false,"isSlot":false,"src":"2119:1:15","valueSize":1},{"declaration":4044,"isOffset":false,"isSlot":false,"src":"2170:10:15","valueSize":1}],"id":4046,"nodeType":"InlineAssembly","src":"2102:103:15"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint256","nameLocation":"1992:11:15","parameters":{"id":4040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4037,"mutability":"mutable","name":"_data","nameLocation":"2019:5:15","nodeType":"VariableDeclaration","scope":4048,"src":"2004:20:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4036,"name":"bytes","nodeType":"ElementaryTypeName","src":"2004:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4039,"mutability":"mutable","name":"_index","nameLocation":"2034:6:15","nodeType":"VariableDeclaration","scope":4048,"src":"2026:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4038,"name":"uint256","nodeType":"ElementaryTypeName","src":"2026:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2003:38:15"},"returnParameters":{"id":4045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4042,"mutability":"mutable","name":"a","nameLocation":"2073:1:15","nodeType":"VariableDeclaration","scope":4048,"src":"2065:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4041,"name":"uint256","nodeType":"ElementaryTypeName","src":"2065:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4044,"mutability":"mutable","name":"newPointer","nameLocation":"2084:10:15","nodeType":"VariableDeclaration","scope":4048,"src":"2076:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4043,"name":"uint256","nodeType":"ElementaryTypeName","src":"2076:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2064:31:15"},"scope":4160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4063,"nodeType":"FunctionDefinition","src":"2213:380:15","nodes":[],"body":{"id":4062,"nodeType":"Block","src":"2357:236:15","nodes":[],"statements":[{"AST":{"nativeSrc":"2372:217:15","nodeType":"YulBlock","src":"2372:217:15","statements":[{"nativeSrc":"2380:51:15","nodeType":"YulVariableDeclaration","src":"2380:51:15","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"2409:6:15","nodeType":"YulIdentifier","src":"2409:6:15"},{"name":"_data.offset","nativeSrc":"2417:12:15","nodeType":"YulIdentifier","src":"2417:12:15"}],"functionName":{"name":"add","nativeSrc":"2405:3:15","nodeType":"YulIdentifier","src":"2405:3:15"},"nativeSrc":"2405:25:15","nodeType":"YulFunctionCall","src":"2405:25:15"}],"functionName":{"name":"calldataload","nativeSrc":"2392:12:15","nodeType":"YulIdentifier","src":"2392:12:15"},"nativeSrc":"2392:39:15","nodeType":"YulFunctionCall","src":"2392:39:15"},"variables":[{"name":"word","nativeSrc":"2384:4:15","nodeType":"YulTypedName","src":"2384:4:15","type":""}]},{"nativeSrc":"2438:38:15","nodeType":"YulVariableDeclaration","src":"2438:38:15","value":{"arguments":[{"kind":"number","nativeSrc":"2455:3:15","nodeType":"YulLiteral","src":"2455:3:15","type":"","value":"256"},{"arguments":[{"name":"_length","nativeSrc":"2464:7:15","nodeType":"YulIdentifier","src":"2464:7:15"},{"kind":"number","nativeSrc":"2473:1:15","nodeType":"YulLiteral","src":"2473:1:15","type":"","value":"8"}],"functionName":{"name":"mul","nativeSrc":"2460:3:15","nodeType":"YulIdentifier","src":"2460:3:15"},"nativeSrc":"2460:15:15","nodeType":"YulFunctionCall","src":"2460:15:15"}],"functionName":{"name":"sub","nativeSrc":"2451:3:15","nodeType":"YulIdentifier","src":"2451:3:15"},"nativeSrc":"2451:25:15","nodeType":"YulFunctionCall","src":"2451:25:15"},"variables":[{"name":"shift","nativeSrc":"2442:5:15","nodeType":"YulTypedName","src":"2442:5:15","type":""}]},{"nativeSrc":"2483:59:15","nodeType":"YulAssignment","src":"2483:59:15","value":{"arguments":[{"arguments":[{"name":"shift","nativeSrc":"2496:5:15","nodeType":"YulIdentifier","src":"2496:5:15"},{"name":"word","nativeSrc":"2503:4:15","nodeType":"YulIdentifier","src":"2503:4:15"}],"functionName":{"name":"shr","nativeSrc":"2492:3:15","nodeType":"YulIdentifier","src":"2492:3:15"},"nativeSrc":"2492:16:15","nodeType":"YulFunctionCall","src":"2492:16:15"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2522:1:15","nodeType":"YulLiteral","src":"2522:1:15","type":"","value":"8"},{"name":"_length","nativeSrc":"2525:7:15","nodeType":"YulIdentifier","src":"2525:7:15"}],"functionName":{"name":"mul","nativeSrc":"2518:3:15","nodeType":"YulIdentifier","src":"2518:3:15"},"nativeSrc":"2518:15:15","nodeType":"YulFunctionCall","src":"2518:15:15"},{"kind":"number","nativeSrc":"2535:1:15","nodeType":"YulLiteral","src":"2535:1:15","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2514:3:15","nodeType":"YulIdentifier","src":"2514:3:15"},"nativeSrc":"2514:23:15","nodeType":"YulFunctionCall","src":"2514:23:15"},{"kind":"number","nativeSrc":"2539:1:15","nodeType":"YulLiteral","src":"2539:1:15","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2510:3:15","nodeType":"YulIdentifier","src":"2510:3:15"},"nativeSrc":"2510:31:15","nodeType":"YulFunctionCall","src":"2510:31:15"}],"functionName":{"name":"and","nativeSrc":"2488:3:15","nodeType":"YulIdentifier","src":"2488:3:15"},"nativeSrc":"2488:54:15","nodeType":"YulFunctionCall","src":"2488:54:15"},"variableNames":[{"name":"a","nativeSrc":"2483:1:15","nodeType":"YulIdentifier","src":"2483:1:15"}]},{"nativeSrc":"2549:34:15","nodeType":"YulAssignment","src":"2549:34:15","value":{"arguments":[{"name":"_index","nativeSrc":"2567:6:15","nodeType":"YulIdentifier","src":"2567:6:15"},{"name":"_length","nativeSrc":"2575:7:15","nodeType":"YulIdentifier","src":"2575:7:15"}],"functionName":{"name":"add","nativeSrc":"2563:3:15","nodeType":"YulIdentifier","src":"2563:3:15"},"nativeSrc":"2563:20:15","nodeType":"YulFunctionCall","src":"2563:20:15"},"variableNames":[{"name":"newPointer","nativeSrc":"2549:10:15","nodeType":"YulIdentifier","src":"2549:10:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4050,"isOffset":true,"isSlot":false,"src":"2417:12:15","suffix":"offset","valueSize":1},{"declaration":4052,"isOffset":false,"isSlot":false,"src":"2409:6:15","valueSize":1},{"declaration":4052,"isOffset":false,"isSlot":false,"src":"2567:6:15","valueSize":1},{"declaration":4054,"isOffset":false,"isSlot":false,"src":"2464:7:15","valueSize":1},{"declaration":4054,"isOffset":false,"isSlot":false,"src":"2525:7:15","valueSize":1},{"declaration":4054,"isOffset":false,"isSlot":false,"src":"2575:7:15","valueSize":1},{"declaration":4057,"isOffset":false,"isSlot":false,"src":"2483:1:15","valueSize":1},{"declaration":4059,"isOffset":false,"isSlot":false,"src":"2549:10:15","valueSize":1}],"id":4061,"nodeType":"InlineAssembly","src":"2363:226:15"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUintX","nameLocation":"2222:9:15","parameters":{"id":4055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4050,"mutability":"mutable","name":"_data","nameLocation":"2252:5:15","nodeType":"VariableDeclaration","scope":4063,"src":"2237:20:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4049,"name":"bytes","nodeType":"ElementaryTypeName","src":"2237:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4052,"mutability":"mutable","name":"_index","nameLocation":"2271:6:15","nodeType":"VariableDeclaration","scope":4063,"src":"2263:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4051,"name":"uint256","nodeType":"ElementaryTypeName","src":"2263:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4054,"mutability":"mutable","name":"_length","nameLocation":"2291:7:15","nodeType":"VariableDeclaration","scope":4063,"src":"2283:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4053,"name":"uint256","nodeType":"ElementaryTypeName","src":"2283:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2231:71:15"},"returnParameters":{"id":4060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4057,"mutability":"mutable","name":"a","nameLocation":"2334:1:15","nodeType":"VariableDeclaration","scope":4063,"src":"2326:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4056,"name":"uint256","nodeType":"ElementaryTypeName","src":"2326:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4059,"mutability":"mutable","name":"newPointer","nameLocation":"2345:10:15","nodeType":"VariableDeclaration","scope":4063,"src":"2337:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4058,"name":"uint256","nodeType":"ElementaryTypeName","src":"2337:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:31:15"},"scope":4160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4076,"nodeType":"FunctionDefinition","src":"2597:325:15","nodes":[],"body":{"id":4075,"nodeType":"Block","src":"2710:212:15","nodes":[],"statements":[{"AST":{"nativeSrc":"2725:193:15","nodeType":"YulBlock","src":"2725:193:15","statements":[{"nativeSrc":"2733:53:15","nodeType":"YulVariableDeclaration","src":"2733:53:15","value":{"arguments":[{"arguments":[{"name":"_pointer","nativeSrc":"2762:8:15","nodeType":"YulIdentifier","src":"2762:8:15"},{"name":"_data.offset","nativeSrc":"2772:12:15","nodeType":"YulIdentifier","src":"2772:12:15"}],"functionName":{"name":"add","nativeSrc":"2758:3:15","nodeType":"YulIdentifier","src":"2758:3:15"},"nativeSrc":"2758:27:15","nodeType":"YulFunctionCall","src":"2758:27:15"}],"functionName":{"name":"calldataload","nativeSrc":"2745:12:15","nodeType":"YulIdentifier","src":"2745:12:15"},"nativeSrc":"2745:41:15","nodeType":"YulFunctionCall","src":"2745:41:15"},"variables":[{"name":"word","nativeSrc":"2737:4:15","nodeType":"YulTypedName","src":"2737:4:15","type":""}]},{"nativeSrc":"2793:82:15","nodeType":"YulAssignment","src":"2793:82:15","value":{"arguments":[{"name":"word","nativeSrc":"2802:4:15","nodeType":"YulIdentifier","src":"2802:4:15"},{"kind":"number","nativeSrc":"2808:66:15","nodeType":"YulLiteral","src":"2808:66:15","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"2798:3:15","nodeType":"YulIdentifier","src":"2798:3:15"},"nativeSrc":"2798:77:15","nodeType":"YulFunctionCall","src":"2798:77:15"},"variableNames":[{"name":"a","nativeSrc":"2793:1:15","nodeType":"YulIdentifier","src":"2793:1:15"}]},{"nativeSrc":"2882:30:15","nodeType":"YulAssignment","src":"2882:30:15","value":{"arguments":[{"name":"_pointer","nativeSrc":"2900:8:15","nodeType":"YulIdentifier","src":"2900:8:15"},{"kind":"number","nativeSrc":"2910:1:15","nodeType":"YulLiteral","src":"2910:1:15","type":"","value":"4"}],"functionName":{"name":"add","nativeSrc":"2896:3:15","nodeType":"YulIdentifier","src":"2896:3:15"},"nativeSrc":"2896:16:15","nodeType":"YulFunctionCall","src":"2896:16:15"},"variableNames":[{"name":"newPointer","nativeSrc":"2882:10:15","nodeType":"YulIdentifier","src":"2882:10:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4065,"isOffset":true,"isSlot":false,"src":"2772:12:15","suffix":"offset","valueSize":1},{"declaration":4067,"isOffset":false,"isSlot":false,"src":"2762:8:15","valueSize":1},{"declaration":4067,"isOffset":false,"isSlot":false,"src":"2900:8:15","valueSize":1},{"declaration":4070,"isOffset":false,"isSlot":false,"src":"2793:1:15","valueSize":1},{"declaration":4072,"isOffset":false,"isSlot":false,"src":"2882:10:15","valueSize":1}],"id":4074,"nodeType":"InlineAssembly","src":"2716:202:15"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readBytes4","nameLocation":"2606:10:15","parameters":{"id":4068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4065,"mutability":"mutable","name":"_data","nameLocation":"2632:5:15","nodeType":"VariableDeclaration","scope":4076,"src":"2617:20:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4064,"name":"bytes","nodeType":"ElementaryTypeName","src":"2617:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4067,"mutability":"mutable","name":"_pointer","nameLocation":"2647:8:15","nodeType":"VariableDeclaration","scope":4076,"src":"2639:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4066,"name":"uint256","nodeType":"ElementaryTypeName","src":"2639:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2616:40:15"},"returnParameters":{"id":4073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4070,"mutability":"mutable","name":"a","nameLocation":"2687:1:15","nodeType":"VariableDeclaration","scope":4076,"src":"2680:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4069,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2680:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":4072,"mutability":"mutable","name":"newPointer","nameLocation":"2698:10:15","nodeType":"VariableDeclaration","scope":4076,"src":"2690:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4071,"name":"uint256","nodeType":"ElementaryTypeName","src":"2690:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2679:30:15"},"scope":4160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4089,"nodeType":"FunctionDefinition","src":"2926:232:15","nodes":[],"body":{"id":4088,"nodeType":"Block","src":"3041:117:15","nodes":[],"statements":[{"AST":{"nativeSrc":"3056:98:15","nodeType":"YulBlock","src":"3056:98:15","statements":[{"nativeSrc":"3064:46:15","nodeType":"YulAssignment","src":"3064:46:15","value":{"arguments":[{"arguments":[{"name":"_pointer","nativeSrc":"3086:8:15","nodeType":"YulIdentifier","src":"3086:8:15"},{"name":"_data.offset","nativeSrc":"3096:12:15","nodeType":"YulIdentifier","src":"3096:12:15"}],"functionName":{"name":"add","nativeSrc":"3082:3:15","nodeType":"YulIdentifier","src":"3082:3:15"},"nativeSrc":"3082:27:15","nodeType":"YulFunctionCall","src":"3082:27:15"}],"functionName":{"name":"calldataload","nativeSrc":"3069:12:15","nodeType":"YulIdentifier","src":"3069:12:15"},"nativeSrc":"3069:41:15","nodeType":"YulFunctionCall","src":"3069:41:15"},"variableNames":[{"name":"a","nativeSrc":"3064:1:15","nodeType":"YulIdentifier","src":"3064:1:15"}]},{"nativeSrc":"3117:31:15","nodeType":"YulAssignment","src":"3117:31:15","value":{"arguments":[{"name":"_pointer","nativeSrc":"3135:8:15","nodeType":"YulIdentifier","src":"3135:8:15"},{"kind":"number","nativeSrc":"3145:2:15","nodeType":"YulLiteral","src":"3145:2:15","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3131:3:15","nodeType":"YulIdentifier","src":"3131:3:15"},"nativeSrc":"3131:17:15","nodeType":"YulFunctionCall","src":"3131:17:15"},"variableNames":[{"name":"newPointer","nativeSrc":"3117:10:15","nodeType":"YulIdentifier","src":"3117:10:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4078,"isOffset":true,"isSlot":false,"src":"3096:12:15","suffix":"offset","valueSize":1},{"declaration":4080,"isOffset":false,"isSlot":false,"src":"3086:8:15","valueSize":1},{"declaration":4080,"isOffset":false,"isSlot":false,"src":"3135:8:15","valueSize":1},{"declaration":4083,"isOffset":false,"isSlot":false,"src":"3064:1:15","valueSize":1},{"declaration":4085,"isOffset":false,"isSlot":false,"src":"3117:10:15","valueSize":1}],"id":4087,"nodeType":"InlineAssembly","src":"3047:107:15"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readBytes32","nameLocation":"2935:11:15","parameters":{"id":4081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4078,"mutability":"mutable","name":"_data","nameLocation":"2962:5:15","nodeType":"VariableDeclaration","scope":4089,"src":"2947:20:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4077,"name":"bytes","nodeType":"ElementaryTypeName","src":"2947:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4080,"mutability":"mutable","name":"_pointer","nameLocation":"2977:8:15","nodeType":"VariableDeclaration","scope":4089,"src":"2969:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4079,"name":"uint256","nodeType":"ElementaryTypeName","src":"2969:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2946:40:15"},"returnParameters":{"id":4086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4083,"mutability":"mutable","name":"a","nameLocation":"3018:1:15","nodeType":"VariableDeclaration","scope":4089,"src":"3010:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4082,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3010:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4085,"mutability":"mutable","name":"newPointer","nameLocation":"3029:10:15","nodeType":"VariableDeclaration","scope":4089,"src":"3021:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4084,"name":"uint256","nodeType":"ElementaryTypeName","src":"3021:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3009:31:15"},"scope":4160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4102,"nodeType":"FunctionDefinition","src":"3162:307:15","nodes":[],"body":{"id":4101,"nodeType":"Block","src":"3275:194:15","nodes":[],"statements":[{"AST":{"nativeSrc":"3290:175:15","nodeType":"YulBlock","src":"3290:175:15","statements":[{"nativeSrc":"3298:51:15","nodeType":"YulVariableDeclaration","src":"3298:51:15","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"3327:6:15","nodeType":"YulIdentifier","src":"3327:6:15"},{"name":"_data.offset","nativeSrc":"3335:12:15","nodeType":"YulIdentifier","src":"3335:12:15"}],"functionName":{"name":"add","nativeSrc":"3323:3:15","nodeType":"YulIdentifier","src":"3323:3:15"},"nativeSrc":"3323:25:15","nodeType":"YulFunctionCall","src":"3323:25:15"}],"functionName":{"name":"calldataload","nativeSrc":"3310:12:15","nodeType":"YulIdentifier","src":"3310:12:15"},"nativeSrc":"3310:39:15","nodeType":"YulFunctionCall","src":"3310:39:15"},"variables":[{"name":"word","nativeSrc":"3302:4:15","nodeType":"YulTypedName","src":"3302:4:15","type":""}]},{"nativeSrc":"3356:67:15","nodeType":"YulAssignment","src":"3356:67:15","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3369:2:15","nodeType":"YulLiteral","src":"3369:2:15","type":"","value":"96"},{"name":"word","nativeSrc":"3373:4:15","nodeType":"YulIdentifier","src":"3373:4:15"}],"functionName":{"name":"shr","nativeSrc":"3365:3:15","nodeType":"YulIdentifier","src":"3365:3:15"},"nativeSrc":"3365:13:15","nodeType":"YulFunctionCall","src":"3365:13:15"},{"kind":"number","nativeSrc":"3380:42:15","nodeType":"YulLiteral","src":"3380:42:15","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"3361:3:15","nodeType":"YulIdentifier","src":"3361:3:15"},"nativeSrc":"3361:62:15","nodeType":"YulFunctionCall","src":"3361:62:15"},"variableNames":[{"name":"a","nativeSrc":"3356:1:15","nodeType":"YulIdentifier","src":"3356:1:15"}]},{"nativeSrc":"3430:29:15","nodeType":"YulAssignment","src":"3430:29:15","value":{"arguments":[{"name":"_index","nativeSrc":"3448:6:15","nodeType":"YulIdentifier","src":"3448:6:15"},{"kind":"number","nativeSrc":"3456:2:15","nodeType":"YulLiteral","src":"3456:2:15","type":"","value":"20"}],"functionName":{"name":"add","nativeSrc":"3444:3:15","nodeType":"YulIdentifier","src":"3444:3:15"},"nativeSrc":"3444:15:15","nodeType":"YulFunctionCall","src":"3444:15:15"},"variableNames":[{"name":"newPointer","nativeSrc":"3430:10:15","nodeType":"YulIdentifier","src":"3430:10:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4091,"isOffset":true,"isSlot":false,"src":"3335:12:15","suffix":"offset","valueSize":1},{"declaration":4093,"isOffset":false,"isSlot":false,"src":"3327:6:15","valueSize":1},{"declaration":4093,"isOffset":false,"isSlot":false,"src":"3448:6:15","valueSize":1},{"declaration":4096,"isOffset":false,"isSlot":false,"src":"3356:1:15","valueSize":1},{"declaration":4098,"isOffset":false,"isSlot":false,"src":"3430:10:15","valueSize":1}],"id":4100,"nodeType":"InlineAssembly","src":"3281:184:15"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readAddress","nameLocation":"3171:11:15","parameters":{"id":4094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4091,"mutability":"mutable","name":"_data","nameLocation":"3198:5:15","nodeType":"VariableDeclaration","scope":4102,"src":"3183:20:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4090,"name":"bytes","nodeType":"ElementaryTypeName","src":"3183:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4093,"mutability":"mutable","name":"_index","nameLocation":"3213:6:15","nodeType":"VariableDeclaration","scope":4102,"src":"3205:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4092,"name":"uint256","nodeType":"ElementaryTypeName","src":"3205:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3182:38:15"},"returnParameters":{"id":4099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4096,"mutability":"mutable","name":"a","nameLocation":"3252:1:15","nodeType":"VariableDeclaration","scope":4102,"src":"3244:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4095,"name":"address","nodeType":"ElementaryTypeName","src":"3244:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4098,"mutability":"mutable","name":"newPointer","nameLocation":"3263:10:15","nodeType":"VariableDeclaration","scope":4102,"src":"3255:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4097,"name":"uint256","nodeType":"ElementaryTypeName","src":"3255:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3243:31:15"},"scope":4160,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4159,"nodeType":"FunctionDefinition","src":"3511:494:15","nodes":[],"body":{"id":4158,"nodeType":"Block","src":"3659:346:15","nodes":[],"statements":[{"assignments":[4119],"declarations":[{"constant":false,"id":4119,"mutability":"mutable","name":"yParityAndS","nameLocation":"3673:11:15","nodeType":"VariableDeclaration","scope":4158,"src":"3665:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4118,"name":"uint256","nodeType":"ElementaryTypeName","src":"3665:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4120,"nodeType":"VariableDeclarationStatement","src":"3665:19:15"},{"AST":{"nativeSrc":"3699:164:15","nodeType":"YulBlock","src":"3699:164:15","statements":[{"nativeSrc":"3707:44:15","nodeType":"YulAssignment","src":"3707:44:15","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"3729:6:15","nodeType":"YulIdentifier","src":"3729:6:15"},{"name":"_data.offset","nativeSrc":"3737:12:15","nodeType":"YulIdentifier","src":"3737:12:15"}],"functionName":{"name":"add","nativeSrc":"3725:3:15","nodeType":"YulIdentifier","src":"3725:3:15"},"nativeSrc":"3725:25:15","nodeType":"YulFunctionCall","src":"3725:25:15"}],"functionName":{"name":"calldataload","nativeSrc":"3712:12:15","nodeType":"YulIdentifier","src":"3712:12:15"},"nativeSrc":"3712:39:15","nodeType":"YulFunctionCall","src":"3712:39:15"},"variableNames":[{"name":"r","nativeSrc":"3707:1:15","nodeType":"YulIdentifier","src":"3707:1:15"}]},{"nativeSrc":"3758:63:15","nodeType":"YulAssignment","src":"3758:63:15","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"3790:6:15","nodeType":"YulIdentifier","src":"3790:6:15"},{"arguments":[{"name":"_data.offset","nativeSrc":"3802:12:15","nodeType":"YulIdentifier","src":"3802:12:15"},{"kind":"number","nativeSrc":"3816:2:15","nodeType":"YulLiteral","src":"3816:2:15","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3798:3:15","nodeType":"YulIdentifier","src":"3798:3:15"},"nativeSrc":"3798:21:15","nodeType":"YulFunctionCall","src":"3798:21:15"}],"functionName":{"name":"add","nativeSrc":"3786:3:15","nodeType":"YulIdentifier","src":"3786:3:15"},"nativeSrc":"3786:34:15","nodeType":"YulFunctionCall","src":"3786:34:15"}],"functionName":{"name":"calldataload","nativeSrc":"3773:12:15","nodeType":"YulIdentifier","src":"3773:12:15"},"nativeSrc":"3773:48:15","nodeType":"YulFunctionCall","src":"3773:48:15"},"variableNames":[{"name":"yParityAndS","nativeSrc":"3758:11:15","nodeType":"YulIdentifier","src":"3758:11:15"}]},{"nativeSrc":"3828:29:15","nodeType":"YulAssignment","src":"3828:29:15","value":{"arguments":[{"name":"_index","nativeSrc":"3846:6:15","nodeType":"YulIdentifier","src":"3846:6:15"},{"kind":"number","nativeSrc":"3854:2:15","nodeType":"YulLiteral","src":"3854:2:15","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3842:3:15","nodeType":"YulIdentifier","src":"3842:3:15"},"nativeSrc":"3842:15:15","nodeType":"YulFunctionCall","src":"3842:15:15"},"variableNames":[{"name":"newPointer","nativeSrc":"3828:10:15","nodeType":"YulIdentifier","src":"3828:10:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4105,"isOffset":true,"isSlot":false,"src":"3737:12:15","suffix":"offset","valueSize":1},{"declaration":4105,"isOffset":true,"isSlot":false,"src":"3802:12:15","suffix":"offset","valueSize":1},{"declaration":4107,"isOffset":false,"isSlot":false,"src":"3729:6:15","valueSize":1},{"declaration":4107,"isOffset":false,"isSlot":false,"src":"3790:6:15","valueSize":1},{"declaration":4107,"isOffset":false,"isSlot":false,"src":"3846:6:15","valueSize":1},{"declaration":4116,"isOffset":false,"isSlot":false,"src":"3828:10:15","valueSize":1},{"declaration":4110,"isOffset":false,"isSlot":false,"src":"3707:1:15","valueSize":1},{"declaration":4119,"isOffset":false,"isSlot":false,"src":"3758:11:15","valueSize":1}],"id":4121,"nodeType":"InlineAssembly","src":"3690:173:15"},{"assignments":[4123],"declarations":[{"constant":false,"id":4123,"mutability":"mutable","name":"yParity","nameLocation":"3876:7:15","nodeType":"VariableDeclaration","scope":4158,"src":"3868:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4122,"name":"uint256","nodeType":"ElementaryTypeName","src":"3868:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4130,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4126,"name":"yParityAndS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4119,"src":"3894:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":4127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3909:3:15","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"3894:18:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3886:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4124,"name":"uint256","nodeType":"ElementaryTypeName","src":"3886:7:15","typeDescriptions":{}}},"id":4129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3886:27:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3868:45:15"},{"expression":{"id":4147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4131,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4112,"src":"3919:1:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4136,"name":"yParityAndS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4119,"src":"3939:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3931:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4134,"name":"uint256","nodeType":"ElementaryTypeName","src":"3931:7:15","typeDescriptions":{}}},"id":4137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3931:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"id":4143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"id":4140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3956:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"323535","id":4139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3961:3:15","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"3956:8:15","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}}],"id":4141,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3955:10:15","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3968:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3955:14:15","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}}],"id":4144,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3954:16:15","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}},"src":"3931:39:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3923:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4132,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3923:7:15","typeDescriptions":{}}},"id":4146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3923:48:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3919:52:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4148,"nodeType":"ExpressionStatement","src":"3919:52:15"},{"expression":{"id":4156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4149,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4114,"src":"3977:1:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4152,"name":"yParity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4123,"src":"3987:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3981:5:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4150,"name":"uint8","nodeType":"ElementaryTypeName","src":"3981:5:15","typeDescriptions":{}}},"id":4153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3981:14:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":4154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3998:2:15","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"3981:19:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3977:23:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":4157,"nodeType":"ExpressionStatement","src":"3977:23:15"}]},"documentation":{"id":4103,"nodeType":"StructuredDocumentation","src":"3473:35:15","text":"@dev ERC-2098 Compact Signature"},"implemented":true,"kind":"function","modifiers":[],"name":"readRSVCompact","nameLocation":"3520:14:15","parameters":{"id":4108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4105,"mutability":"mutable","name":"_data","nameLocation":"3555:5:15","nodeType":"VariableDeclaration","scope":4159,"src":"3540:20:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4104,"name":"bytes","nodeType":"ElementaryTypeName","src":"3540:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4107,"mutability":"mutable","name":"_index","nameLocation":"3574:6:15","nodeType":"VariableDeclaration","scope":4159,"src":"3566:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4106,"name":"uint256","nodeType":"ElementaryTypeName","src":"3566:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3534:50:15"},"returnParameters":{"id":4117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4110,"mutability":"mutable","name":"r","nameLocation":"3616:1:15","nodeType":"VariableDeclaration","scope":4159,"src":"3608:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3608:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4112,"mutability":"mutable","name":"s","nameLocation":"3627:1:15","nodeType":"VariableDeclaration","scope":4159,"src":"3619:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4111,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3619:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4114,"mutability":"mutable","name":"v","nameLocation":"3636:1:15","nodeType":"VariableDeclaration","scope":4159,"src":"3630:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4113,"name":"uint8","nodeType":"ElementaryTypeName","src":"3630:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4116,"mutability":"mutable","name":"newPointer","nameLocation":"3647:10:15","nodeType":"VariableDeclaration","scope":4159,"src":"3639:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4115,"name":"uint256","nodeType":"ElementaryTypeName","src":"3639:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3607:51:15"},"scope":4160,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"LibBytes","contractDependencies":[],"contractKind":"library","documentation":{"id":3959,"nodeType":"StructuredDocumentation","src":"65:367:15","text":"@title Library for reading data from bytes arrays\n @author Agustin Aguilar (aa@horizon.io), Michael Standen (mstan@horizon.io)\n @notice This library contains functions for reading data from bytes arrays.\n @dev These functions do not check if the input index is within the bounds of the data array.\n @dev Reading out of bounds may return dirty values."},"fullyImplemented":true,"linearizedBaseContracts":[4160],"name":"LibBytes","nameLocation":"440:8:15","scope":4161,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/utils/LibOptim.sol":{"id":16,"ast":{"absolutePath":"src/utils/LibOptim.sol","id":4215,"exportedSymbols":{"LibOptim":[4214]},"nodeType":"SourceUnit","src":"39:2154:16","nodes":[{"id":4162,"nodeType":"PragmaDirective","src":"39:24:16","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":4214,"nodeType":"ContractDefinition","src":"162:2030:16","nodes":[{"id":4175,"nodeType":"FunctionDefinition","src":"461:173:16","nodes":[],"body":{"id":4174,"nodeType":"Block","src":"539:95:16","nodes":[],"statements":[{"AST":{"nativeSrc":"554:76:16","nodeType":"YulBlock","src":"554:76:16","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"569:1:16","nodeType":"YulLiteral","src":"569:1:16","type":"","value":"0"},{"name":"_a","nativeSrc":"572:2:16","nodeType":"YulIdentifier","src":"572:2:16"}],"functionName":{"name":"mstore","nativeSrc":"562:6:16","nodeType":"YulIdentifier","src":"562:6:16"},"nativeSrc":"562:13:16","nodeType":"YulFunctionCall","src":"562:13:16"},"nativeSrc":"562:13:16","nodeType":"YulExpressionStatement","src":"562:13:16"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"589:2:16","nodeType":"YulLiteral","src":"589:2:16","type":"","value":"32"},{"name":"_b","nativeSrc":"593:2:16","nodeType":"YulIdentifier","src":"593:2:16"}],"functionName":{"name":"mstore","nativeSrc":"582:6:16","nodeType":"YulIdentifier","src":"582:6:16"},"nativeSrc":"582:14:16","nodeType":"YulFunctionCall","src":"582:14:16"},"nativeSrc":"582:14:16","nodeType":"YulExpressionStatement","src":"582:14:16"},{"nativeSrc":"603:21:16","nodeType":"YulAssignment","src":"603:21:16","value":{"arguments":[{"kind":"number","nativeSrc":"618:1:16","nodeType":"YulLiteral","src":"618:1:16","type":"","value":"0"},{"kind":"number","nativeSrc":"621:2:16","nodeType":"YulLiteral","src":"621:2:16","type":"","value":"64"}],"functionName":{"name":"keccak256","nativeSrc":"608:9:16","nodeType":"YulIdentifier","src":"608:9:16"},"nativeSrc":"608:16:16","nodeType":"YulFunctionCall","src":"608:16:16"},"variableNames":[{"name":"c","nativeSrc":"603:1:16","nodeType":"YulIdentifier","src":"603:1:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4166,"isOffset":false,"isSlot":false,"src":"572:2:16","valueSize":1},{"declaration":4168,"isOffset":false,"isSlot":false,"src":"593:2:16","valueSize":1},{"declaration":4171,"isOffset":false,"isSlot":false,"src":"603:1:16","valueSize":1}],"id":4173,"nodeType":"InlineAssembly","src":"545:85:16"}]},"documentation":{"id":4164,"nodeType":"StructuredDocumentation","src":"184:274:16","text":" @notice Computes the keccak256 hash of two 32-byte inputs.\n @dev It uses only scratch memory space.\n @param _a The first 32 bytes of the hash.\n @param _b The second 32 bytes of the hash.\n @return c The keccak256 hash of the two 32-byte inputs."},"implemented":true,"kind":"function","modifiers":[],"name":"fkeccak256","nameLocation":"470:10:16","parameters":{"id":4169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4166,"mutability":"mutable","name":"_a","nameLocation":"489:2:16","nodeType":"VariableDeclaration","scope":4175,"src":"481:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4165,"name":"bytes32","nodeType":"ElementaryTypeName","src":"481:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4168,"mutability":"mutable","name":"_b","nameLocation":"501:2:16","nodeType":"VariableDeclaration","scope":4175,"src":"493:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4167,"name":"bytes32","nodeType":"ElementaryTypeName","src":"493:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"480:24:16"},"returnParameters":{"id":4172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4171,"mutability":"mutable","name":"c","nameLocation":"536:1:16","nodeType":"VariableDeclaration","scope":4175,"src":"528:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4170,"name":"bytes32","nodeType":"ElementaryTypeName","src":"528:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"527:11:16"},"scope":4214,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4183,"nodeType":"FunctionDefinition","src":"758:271:16","nodes":[],"body":{"id":4182,"nodeType":"Block","src":"819:210:16","nodes":[],"statements":[{"AST":{"nativeSrc":"834:191:16","nodeType":"YulBlock","src":"834:191:16","statements":[{"nativeSrc":"842:28:16","nodeType":"YulVariableDeclaration","src":"842:28:16","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"854:14:16","nodeType":"YulIdentifier","src":"854:14:16"},"nativeSrc":"854:16:16","nodeType":"YulFunctionCall","src":"854:16:16"},"variables":[{"name":"size","nativeSrc":"846:4:16","nodeType":"YulTypedName","src":"846:4:16","type":""}]},{"nativeSrc":"877:16:16","nodeType":"YulAssignment","src":"877:16:16","value":{"arguments":[{"kind":"number","nativeSrc":"888:4:16","nodeType":"YulLiteral","src":"888:4:16","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"882:5:16","nodeType":"YulIdentifier","src":"882:5:16"},"nativeSrc":"882:11:16","nodeType":"YulFunctionCall","src":"882:11:16"},"variableNames":[{"name":"r","nativeSrc":"877:1:16","nodeType":"YulIdentifier","src":"877:1:16"}]},{"nativeSrc":"900:23:16","nodeType":"YulVariableDeclaration","src":"900:23:16","value":{"arguments":[{"name":"r","nativeSrc":"917:1:16","nodeType":"YulIdentifier","src":"917:1:16"},{"kind":"number","nativeSrc":"920:2:16","nodeType":"YulLiteral","src":"920:2:16","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"913:3:16","nodeType":"YulIdentifier","src":"913:3:16"},"nativeSrc":"913:10:16","nodeType":"YulFunctionCall","src":"913:10:16"},"variables":[{"name":"start","nativeSrc":"904:5:16","nodeType":"YulTypedName","src":"904:5:16","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"937:4:16","nodeType":"YulLiteral","src":"937:4:16","type":"","value":"0x40"},{"arguments":[{"name":"start","nativeSrc":"947:5:16","nodeType":"YulIdentifier","src":"947:5:16"},{"name":"size","nativeSrc":"954:4:16","nodeType":"YulIdentifier","src":"954:4:16"}],"functionName":{"name":"add","nativeSrc":"943:3:16","nodeType":"YulIdentifier","src":"943:3:16"},"nativeSrc":"943:16:16","nodeType":"YulFunctionCall","src":"943:16:16"}],"functionName":{"name":"mstore","nativeSrc":"930:6:16","nodeType":"YulIdentifier","src":"930:6:16"},"nativeSrc":"930:30:16","nodeType":"YulFunctionCall","src":"930:30:16"},"nativeSrc":"930:30:16","nodeType":"YulExpressionStatement","src":"930:30:16"},{"expression":{"arguments":[{"name":"r","nativeSrc":"974:1:16","nodeType":"YulIdentifier","src":"974:1:16"},{"name":"size","nativeSrc":"977:4:16","nodeType":"YulIdentifier","src":"977:4:16"}],"functionName":{"name":"mstore","nativeSrc":"967:6:16","nodeType":"YulIdentifier","src":"967:6:16"},"nativeSrc":"967:15:16","nodeType":"YulFunctionCall","src":"967:15:16"},"nativeSrc":"967:15:16","nodeType":"YulExpressionStatement","src":"967:15:16"},{"expression":{"arguments":[{"name":"start","nativeSrc":"1004:5:16","nodeType":"YulIdentifier","src":"1004:5:16"},{"kind":"number","nativeSrc":"1011:1:16","nodeType":"YulLiteral","src":"1011:1:16","type":"","value":"0"},{"name":"size","nativeSrc":"1014:4:16","nodeType":"YulIdentifier","src":"1014:4:16"}],"functionName":{"name":"returndatacopy","nativeSrc":"989:14:16","nodeType":"YulIdentifier","src":"989:14:16"},"nativeSrc":"989:30:16","nodeType":"YulFunctionCall","src":"989:30:16"},"nativeSrc":"989:30:16","nodeType":"YulExpressionStatement","src":"989:30:16"}]},"evmVersion":"paris","externalReferences":[{"declaration":4179,"isOffset":false,"isSlot":false,"src":"877:1:16","valueSize":1},{"declaration":4179,"isOffset":false,"isSlot":false,"src":"917:1:16","valueSize":1},{"declaration":4179,"isOffset":false,"isSlot":false,"src":"974:1:16","valueSize":1}],"id":4181,"nodeType":"InlineAssembly","src":"825:200:16"}]},"documentation":{"id":4176,"nodeType":"StructuredDocumentation","src":"638:117:16","text":" @notice Returns the return data from the last call.\n @return r The return data from the last call."},"implemented":true,"kind":"function","modifiers":[],"name":"returnData","nameLocation":"767:10:16","parameters":{"id":4177,"nodeType":"ParameterList","parameters":[],"src":"777:2:16"},"returnParameters":{"id":4180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4179,"mutability":"mutable","name":"r","nameLocation":"816:1:16","nodeType":"VariableDeclaration","scope":4183,"src":"803:14:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4178,"name":"bytes","nodeType":"ElementaryTypeName","src":"803:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"802:16:16"},"scope":4214,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4199,"nodeType":"FunctionDefinition","src":"1431:196:16","nodes":[],"body":{"id":4198,"nodeType":"Block","src":"1532:95:16","nodes":[],"statements":[{"AST":{"nativeSrc":"1547:76:16","nodeType":"YulBlock","src":"1547:76:16","statements":[{"nativeSrc":"1555:62:16","nodeType":"YulAssignment","src":"1555:62:16","value":{"arguments":[{"name":"_gas","nativeSrc":"1565:4:16","nodeType":"YulIdentifier","src":"1565:4:16"},{"name":"_to","nativeSrc":"1571:3:16","nodeType":"YulIdentifier","src":"1571:3:16"},{"name":"_val","nativeSrc":"1576:4:16","nodeType":"YulIdentifier","src":"1576:4:16"},{"arguments":[{"name":"_data","nativeSrc":"1586:5:16","nodeType":"YulIdentifier","src":"1586:5:16"},{"kind":"number","nativeSrc":"1593:2:16","nodeType":"YulLiteral","src":"1593:2:16","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1582:3:16","nodeType":"YulIdentifier","src":"1582:3:16"},"nativeSrc":"1582:14:16","nodeType":"YulFunctionCall","src":"1582:14:16"},{"arguments":[{"name":"_data","nativeSrc":"1604:5:16","nodeType":"YulIdentifier","src":"1604:5:16"}],"functionName":{"name":"mload","nativeSrc":"1598:5:16","nodeType":"YulIdentifier","src":"1598:5:16"},"nativeSrc":"1598:12:16","nodeType":"YulFunctionCall","src":"1598:12:16"},{"kind":"number","nativeSrc":"1612:1:16","nodeType":"YulLiteral","src":"1612:1:16","type":"","value":"0"},{"kind":"number","nativeSrc":"1615:1:16","nodeType":"YulLiteral","src":"1615:1:16","type":"","value":"0"}],"functionName":{"name":"call","nativeSrc":"1560:4:16","nodeType":"YulIdentifier","src":"1560:4:16"},"nativeSrc":"1560:57:16","nodeType":"YulFunctionCall","src":"1560:57:16"},"variableNames":[{"name":"r","nativeSrc":"1555:1:16","nodeType":"YulIdentifier","src":"1555:1:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4192,"isOffset":false,"isSlot":false,"src":"1586:5:16","valueSize":1},{"declaration":4192,"isOffset":false,"isSlot":false,"src":"1604:5:16","valueSize":1},{"declaration":4190,"isOffset":false,"isSlot":false,"src":"1565:4:16","valueSize":1},{"declaration":4186,"isOffset":false,"isSlot":false,"src":"1571:3:16","valueSize":1},{"declaration":4188,"isOffset":false,"isSlot":false,"src":"1576:4:16","valueSize":1},{"declaration":4195,"isOffset":false,"isSlot":false,"src":"1555:1:16","valueSize":1}],"id":4197,"nodeType":"InlineAssembly","src":"1538:85:16"}]},"documentation":{"id":4184,"nodeType":"StructuredDocumentation","src":"1033:395:16","text":" @notice Calls another contract with the given parameters.\n @dev This method doesn't increase the memory pointer.\n @param _to The address of the contract to call.\n @param _val The value to send to the contract.\n @param _gas The amount of gas to provide for the call.\n @param _data The data to send to the contract.\n @return r The success status of the call."},"implemented":true,"kind":"function","modifiers":[],"name":"call","nameLocation":"1440:4:16","parameters":{"id":4193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4186,"mutability":"mutable","name":"_to","nameLocation":"1453:3:16","nodeType":"VariableDeclaration","scope":4199,"src":"1445:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4185,"name":"address","nodeType":"ElementaryTypeName","src":"1445:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4188,"mutability":"mutable","name":"_val","nameLocation":"1466:4:16","nodeType":"VariableDeclaration","scope":4199,"src":"1458:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4187,"name":"uint256","nodeType":"ElementaryTypeName","src":"1458:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4190,"mutability":"mutable","name":"_gas","nameLocation":"1480:4:16","nodeType":"VariableDeclaration","scope":4199,"src":"1472:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4189,"name":"uint256","nodeType":"ElementaryTypeName","src":"1472:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4192,"mutability":"mutable","name":"_data","nameLocation":"1499:5:16","nodeType":"VariableDeclaration","scope":4199,"src":"1486:18:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4191,"name":"bytes","nodeType":"ElementaryTypeName","src":"1486:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1444:61:16"},"returnParameters":{"id":4196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4195,"mutability":"mutable","name":"r","nameLocation":"1529:1:16","nodeType":"VariableDeclaration","scope":4199,"src":"1524:6:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4194,"name":"bool","nodeType":"ElementaryTypeName","src":"1524:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1523:8:16"},"scope":4214,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":4213,"nodeType":"FunctionDefinition","src":"1997:192:16","nodes":[],"body":{"id":4212,"nodeType":"Block","src":"2092:97:16","nodes":[],"statements":[{"AST":{"nativeSrc":"2107:78:16","nodeType":"YulBlock","src":"2107:78:16","statements":[{"nativeSrc":"2115:64:16","nodeType":"YulAssignment","src":"2115:64:16","value":{"arguments":[{"name":"_gas","nativeSrc":"2133:4:16","nodeType":"YulIdentifier","src":"2133:4:16"},{"name":"_to","nativeSrc":"2139:3:16","nodeType":"YulIdentifier","src":"2139:3:16"},{"arguments":[{"name":"_data","nativeSrc":"2148:5:16","nodeType":"YulIdentifier","src":"2148:5:16"},{"kind":"number","nativeSrc":"2155:2:16","nodeType":"YulLiteral","src":"2155:2:16","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2144:3:16","nodeType":"YulIdentifier","src":"2144:3:16"},"nativeSrc":"2144:14:16","nodeType":"YulFunctionCall","src":"2144:14:16"},{"arguments":[{"name":"_data","nativeSrc":"2166:5:16","nodeType":"YulIdentifier","src":"2166:5:16"}],"functionName":{"name":"mload","nativeSrc":"2160:5:16","nodeType":"YulIdentifier","src":"2160:5:16"},"nativeSrc":"2160:12:16","nodeType":"YulFunctionCall","src":"2160:12:16"},{"kind":"number","nativeSrc":"2174:1:16","nodeType":"YulLiteral","src":"2174:1:16","type":"","value":"0"},{"kind":"number","nativeSrc":"2177:1:16","nodeType":"YulLiteral","src":"2177:1:16","type":"","value":"0"}],"functionName":{"name":"delegatecall","nativeSrc":"2120:12:16","nodeType":"YulIdentifier","src":"2120:12:16"},"nativeSrc":"2120:59:16","nodeType":"YulFunctionCall","src":"2120:59:16"},"variableNames":[{"name":"r","nativeSrc":"2115:1:16","nodeType":"YulIdentifier","src":"2115:1:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4206,"isOffset":false,"isSlot":false,"src":"2148:5:16","valueSize":1},{"declaration":4206,"isOffset":false,"isSlot":false,"src":"2166:5:16","valueSize":1},{"declaration":4204,"isOffset":false,"isSlot":false,"src":"2133:4:16","valueSize":1},{"declaration":4202,"isOffset":false,"isSlot":false,"src":"2139:3:16","valueSize":1},{"declaration":4209,"isOffset":false,"isSlot":false,"src":"2115:1:16","valueSize":1}],"id":4211,"nodeType":"InlineAssembly","src":"2098:87:16"}]},"documentation":{"id":4200,"nodeType":"StructuredDocumentation","src":"1631:363:16","text":" @notice Calls another contract with the given parameters, using delegatecall.\n @dev This method doesn't increase the memory pointer.\n @param _to The address of the contract to call.\n @param _gas The amount of gas to provide for the call.\n @param _data The data to send to the contract.\n @return r The success status of the call."},"implemented":true,"kind":"function","modifiers":[],"name":"delegatecall","nameLocation":"2006:12:16","parameters":{"id":4207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4202,"mutability":"mutable","name":"_to","nameLocation":"2027:3:16","nodeType":"VariableDeclaration","scope":4213,"src":"2019:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4201,"name":"address","nodeType":"ElementaryTypeName","src":"2019:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4204,"mutability":"mutable","name":"_gas","nameLocation":"2040:4:16","nodeType":"VariableDeclaration","scope":4213,"src":"2032:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4203,"name":"uint256","nodeType":"ElementaryTypeName","src":"2032:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4206,"mutability":"mutable","name":"_data","nameLocation":"2059:5:16","nodeType":"VariableDeclaration","scope":4213,"src":"2046:18:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4205,"name":"bytes","nodeType":"ElementaryTypeName","src":"2046:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2018:47:16"},"returnParameters":{"id":4210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4209,"mutability":"mutable","name":"r","nameLocation":"2089:1:16","nodeType":"VariableDeclaration","scope":4213,"src":"2084:6:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4208,"name":"bool","nodeType":"ElementaryTypeName","src":"2084:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2083:8:16"},"scope":4214,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"LibOptim","contractDependencies":[],"contractKind":"library","documentation":{"id":4163,"nodeType":"StructuredDocumentation","src":"65:97:16","text":"@title LibOptim\n @author Agustin Aguilar\n @notice Library for optimized EVM operations"},"fullyImplemented":true,"linearizedBaseContracts":[4214],"name":"LibOptim","nameLocation":"170:8:16","scope":4215,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}}}},"solcLongVersion":"0.8.28","solcVersion":"0.8.28"} \ No newline at end of file diff --git a/jobs/sequence_v3/build-info/rc-5/recovery.json b/jobs/sequence_v3/build-info/rc-5/recovery.json new file mode 100644 index 0000000..a26976c --- /dev/null +++ b/jobs/sequence_v3/build-info/rc-5/recovery.json @@ -0,0 +1 @@ +{"id":"a5405950aff35661","source_id_to_path":{"0":"src/extensions/recovery/Recovery.sol","1":"src/modules/Payload.sol","2":"src/modules/interfaces/IERC1271.sol","3":"src/modules/interfaces/ISapient.sol","4":"src/utils/LibBytes.sol","5":"src/utils/LibOptim.sol"},"language":"Solidity","_format":"ethers-rs-sol-build-info-1","input":{"version":"0.8.28","language":"Solidity","sources":{"src/extensions/recovery/Recovery.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Payload } from \"../../modules/Payload.sol\";\nimport { IERC1271, IERC1271_MAGIC_VALUE_HASH } from \"../../modules/interfaces/IERC1271.sol\";\nimport { ISapientCompact } from \"../../modules/interfaces/ISapient.sol\";\nimport { LibBytes } from \"../../utils/LibBytes.sol\";\nimport { LibOptim } from \"../../utils/LibOptim.sol\";\n\nusing LibBytes for bytes;\n\n/// @title Recovery\n/// @author Agustin Aguilar, William Hua, Michael Standen\n/// @notice A recovery mode sapient signer\ncontract Recovery is ISapientCompact {\n\n bytes32 private constant EIP712_DOMAIN_TYPEHASH =\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n\n bytes32 private constant EIP712_DOMAIN_NAME_SEQUENCE = keccak256(\"Sequence Wallet - Recovery Mode\");\n bytes32 private constant EIP712_DOMAIN_VERSION_SEQUENCE = keccak256(\"1\");\n\n // Make them similar to the flags in BaseSig.sol\n uint256 internal constant FLAG_RECOVERY_LEAF = 1;\n uint256 internal constant FLAG_NODE = 3;\n uint256 internal constant FLAG_BRANCH = 4;\n\n /// @notice Emitted when a new payload is queued\n event NewQueuedPayload(address indexed _wallet, address indexed _signer, bytes32 _payloadHash, uint256 _timestamp);\n\n /// @notice Error thrown when the signature is invalid\n error InvalidSignature(address _wallet, address _signer, Payload.Decoded _payload, bytes _signature);\n /// @notice Error thrown when the payload is already queued\n error AlreadyQueued(address _wallet, address _signer, bytes32 _payloadHash);\n /// @notice Error thrown when the queue is not ready\n error QueueNotReady(address _wallet, bytes32 _payloadHash);\n /// @notice Error thrown when the signature flag is invalid\n error InvalidSignatureFlag(uint256 _flag);\n\n function domainSeparator(\n bool _noChainId,\n address _wallet\n ) internal view returns (bytes32 _domainSeparator) {\n return keccak256(\n abi.encode(\n EIP712_DOMAIN_TYPEHASH,\n EIP712_DOMAIN_NAME_SEQUENCE,\n EIP712_DOMAIN_VERSION_SEQUENCE,\n _noChainId ? uint256(0) : uint256(block.chainid),\n _wallet\n )\n );\n }\n\n /// @notice Mapping of queued timestamps\n /// @dev wallet -> signer -> payloadHash -> timestamp\n mapping(address => mapping(address => mapping(bytes32 => uint256))) public timestampForQueuedPayload;\n\n /// @notice Mapping of queued payload hashes\n /// @dev wallet -> signer -> payloadHash[]\n mapping(address => mapping(address => bytes32[])) public queuedPayloadHashes;\n\n /// @notice Get the total number of queued payloads\n /// @param _wallet The wallet to get the total number of queued payloads for\n /// @param _signer The signer to get the total number of queued payloads for\n /// @return The total number of queued payloads\n function totalQueuedPayloads(\n address _wallet,\n address _signer\n ) public view returns (uint256) {\n return queuedPayloadHashes[_wallet][_signer].length;\n }\n\n function _leafForRecoveryLeaf(\n address _signer,\n uint256 _requiredDeltaTime,\n uint256 _minTimestamp\n ) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"Sequence recovery leaf:\\n\", _signer, _requiredDeltaTime, _minTimestamp));\n }\n\n function _recoverBranch(\n address _wallet,\n bytes32 _payloadHash,\n bytes calldata _signature\n ) internal view returns (bool verified, bytes32 root) {\n uint256 rindex;\n\n while (rindex < _signature.length) {\n // The first byte is the flag, it determines if we are reading\n uint256 flag;\n (flag, rindex) = _signature.readUint8(rindex);\n\n if (flag == FLAG_RECOVERY_LEAF) {\n // Read the signer and requiredDeltaTime\n address signer;\n uint256 requiredDeltaTime;\n uint256 minTimestamp;\n\n (signer, rindex) = _signature.readAddress(rindex);\n (requiredDeltaTime, rindex) = _signature.readUint24(rindex);\n (minTimestamp, rindex) = _signature.readUint64(rindex);\n\n // Check if we have a queued payload for this signer\n uint256 queuedAt = timestampForQueuedPayload[_wallet][signer][_payloadHash];\n if (queuedAt != 0 && queuedAt >= minTimestamp && block.timestamp - queuedAt >= requiredDeltaTime) {\n verified = true;\n }\n\n bytes32 node = _leafForRecoveryLeaf(signer, requiredDeltaTime, minTimestamp);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n if (flag == FLAG_NODE) {\n // Read node hash\n bytes32 node;\n (node, rindex) = _signature.readBytes32(rindex);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n if (flag == FLAG_BRANCH) {\n // Read size\n uint256 size;\n (size, rindex) = _signature.readUint24(rindex);\n\n // Enter a branch of the signature merkle tree\n uint256 nrindex = rindex + size;\n\n (bool nverified, bytes32 nroot) = _recoverBranch(_wallet, _payloadHash, _signature[rindex:nrindex]);\n rindex = nrindex;\n\n verified = verified || nverified;\n root = LibOptim.fkeccak256(root, nroot);\n continue;\n }\n\n revert InvalidSignatureFlag(flag);\n }\n\n return (verified, root);\n }\n\n /// @notice Get the recovery payload hash\n /// @param _wallet The wallet to get the recovery payload hash for\n /// @param _payload The payload to get the recovery payload hash for\n /// @return The recovery payload hash\n function recoveryPayloadHash(\n address _wallet,\n Payload.Decoded calldata _payload\n ) public view returns (bytes32) {\n bytes32 domain = domainSeparator(_payload.noChainId, _wallet);\n bytes32 structHash = Payload.toEIP712(_payload);\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domain, structHash));\n }\n\n /// @inheritdoc ISapientCompact\n function recoverSapientSignatureCompact(\n bytes32 _payloadHash,\n bytes calldata _signature\n ) external view returns (bytes32) {\n (bool verified, bytes32 root) = _recoverBranch(msg.sender, _payloadHash, _signature);\n if (!verified) {\n revert QueueNotReady(msg.sender, _payloadHash);\n }\n\n return root;\n }\n\n /// @notice Queue a payload for recovery\n /// @param _wallet The wallet to queue the payload for\n /// @param _signer The signer to queue the payload for\n /// @param _payload The payload to queue\n /// @param _signature The signature to queue the payload for\n function queuePayload(\n address _wallet,\n address _signer,\n Payload.Decoded calldata _payload,\n bytes calldata _signature\n ) external {\n if (!isValidSignature(_wallet, _signer, _payload, _signature)) {\n revert InvalidSignature(_wallet, _signer, _payload, _signature);\n }\n\n bytes32 payloadHash = Payload.hashFor(_payload, _wallet);\n if (timestampForQueuedPayload[_wallet][_signer][payloadHash] != 0) {\n revert AlreadyQueued(_wallet, _signer, payloadHash);\n }\n\n timestampForQueuedPayload[_wallet][_signer][payloadHash] = block.timestamp;\n queuedPayloadHashes[_wallet][_signer].push(payloadHash);\n\n emit NewQueuedPayload(_wallet, _signer, payloadHash, block.timestamp);\n }\n\n function isValidSignature(\n address _wallet,\n address _signer,\n Payload.Decoded calldata _payload,\n bytes calldata _signature\n ) internal view returns (bool) {\n bytes32 rPayloadHash = recoveryPayloadHash(_wallet, _payload);\n\n if (_signature.length == 64) {\n // Try an ECDSA signature\n bytes32 r;\n bytes32 s;\n uint8 v;\n (r, s, v,) = _signature.readRSVCompact(0);\n\n address addr = ecrecover(rPayloadHash, v, r, s);\n if (addr == _signer) {\n return true;\n }\n }\n\n if (_signer.code.length != 0) {\n // ERC1271\n return IERC1271(_signer).isValidSignature(rPayloadHash, _signature) == IERC1271_MAGIC_VALUE_HASH;\n }\n\n return false;\n }\n\n}\n"},"src/modules/Payload.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { LibBytes } from \"../utils/LibBytes.sol\";\n\nusing LibBytes for bytes;\n\n/// @title Payload\n/// @author Agustin Aguilar, Michael Standen, William Hua\n/// @notice Library for encoding and decoding payloads\nlibrary Payload {\n\n /// @notice Error thrown when the kind is invalid\n error InvalidKind(uint8 kind);\n\n /// @notice Error thrown when the encoding is invalid\n error InvalidPackedLength();\n\n /// @dev keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\")\n bytes32 private constant EIP712_DOMAIN_TYPEHASH = 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f;\n\n /// @dev keccak256(\"Sequence Wallet\")\n bytes32 private constant EIP712_DOMAIN_NAME_SEQUENCE =\n 0x4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c56318;\n\n /// @dev keccak256(\"3\")\n bytes32 private constant EIP712_DOMAIN_VERSION_SEQUENCE =\n 0x2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de;\n\n function domainSeparator(bool _noChainId, address _wallet) internal view returns (bytes32 _domainSeparator) {\n return keccak256(\n abi.encode(\n EIP712_DOMAIN_TYPEHASH,\n EIP712_DOMAIN_NAME_SEQUENCE,\n EIP712_DOMAIN_VERSION_SEQUENCE,\n _noChainId ? uint256(0) : uint256(block.chainid),\n _wallet\n )\n );\n }\n\n /// @dev keccak256(\"Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\")\n bytes32 private constant CALL_TYPEHASH = 0x0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437;\n\n /// @dev keccak256(\"Calls(Call[] calls,uint256 space,uint256 nonce,address[] wallets)Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\")\n bytes32 private constant CALLS_TYPEHASH = 0x11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a2;\n\n /// @dev keccak256(\"Message(bytes message,address[] wallets)\")\n bytes32 private constant MESSAGE_TYPEHASH = 0xe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466;\n\n /// @dev keccak256(\"ConfigUpdate(bytes32 imageHash,address[] wallets)\")\n bytes32 private constant CONFIG_UPDATE_TYPEHASH = 0x11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4;\n\n /// @notice Kind of transaction\n uint8 public constant KIND_TRANSACTIONS = 0x00;\n /// @notice Kind of digest\n uint8 public constant KIND_MESSAGE = 0x01;\n /// @notice Kind of config update\n uint8 public constant KIND_CONFIG_UPDATE = 0x02;\n /// @notice Kind of message\n uint8 public constant KIND_DIGEST = 0x03;\n\n /// @notice Behavior on error: ignore error\n uint8 public constant BEHAVIOR_IGNORE_ERROR = 0x00;\n /// @notice Behavior on error: revert on error\n uint8 public constant BEHAVIOR_REVERT_ON_ERROR = 0x01;\n /// @notice Behavior on error: abort on error\n uint8 public constant BEHAVIOR_ABORT_ON_ERROR = 0x02;\n\n /// @notice Payload call information\n /// @param to Address of the target contract\n /// @param value Value to send with the call\n /// @param data Data to send with the call\n /// @param gasLimit Gas limit for the call\n /// @param delegateCall If the call is a delegate call\n /// @param onlyFallback If the call should only be executed in an error scenario\n /// @param behaviorOnError Behavior on error\n struct Call {\n address to;\n uint256 value;\n bytes data;\n uint256 gasLimit;\n bool delegateCall;\n bool onlyFallback;\n uint256 behaviorOnError;\n }\n\n /// @notice Decoded payload\n /// @param kind Kind of payload\n /// @param noChainId If the chain ID should be omitted\n /// @param calls Array of calls (transaction kind)\n /// @param space Nonce space for the calls (transaction kind)\n /// @param nonce Nonce value for the calls (transaction kind)\n /// @param message Message to validate (message kind)\n /// @param imageHash Image hash to update to (config update kind)\n /// @param digest Digest to validate (digest kind)\n /// @param parentWallets Parent wallets\n struct Decoded {\n uint8 kind;\n bool noChainId;\n // Transaction kind\n Call[] calls;\n uint256 space;\n uint256 nonce;\n // Message kind\n bytes message;\n // Config update kind\n bytes32 imageHash;\n // Digest kind for 1271\n bytes32 digest;\n // Parent wallets\n address[] parentWallets;\n }\n\n function fromMessage(\n bytes memory message\n ) internal pure returns (Decoded memory _decoded) {\n _decoded.kind = KIND_MESSAGE;\n _decoded.message = message;\n }\n\n function fromConfigUpdate(\n bytes32 imageHash\n ) internal pure returns (Decoded memory _decoded) {\n _decoded.kind = KIND_CONFIG_UPDATE;\n _decoded.imageHash = imageHash;\n }\n\n function fromDigest(\n bytes32 digest\n ) internal pure returns (Decoded memory _decoded) {\n _decoded.kind = KIND_DIGEST;\n _decoded.digest = digest;\n }\n\n function fromPackedCalls(\n bytes calldata packed\n ) internal view returns (Decoded memory _decoded) {\n _decoded.kind = KIND_TRANSACTIONS;\n\n // Read the global flag\n (uint256 globalFlag, uint256 pointer) = packed.readFirstUint8();\n\n // First bit determines if space is zero or not\n if (globalFlag & 0x01 == 0x01) {\n _decoded.space = 0;\n } else {\n (_decoded.space, pointer) = packed.readUint160(pointer);\n }\n\n // Next 3 bits determine the size of the nonce\n uint256 nonceSize = (globalFlag >> 1) & 0x07;\n\n if (nonceSize > 0) {\n // Read the nonce\n (_decoded.nonce, pointer) = packed.readUintX(pointer, nonceSize);\n }\n\n uint256 numCalls;\n\n // Bit 5 determines if the batch contains a single call\n if (globalFlag & 0x10 == 0x10) {\n numCalls = 1;\n } else {\n // Bit 6 determines if the number of calls uses 1 byte or 2 bytes\n if (globalFlag & 0x20 == 0x20) {\n (numCalls, pointer) = packed.readUint16(pointer);\n } else {\n (numCalls, pointer) = packed.readUint8(pointer);\n }\n }\n\n // Read the calls\n _decoded.calls = new Call[](numCalls);\n\n for (uint256 i = 0; i < numCalls; i++) {\n uint8 flags;\n (flags, pointer) = packed.readUint8(pointer);\n\n // First bit determines if this is a call to self\n // or a call to another address\n if (flags & 0x01 == 0x01) {\n // Call to self\n _decoded.calls[i].to = address(this);\n } else {\n // Call to another address\n (_decoded.calls[i].to, pointer) = packed.readAddress(pointer);\n }\n\n // Second bit determines if the call has value or not\n if (flags & 0x02 == 0x02) {\n (_decoded.calls[i].value, pointer) = packed.readUint256(pointer);\n }\n\n // Third bit determines if the call has data or not\n if (flags & 0x04 == 0x04) {\n // 3 bytes determine the size of the calldata\n uint256 calldataSize;\n (calldataSize, pointer) = packed.readUint24(pointer);\n _decoded.calls[i].data = packed[pointer:pointer + calldataSize];\n pointer += calldataSize;\n }\n\n // Fourth bit determines if the call has a gas limit or not\n if (flags & 0x08 == 0x08) {\n (_decoded.calls[i].gasLimit, pointer) = packed.readUint256(pointer);\n }\n\n // Fifth bit determines if the call is a delegate call or not\n _decoded.calls[i].delegateCall = (flags & 0x10 == 0x10);\n\n // Sixth bit determines if the call is fallback only\n _decoded.calls[i].onlyFallback = (flags & 0x20 == 0x20);\n\n // Last 2 bits are directly mapped to the behavior on error\n _decoded.calls[i].behaviorOnError = (flags & 0xC0) >> 6;\n }\n\n if (pointer != packed.length) {\n revert InvalidPackedLength();\n }\n\n return _decoded;\n }\n\n function hashCall(\n Call memory c\n ) internal pure returns (bytes32) {\n return keccak256(\n abi.encode(\n CALL_TYPEHASH, c.to, c.value, keccak256(c.data), c.gasLimit, c.delegateCall, c.onlyFallback, c.behaviorOnError\n )\n );\n }\n\n function hashCalls(\n Call[] memory calls\n ) internal pure returns (bytes32) {\n // In EIP712, an array is often hashed as the keccak256 of the concatenated\n // hashes of each item. So we hash each Call, pack them, and hash again.\n bytes32[] memory callHashes = new bytes32[](calls.length);\n for (uint256 i = 0; i < calls.length; i++) {\n callHashes[i] = hashCall(calls[i]);\n }\n return keccak256(abi.encodePacked(callHashes));\n }\n\n function toEIP712(\n Decoded memory _decoded\n ) internal pure returns (bytes32) {\n bytes32 walletsHash = keccak256(abi.encodePacked(_decoded.parentWallets));\n\n if (_decoded.kind == KIND_TRANSACTIONS) {\n bytes32 callsHash = hashCalls(_decoded.calls);\n return keccak256(abi.encode(CALLS_TYPEHASH, callsHash, _decoded.space, _decoded.nonce, walletsHash));\n } else if (_decoded.kind == KIND_MESSAGE) {\n return keccak256(abi.encode(MESSAGE_TYPEHASH, keccak256(_decoded.message), walletsHash));\n } else if (_decoded.kind == KIND_CONFIG_UPDATE) {\n return keccak256(abi.encode(CONFIG_UPDATE_TYPEHASH, _decoded.imageHash, walletsHash));\n } else if (_decoded.kind == KIND_DIGEST) {\n // Top-level: Use MESSAGE_TYPEHASH but assume the digest is already the hashed message\n return keccak256(abi.encode(MESSAGE_TYPEHASH, _decoded.digest, walletsHash));\n } else {\n // Unknown kind\n revert InvalidKind(_decoded.kind);\n }\n }\n\n function hash(\n Decoded memory _decoded\n ) internal view returns (bytes32) {\n bytes32 domain = domainSeparator(_decoded.noChainId, address(this));\n bytes32 structHash = toEIP712(_decoded);\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domain, structHash));\n }\n\n function hashFor(Decoded memory _decoded, address _wallet) internal view returns (bytes32) {\n bytes32 domain = domainSeparator(_decoded.noChainId, _wallet);\n bytes32 structHash = toEIP712(_decoded);\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domain, structHash));\n }\n\n}\n"},"src/modules/interfaces/IERC1271.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\nbytes4 constant IERC1271_MAGIC_VALUE_HASH = 0x1626ba7e;\nbytes4 constant IERC1271_MAGIC_VALUE_BYTES = 0x20c13b0b;\n\n/// @title IERC1271\n/// @notice Interface for ERC1271\ninterface IERC1271 {\n\n /// @notice Verifies whether the provided signature is valid with respect to the provided hash\n /// @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n /// > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\"isValidSignature(bytes32,bytes)\")\n /// > This function MAY modify Ethereum's state\n /// @param _hash keccak256 hash that was signed\n /// @param _signature Signature byte array associated with _data\n /// @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\n function isValidSignature(bytes32 _hash, bytes calldata _signature) external view returns (bytes4 magicValue);\n\n}\n\n/// @title IERC1271Data\n/// @notice Deprecated interface for ERC1271 using bytes instead of bytes32\ninterface IERC1271Data {\n\n /// @notice Verifies whether the provided signature is valid with respect to the provided hash\n /// @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n /// > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n /// > This function MAY modify Ethereum's state\n /// @param _data Data that was signed\n /// @param _signature Signature byte array associated with _data\n /// @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\n function isValidSignature(bytes calldata _data, bytes calldata _signature) external view returns (bytes4 magicValue);\n\n}\n"},"src/modules/interfaces/ISapient.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Payload } from \"../Payload.sol\";\n\n/// @title ISapient\n/// @author Agustin Aguilar, Michael Standen\n/// @notice Sapient signers take an explicit payload and return their own \"imageHash\" as result\n/// @dev The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration\ninterface ISapient {\n\n /// @notice Recovers the image hash of a given signature\n /// @param payload The payload to recover the signature from\n /// @param signature The signature to recover the image hash from\n /// @return imageHash The recovered image hash\n function recoverSapientSignature(\n Payload.Decoded calldata payload,\n bytes calldata signature\n ) external view returns (bytes32 imageHash);\n\n}\n\n/// @title ISapientCompact\n/// @author Agustin Aguilar, Michael Standen\n/// @notice Sapient signers take a compacted payload and return their own \"imageHash\" as result\n/// @dev The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration\ninterface ISapientCompact {\n\n /// @notice Recovers the image hash of a given signature, using a hashed payload\n /// @param digest The digest of the payload\n /// @param signature The signature to recover the image hash from\n /// @return imageHash The recovered image hash\n function recoverSapientSignatureCompact(\n bytes32 digest,\n bytes calldata signature\n ) external view returns (bytes32 imageHash);\n\n}\n"},"src/utils/LibBytes.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\n/// @title Library for reading data from bytes arrays\n/// @author Agustin Aguilar (aa@horizon.io), Michael Standen (mstan@horizon.io)\n/// @notice This library contains functions for reading data from bytes arrays.\n/// @dev These functions do not check if the input index is within the bounds of the data array.\n/// @dev Reading out of bounds may return dirty values.\nlibrary LibBytes {\n\n function readFirstUint8(\n bytes calldata _data\n ) internal pure returns (uint8 a, uint256 newPointer) {\n assembly {\n let word := calldataload(_data.offset)\n a := shr(248, word)\n newPointer := 1\n }\n }\n\n function readUint8(bytes calldata _data, uint256 _index) internal pure returns (uint8 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(248, word)\n newPointer := add(_index, 1)\n }\n }\n\n function readUint16(bytes calldata _data, uint256 _index) internal pure returns (uint16 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(240, word)\n newPointer := add(_index, 2)\n }\n }\n\n function readUint24(bytes calldata _data, uint256 _index) internal pure returns (uint24 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(232, word)\n newPointer := add(_index, 3)\n }\n }\n\n function readUint64(bytes calldata _data, uint256 _index) internal pure returns (uint64 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(192, word)\n newPointer := add(_index, 8)\n }\n }\n\n function readUint160(bytes calldata _data, uint256 _index) internal pure returns (uint160 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(96, word)\n newPointer := add(_index, 20)\n }\n }\n\n function readUint256(bytes calldata _data, uint256 _index) internal pure returns (uint256 a, uint256 newPointer) {\n assembly {\n a := calldataload(add(_index, _data.offset))\n newPointer := add(_index, 32)\n }\n }\n\n function readUintX(\n bytes calldata _data,\n uint256 _index,\n uint256 _length\n ) internal pure returns (uint256 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n let shift := sub(256, mul(_length, 8))\n a := and(shr(shift, word), sub(shl(mul(8, _length), 1), 1))\n newPointer := add(_index, _length)\n }\n }\n\n function readBytes4(bytes calldata _data, uint256 _pointer) internal pure returns (bytes4 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_pointer, _data.offset))\n a := and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n newPointer := add(_pointer, 4)\n }\n }\n\n function readBytes32(bytes calldata _data, uint256 _pointer) internal pure returns (bytes32 a, uint256 newPointer) {\n assembly {\n a := calldataload(add(_pointer, _data.offset))\n newPointer := add(_pointer, 32)\n }\n }\n\n function readAddress(bytes calldata _data, uint256 _index) internal pure returns (address a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := and(shr(96, word), 0xffffffffffffffffffffffffffffffffffffffff)\n newPointer := add(_index, 20)\n }\n }\n\n /// @dev ERC-2098 Compact Signature\n function readRSVCompact(\n bytes calldata _data,\n uint256 _index\n ) internal pure returns (bytes32 r, bytes32 s, uint8 v, uint256 newPointer) {\n uint256 yParityAndS;\n assembly {\n r := calldataload(add(_index, _data.offset))\n yParityAndS := calldataload(add(_index, add(_data.offset, 32)))\n newPointer := add(_index, 64)\n }\n uint256 yParity = uint256(yParityAndS >> 255);\n s = bytes32(uint256(yParityAndS) & ((1 << 255) - 1));\n v = uint8(yParity) + 27;\n }\n\n}\n"},"src/utils/LibOptim.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\n/// @title LibOptim\n/// @author Agustin Aguilar\n/// @notice Library for optimized EVM operations\nlibrary LibOptim {\n\n /**\n * @notice Computes the keccak256 hash of two 32-byte inputs.\n * @dev It uses only scratch memory space.\n * @param _a The first 32 bytes of the hash.\n * @param _b The second 32 bytes of the hash.\n * @return c The keccak256 hash of the two 32-byte inputs.\n */\n function fkeccak256(bytes32 _a, bytes32 _b) internal pure returns (bytes32 c) {\n assembly {\n mstore(0, _a)\n mstore(32, _b)\n c := keccak256(0, 64)\n }\n }\n\n /**\n * @notice Returns the return data from the last call.\n * @return r The return data from the last call.\n */\n function returnData() internal pure returns (bytes memory r) {\n assembly {\n let size := returndatasize()\n r := mload(0x40)\n let start := add(r, 32)\n mstore(0x40, add(start, size))\n mstore(r, size)\n returndatacopy(start, 0, size)\n }\n }\n\n /**\n * @notice Calls another contract with the given parameters.\n * @dev This method doesn't increase the memory pointer.\n * @param _to The address of the contract to call.\n * @param _val The value to send to the contract.\n * @param _gas The amount of gas to provide for the call.\n * @param _data The data to send to the contract.\n * @return r The success status of the call.\n */\n function call(address _to, uint256 _val, uint256 _gas, bytes memory _data) internal returns (bool r) {\n assembly {\n r := call(_gas, _to, _val, add(_data, 32), mload(_data), 0, 0)\n }\n }\n\n /**\n * @notice Calls another contract with the given parameters, using delegatecall.\n * @dev This method doesn't increase the memory pointer.\n * @param _to The address of the contract to call.\n * @param _gas The amount of gas to provide for the call.\n * @param _data The data to send to the contract.\n * @return r The success status of the call.\n */\n function delegatecall(address _to, uint256 _gas, bytes memory _data) internal returns (bool r) {\n assembly {\n r := delegatecall(_gas, _to, add(_data, 32), mload(_data), 0, 0)\n }\n }\n\n}\n"}},"settings":{"remappings":["account-abstraction/=lib/account-abstraction/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","erc2470-libs/=lib/erc2470-libs/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":4294967295},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"src/extensions/recovery/Recovery.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/Payload.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IERC1271.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/ISapient.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/utils/LibBytes.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/utils/LibOptim.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":true,"libraries":{}},"allowPaths":["/home/agusx1211/workspaces/wallet-contracts-v3","/home/agusx1211/workspaces/wallet-contracts-v3/lib"],"basePath":"/home/agusx1211/workspaces/wallet-contracts-v3","includePaths":["/home/agusx1211/workspaces/wallet-contracts-v3"]},"output":{"contracts":{"src/extensions/recovery/Recovery.sol":{"Recovery":{"abi":[{"type":"function","name":"queuePayload","inputs":[{"name":"_wallet","type":"address","internalType":"address"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"queuedPayloadHashes","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"recoverSapientSignatureCompact","inputs":[{"name":"_payloadHash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"recoveryPayloadHash","inputs":[{"name":"_wallet","type":"address","internalType":"address"},{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"timestampForQueuedPayload","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"totalQueuedPayloads","inputs":[{"name":"_wallet","type":"address","internalType":"address"},{"name":"_signer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"NewQueuedPayload","inputs":[{"name":"_wallet","type":"address","indexed":true,"internalType":"address"},{"name":"_signer","type":"address","indexed":true,"internalType":"address"},{"name":"_payloadHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"_timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AlreadyQueued","inputs":[{"name":"_wallet","type":"address","internalType":"address"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_payloadHash","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidSignature","inputs":[{"name":"_wallet","type":"address","internalType":"address"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignatureFlag","inputs":[{"name":"_flag","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"QueueNotReady","inputs":[{"name":"_wallet","type":"address","internalType":"address"},{"name":"_payloadHash","type":"bytes32","internalType":"bytes32"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"AlreadyQueued\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"QueueNotReady\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"NewQueuedPayload\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"queuePayload\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"queuedPayloadHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignatureCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"}],\"name\":\"recoveryPayloadHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"timestampForQueuedPayload\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"}],\"name\":\"totalQueuedPayloads\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, William Hua, Michael Standen\",\"kind\":\"dev\",\"methods\":{\"queuePayload(address,address,(uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"_payload\":\"The payload to queue\",\"_signature\":\"The signature to queue the payload for\",\"_signer\":\"The signer to queue the payload for\",\"_wallet\":\"The wallet to queue the payload for\"}},\"recoverSapientSignatureCompact(bytes32,bytes)\":{\"params\":{\"digest\":\"The digest of the payload\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"_0\":\"The recovered image hash\"}},\"recoveryPayloadHash(address,(uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]))\":{\"params\":{\"_payload\":\"The payload to get the recovery payload hash for\",\"_wallet\":\"The wallet to get the recovery payload hash for\"},\"returns\":{\"_0\":\"The recovery payload hash\"}},\"totalQueuedPayloads(address,address)\":{\"params\":{\"_signer\":\"The signer to get the total number of queued payloads for\",\"_wallet\":\"The wallet to get the total number of queued payloads for\"},\"returns\":{\"_0\":\"The total number of queued payloads\"}}},\"stateVariables\":{\"queuedPayloadHashes\":{\"details\":\"wallet -> signer -> payloadHash[]\"},\"timestampForQueuedPayload\":{\"details\":\"wallet -> signer -> payloadHash -> timestamp\"}},\"title\":\"Recovery\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyQueued(address,address,bytes32)\":[{\"notice\":\"Error thrown when the payload is already queued\"}],\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidSignature(address,address,(uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when the signature is invalid\"}],\"InvalidSignatureFlag(uint256)\":[{\"notice\":\"Error thrown when the signature flag is invalid\"}],\"QueueNotReady(address,bytes32)\":[{\"notice\":\"Error thrown when the queue is not ready\"}]},\"events\":{\"NewQueuedPayload(address,address,bytes32,uint256)\":{\"notice\":\"Emitted when a new payload is queued\"}},\"kind\":\"user\",\"methods\":{\"queuePayload(address,address,(uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Queue a payload for recovery\"},\"queuedPayloadHashes(address,address,uint256)\":{\"notice\":\"Mapping of queued payload hashes\"},\"recoverSapientSignatureCompact(bytes32,bytes)\":{\"notice\":\"Recovers the image hash of a given signature, using a hashed payload\"},\"recoveryPayloadHash(address,(uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]))\":{\"notice\":\"Get the recovery payload hash\"},\"timestampForQueuedPayload(address,address,bytes32)\":{\"notice\":\"Mapping of queued timestamps\"},\"totalQueuedPayloads(address,address)\":{\"notice\":\"Get the total number of queued payloads\"}},\"notice\":\"A recovery mode sapient signer\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/extensions/recovery/Recovery.sol\":\"Recovery\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/extensions/recovery/Recovery.sol\":{\"keccak256\":\"0x7298c37cb748ab88d83ff667911faf1329a24c477b910e8cab45a0986e1e707e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6cdf5b30523e288650332a7c940fde1a3a65d9ef67019311331e160d078fd2ec\",\"dweb:/ipfs/QmdzU4myrcAN3DQ6meUFNPmGWTUsNSeLXnC3o9qL8dSAN2\"]},\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"6080806040523460155761190b908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630e159f8014610077578063898bd92114610072578063b00c84841461006d578063b05f87db14610068578063d834bcbf146100635763ec08af331461005e57600080fd5b610644565b610590565b6102e6565b61027b565b6101b6565b3461011c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011c576100ae610121565b6101056100b9610144565b73ffffffffffffffffffffffffffffffffffffffff6044359316600052600060205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b906000526020526020604060002054604051908152f35b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361011c57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361011c57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361011c57565b9181601f8401121561011c5782359167ffffffffffffffff831161011c576020838186019501011161011c57565b3461011c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011c5760043560243567ffffffffffffffff811161011c5761020b610213913690600401610188565b90833361101d565b901561022457602090604051908152f35b507f904689fc0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff331660045260245260446000fd5b908161012091031261011c5790565b3461011c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011c576102b2610121565b60243567ffffffffffffffff811161011c576020916102d86102de92369060040161026c565b90610a6d565b604051908152f35b3461011c5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011c5761031d610121565b610325610144565b60443567ffffffffffffffff811161011c5761034590369060040161026c565b60643567ffffffffffffffff811161011c57610365903690600401610188565b9061037a610376838386888a61145a565b1590565b6105095750508261038f6103949236906109a1565b6115d4565b906103fb826103ec836103c78773ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b90600052602052604060002090565b546104ba5773ffffffffffffffffffffffffffffffffffffffff7faeb5575092e25ccd826d5de3515c096028bb338c1f304db40dc831c3746ee0ae914261046a856103ec846103c78a73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b556104a28461049d836103c78973ffffffffffffffffffffffffffffffffffffffff166000526001602052604060002090565b610f60565b604080519485524260208601529082169490911692a3005b7f654c8bbf0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff9283166004529190911660245260445260646000fd5b6040517f44b7a405000000000000000000000000000000000000000000000000000000008152948594610540949160048701610e1f565b0390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805482101561058b5760005260206000200190600090565b610544565b3461011c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011c576105c7610121565b61061e6105d2610144565b73ffffffffffffffffffffffffffffffffffffffff6044359316600052600160205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b90815481101561011c5761063191610573565b905460405160039290921b1c8152602090f35b3461011c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011c5760206106d0610680610121565b73ffffffffffffffffffffffffffffffffffffffff61069d610144565b91166000526001835260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b8015150361011c57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761075357604052565b6106e3565b6040519061076760e083610712565b565b6040519061076761012083610712565b359060ff8216820361011c57565b3590610767826106d9565b67ffffffffffffffff81116107535760051b60200190565b81601f8201121561011c5780359067ffffffffffffffff821161075357604051926107fd60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185610712565b8284526020838301011161011c57816000926020809301838601378301015290565b81601f8201121561011c5780359061083682610792565b926108446040519485610712565b82845260208085019360051b8301019181831161011c5760208101935b83851061087057505050505090565b843567ffffffffffffffff811161011c57820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828603011261011c576108b7610758565b916108c460208301610167565b83526040820135602084015260608201359267ffffffffffffffff841161011c5760e0836108f98860208098819801016107aa565b60408401526080810135606084015261091460a08201610787565b608084015261092560c08201610787565b60a0840152013560c0820152815201940193610861565b9080601f8301121561011c57813561095381610792565b926109616040519485610712565b81845260208085019260051b82010192831161011c57602001905b8282106109895750505090565b6020809161099684610167565b81520191019061097c565b9190916101208184031261011c576109b7610769565b926109c182610779565b84526109cf60208301610787565b6020850152604082013567ffffffffffffffff811161011c57816109f491840161081f565b6040850152606082013560608501526080820135608085015260a082013567ffffffffffffffff811161011c5781610a2d9184016107aa565b60a085015260c082013560c085015260e082013560e085015261010082013567ffffffffffffffff811161011c57610a65920161093c565b610100830152565b610bb6610b48610b43610b8a936020860135610a88816106d9565b15610bbc576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527fd50a220b5983c5d6e86926072ffa8a3197ae49602ffc9dd0e60d62d561a2e1d560408501527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606085015260808401521660a082015260a08152610b3860c082610712565b5190209436906109a1565b611224565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610712565b51902090565b4690610a91565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561011c57016020813591019167ffffffffffffffff821161011c578160051b3603831361011c57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561011c57016020813591019167ffffffffffffffff821161011c57813603831361011c57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90602083828152019160208260051b8501019381936000915b848310610cce5750505050505090565b9091929394957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08282030183528635907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff218636030182121561011c576020809187600194019073ffffffffffffffffffffffffffffffffffffffff610d5283610167565b168152828201358382015260c080610d81610d706040860186610c16565b60e0604087015260e0860191610c66565b93606081013560608501526080810135610d9a816106d9565b15156080850152610dbb60a0820135610db2816106d9565b151560a0860152565b01359101529801930193019194939290610cbe565b9160209082815201919060005b818110610dea5750505090565b90919260208060019273ffffffffffffffffffffffffffffffffffffffff610e1188610167565b168152019401929101610ddd565b93919273ffffffffffffffffffffffffffffffffffffffff610f5d969481610f4f9416875216602086015260806040860152610e6860808601610e6183610779565b60ff169052565b610e80610e7760208301610787565b151560a0870152565b610f1e610efc610ea9610e966040850185610bc3565b61012060c08b01526101a08a0191610ca5565b606084013560e08901526080840135610100890152610ecb60a0850185610c16565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8403016101208b0152610c66565b9160c081013561014088015260e0810135610160880152610100810190610bc3565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8087840301610180880152610dd0565b926060818503910152610c66565b90565b80546801000000000000000081101561075357610f8291600182018155610573565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff829392549160031b92831b921b1916179055565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b91908203918211610ff357565b610fb7565b91908201809211610ff357565b9093929384831161011c57841161011c578101920390565b600094938593929091845b8381106110385750505050509190565b8481013560f81c97959060019081019081908a146111165750600389146110ea5760048914611090577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b6003810198506110bf906110b7906110ae9088013560e81c8b610ff8565b809a8789611005565b90858561101d565b906110dc929081156110e2575b5096600052602052604060002090565b96611028565b9050386110cc565b95975094808501359060200197801561111057906110dc91600052602052604060002090565b506110dc565b67ffffffffffffffff9950919691868101803560601c9250601481013560e81c9160179091013560c01c90601f019a1691611179866103ec836103c78973ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b548281151591826111d5575b826111c0575b50506111b7575b9061119d92916116a8565b90801561111057906110dc91600052602052604060002090565b60019850611192565b6111cc91925042610fe6565b1015823861118b565b858110159250611185565b805160209091019060005b8181106111f85750505090565b825173ffffffffffffffffffffffffffffffffffffffff168452602093840193909201916001016111eb565b61010081015160405161123f81610b8a6020820180956111e0565b5190209061124e815160ff1690565b60ff8116806112c757505090610bb661126a604084015161175a565b92610b8a60806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b6001810361132557505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d46693810193845290810191909152606081019290925290610bb68160808101610b8a565b6002810361137b57505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e460208201908152918101929092526060820192909252610bb68160808101610b8a565b6003036113cf575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d46660208201908152918101929092526060820192909252610bb68160808101610b8a565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b6040513d6000823e3d90fd5b9081602091031261011c57517fffffffff000000000000000000000000000000000000000000000000000000008116810361011c5790565b604090610f5d949281528160208201520191610c66565b9161146791939492610a6d565b9160408214611564575b803b6114805750505050600090565b6114d29373ffffffffffffffffffffffffffffffffffffffff602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501611443565b0392165afa90811561155f577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091611530575b50161490565b611552915060203d602011611558575b61154a8183610712565b81019061140b565b3861152a565b503d611540565b6113ff565b6020600061159b61157487611895565b50604080518a815260ff909216602083015281019290925260608201529081906080820190565b838052039060015afa1561155f5760005173ffffffffffffffffffffffffffffffffffffffff8083169116036114715750505050600190565b90610bb6610b48610b8a92602085015115156000146116a1576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261169860c082610712565b51902093611224565b46906115f1565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e6365207265636f76657279206c6561663a0a0000000000000000865260601b166038840152604c830152606c820152606c8152610bb6608c82610712565b805182101561058b5760209160051b010190565b805160209091019060005b8181106117445750505090565b8251845260209384019390920191600101611737565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06117a061178a83610792565b926117986040519485610712565b808452610792565b0136602083013760005b835181101561187c57806117c060019286611718565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e0830152610100820152610100815261186861012082610712565b5190206118758285611718565b52016117aa565b50909150604051610bb681610b8a60208201809561172c565b9060208235920135906040601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff8111610ff3579156fea26469706673582212205101f294682e4773db9baafc03cd69f247be48e618b0f2afc23a58b935d3712064736f6c634300081c0033","sourceMap":"539:7347:0:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"6080604052600436101561001257600080fd5b60003560e01c80630e159f8014610077578063898bd92114610072578063b00c84841461006d578063b05f87db14610068578063d834bcbf146100635763ec08af331461005e57600080fd5b610644565b610590565b6102e6565b61027b565b6101b6565b3461011c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011c576100ae610121565b6101056100b9610144565b73ffffffffffffffffffffffffffffffffffffffff6044359316600052600060205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b906000526020526020604060002054604051908152f35b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361011c57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361011c57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361011c57565b9181601f8401121561011c5782359167ffffffffffffffff831161011c576020838186019501011161011c57565b3461011c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011c5760043560243567ffffffffffffffff811161011c5761020b610213913690600401610188565b90833361101d565b901561022457602090604051908152f35b507f904689fc0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff331660045260245260446000fd5b908161012091031261011c5790565b3461011c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011c576102b2610121565b60243567ffffffffffffffff811161011c576020916102d86102de92369060040161026c565b90610a6d565b604051908152f35b3461011c5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011c5761031d610121565b610325610144565b60443567ffffffffffffffff811161011c5761034590369060040161026c565b60643567ffffffffffffffff811161011c57610365903690600401610188565b9061037a610376838386888a61145a565b1590565b6105095750508261038f6103949236906109a1565b6115d4565b906103fb826103ec836103c78773ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b90600052602052604060002090565b546104ba5773ffffffffffffffffffffffffffffffffffffffff7faeb5575092e25ccd826d5de3515c096028bb338c1f304db40dc831c3746ee0ae914261046a856103ec846103c78a73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b556104a28461049d836103c78973ffffffffffffffffffffffffffffffffffffffff166000526001602052604060002090565b610f60565b604080519485524260208601529082169490911692a3005b7f654c8bbf0000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff9283166004529190911660245260445260646000fd5b6040517f44b7a405000000000000000000000000000000000000000000000000000000008152948594610540949160048701610e1f565b0390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805482101561058b5760005260206000200190600090565b610544565b3461011c5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011c576105c7610121565b61061e6105d2610144565b73ffffffffffffffffffffffffffffffffffffffff6044359316600052600160205260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b90815481101561011c5761063191610573565b905460405160039290921b1c8152602090f35b3461011c5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011c5760206106d0610680610121565b73ffffffffffffffffffffffffffffffffffffffff61069d610144565b91166000526001835260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b8015150361011c57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761075357604052565b6106e3565b6040519061076760e083610712565b565b6040519061076761012083610712565b359060ff8216820361011c57565b3590610767826106d9565b67ffffffffffffffff81116107535760051b60200190565b81601f8201121561011c5780359067ffffffffffffffff821161075357604051926107fd60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185610712565b8284526020838301011161011c57816000926020809301838601378301015290565b81601f8201121561011c5780359061083682610792565b926108446040519485610712565b82845260208085019360051b8301019181831161011c5760208101935b83851061087057505050505090565b843567ffffffffffffffff811161011c57820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828603011261011c576108b7610758565b916108c460208301610167565b83526040820135602084015260608201359267ffffffffffffffff841161011c5760e0836108f98860208098819801016107aa565b60408401526080810135606084015261091460a08201610787565b608084015261092560c08201610787565b60a0840152013560c0820152815201940193610861565b9080601f8301121561011c57813561095381610792565b926109616040519485610712565b81845260208085019260051b82010192831161011c57602001905b8282106109895750505090565b6020809161099684610167565b81520191019061097c565b9190916101208184031261011c576109b7610769565b926109c182610779565b84526109cf60208301610787565b6020850152604082013567ffffffffffffffff811161011c57816109f491840161081f565b6040850152606082013560608501526080820135608085015260a082013567ffffffffffffffff811161011c5781610a2d9184016107aa565b60a085015260c082013560c085015260e082013560e085015261010082013567ffffffffffffffff811161011c57610a65920161093c565b610100830152565b610bb6610b48610b43610b8a936020860135610a88816106d9565b15610bbc576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527fd50a220b5983c5d6e86926072ffa8a3197ae49602ffc9dd0e60d62d561a2e1d560408501527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606085015260808401521660a082015260a08152610b3860c082610712565b5190209436906109a1565b611224565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610712565b51902090565b4690610a91565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561011c57016020813591019167ffffffffffffffff821161011c578160051b3603831361011c57565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561011c57016020813591019167ffffffffffffffff821161011c57813603831361011c57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90602083828152019160208260051b8501019381936000915b848310610cce5750505050505090565b9091929394957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08282030183528635907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff218636030182121561011c576020809187600194019073ffffffffffffffffffffffffffffffffffffffff610d5283610167565b168152828201358382015260c080610d81610d706040860186610c16565b60e0604087015260e0860191610c66565b93606081013560608501526080810135610d9a816106d9565b15156080850152610dbb60a0820135610db2816106d9565b151560a0860152565b01359101529801930193019194939290610cbe565b9160209082815201919060005b818110610dea5750505090565b90919260208060019273ffffffffffffffffffffffffffffffffffffffff610e1188610167565b168152019401929101610ddd565b93919273ffffffffffffffffffffffffffffffffffffffff610f5d969481610f4f9416875216602086015260806040860152610e6860808601610e6183610779565b60ff169052565b610e80610e7760208301610787565b151560a0870152565b610f1e610efc610ea9610e966040850185610bc3565b61012060c08b01526101a08a0191610ca5565b606084013560e08901526080840135610100890152610ecb60a0850185610c16565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8403016101208b0152610c66565b9160c081013561014088015260e0810135610160880152610100810190610bc3565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8087840301610180880152610dd0565b926060818503910152610c66565b90565b80546801000000000000000081101561075357610f8291600182018155610573565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff829392549160031b92831b921b1916179055565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b91908203918211610ff357565b610fb7565b91908201809211610ff357565b9093929384831161011c57841161011c578101920390565b600094938593929091845b8381106110385750505050509190565b8481013560f81c97959060019081019081908a146111165750600389146110ea5760048914611090577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b6003810198506110bf906110b7906110ae9088013560e81c8b610ff8565b809a8789611005565b90858561101d565b906110dc929081156110e2575b5096600052602052604060002090565b96611028565b9050386110cc565b95975094808501359060200197801561111057906110dc91600052602052604060002090565b506110dc565b67ffffffffffffffff9950919691868101803560601c9250601481013560e81c9160179091013560c01c90601f019a1691611179866103ec836103c78973ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b548281151591826111d5575b826111c0575b50506111b7575b9061119d92916116a8565b90801561111057906110dc91600052602052604060002090565b60019850611192565b6111cc91925042610fe6565b1015823861118b565b858110159250611185565b805160209091019060005b8181106111f85750505090565b825173ffffffffffffffffffffffffffffffffffffffff168452602093840193909201916001016111eb565b61010081015160405161123f81610b8a6020820180956111e0565b5190209061124e815160ff1690565b60ff8116806112c757505090610bb661126a604084015161175a565b92610b8a60806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b6001810361132557505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d46693810193845290810191909152606081019290925290610bb68160808101610b8a565b6002810361137b57505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e460208201908152918101929092526060820192909252610bb68160808101610b8a565b6003036113cf575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d46660208201908152918101929092526060820192909252610bb68160808101610b8a565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b6040513d6000823e3d90fd5b9081602091031261011c57517fffffffff000000000000000000000000000000000000000000000000000000008116810361011c5790565b604090610f5d949281528160208201520191610c66565b9161146791939492610a6d565b9160408214611564575b803b6114805750505050600090565b6114d29373ffffffffffffffffffffffffffffffffffffffff602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501611443565b0392165afa90811561155f577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091611530575b50161490565b611552915060203d602011611558575b61154a8183610712565b81019061140b565b3861152a565b503d611540565b6113ff565b6020600061159b61157487611895565b50604080518a815260ff909216602083015281019290925260608201529081906080820190565b838052039060015afa1561155f5760005173ffffffffffffffffffffffffffffffffffffffff8083169116036114715750505050600190565b90610bb6610b48610b8a92602085015115156000146116a1576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261169860c082610712565b51902093611224565b46906115f1565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e6365207265636f76657279206c6561663a0a0000000000000000865260601b166038840152604c830152606c820152606c8152610bb6608c82610712565b805182101561058b5760209160051b010190565b805160209091019060005b8181106117445750505090565b8251845260209384019390920191600101611737565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06117a061178a83610792565b926117986040519485610712565b808452610792565b0136602083013760005b835181101561187c57806117c060019286611718565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e0830152610100820152610100815261186861012082610712565b5190206118758285611718565b52016117aa565b50909150604051610bb681610b8a60208201809561172c565b9060208235920135906040601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff8111610ff3579156fea26469706673582212205101f294682e4773db9baafc03cd69f247be48e618b0f2afc23a58b935d3712064736f6c634300081c0033","sourceMap":"539:7347:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;2270:100;539:7347;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;2270:100;539:7347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;6027:52;539:7347;;;;;;:::i;:::-;6042:10;;;6027:52;:::i;:::-;6089:9;;6085:76;;539:7347;;;;;;;;6085:76;6115:39;;-1:-1:-1;6115:39:0;539:7347;6042:10;539:7347;;;;;;-1:-1:-1;6115:39:0;539:7347;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6608:56;6607:57;6608:56;;;;;;;:::i;:::-;6607:57;;539:7347;6607:57;6603:141;;539:7347;;;;6772:34;539:7347;;;;:::i;:::-;6772:34;:::i;:::-;6816;:56;:34;:43;:34;;;539:7347;;6816:25;539:7347;6816:25;539:7347;;;6816:25;539:7347;;;6816:34;539:7347;;;;;;;;;;;;6816:43;539:7347;;;;;;;;;;6816:56;539:7347;6812:133;;539:7347;7098:64;7010:15;;6951:56;:34;:43;:34;;;539:7347;;6816:25;539:7347;6816:25;539:7347;;;6816:25;539:7347;;;6951:56;539:7347;7031:55;:28;:37;:28;;;539:7347;;;;7031:19;539:7347;;;;;;;7031:37;:55;:::i;:::-;539:7347;;;;;;7010:15;539:7347;;;;;;;;;;;;7098:64;539:7347;6812:133;6894:44;-1:-1:-1;6894:44:0;539:7347;;;;;;;;;;;;;;;-1:-1:-1;6894:44:0;6603:141;539:7347;;6681:56;;;539:7347;;;6681:56;;539:7347;;6681:56;;;:::i;:::-;;;;539:7347;;;;;;;;;;;;;;;;;;-1:-1:-1;539:7347:0;;-1:-1:-1;539:7347:0;;;-1:-1:-1;539:7347:0;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;2467:76;539:7347;;:::i;:::-;;;;;;-1:-1:-1;539:7347:0;2467:76;539:7347;;;-1:-1:-1;539:7347:0;;;;;;;;;;;;;2467:76;539:7347;;;2467:76;;;;;;;;:::i;:::-;539:7347;;;;;;;;;;;;;;;;;;;;;;;;;;;2928:37;539:7347;;:::i;:::-;;;;:::i;:::-;;;-1:-1:-1;539:7347:0;2928:19;539:7347;;;-1:-1:-1;539:7347:0;;;;;;;;;;;;;2928:37;539:7347;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;539:7347:0;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;5498:320::-;5764:48;5715:26;539:7347;5764:48;5498:320;5660:18;;;539:7347;;;;:::i;:::-;2083:48;;;-1:-1:-1;2083:48:0;;539:7347;;;1954:202;5660:18;1954:202;;;635:95;539:7347;;790:44;539:7347;896:14;;539:7347;896:14;;;;539:7347;896:14;;;539:7347;;896:14;;;539:7347;896:14;1954:202;;;;;;:::i;:::-;539:7347;1937:225;;539:7347;;;;:::i;:::-;5715:26;:::i;:::-;539:7347;;5764:48;;;5660:18;5764:48;;;;539:7347;;;;;;;;;;;;;;;;;;5764:48;;1954:202;5764:48;;;;;;:::i;:::-;539:7347;5754:59;;5498:320;:::o;2083:48::-;2117:13;2083:48;;;539:7347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;539:7347:0;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;539:7347:0;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;539:7347:0;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;1013:1::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;1101:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;3249:2021::-;539:7347;;3249:2021;539:7347;;3249:2021;;;539:7347;3441:26;;;;;;5242:23;;;;;;3249:2021;:::o;3434:1802::-;798:135:4;;;;;;;683:254;;798:135;;;;;;;3624:26:0;;3620:845;;4477:17;1056:1;4477:17;;4473:231;;1101:1;4716:19;;4712:476;;5203:26;539:7347;5203:26;1101:1;539:7347;;;;-1:-1:-1;6894:44:0;4712:476;1318:135:4;;;;-1:-1:-1;4978:65:0;;5016:26;;4920:13;;1318:135:4;;;;;;4920:13:0;:::i;:::-;5016:26;;;;;:::i;:::-;4978:65;;;;:::i;:::-;;5129:32;4978:65;5053:16;5091:21;;;;4712:476;5080:32;5129;545:85:5;;;;;;;461:173;;5129:32:0;5171:8;3434:1802;;5091:21;;;;;;4473:231;2926:232:4;;-1:-1:-1;2926:232:4;3047:107;;;;;;;4618:59:0;:18;;;;4639:31;;;545:85:5;;;;;;;461:173;;4618:59:0;;;;3620:845;1013:1;;-1:-1:-1;3162:307:4;;;3281:184;;;;;;;;-1:-1:-1;3281:184:4;1318:135;;;;;;;1578;;;;;;;;;3929:54:0;1013:1;4074:34;:56;:34;:42;:34;;;539:7347;;6816:25;539:7347;6816:25;539:7347;;;6816:25;539:7347;;;4074:56;539:7347;4144:13;;;;:41;;;;3620:845;4144:92;;;3620:845;4140:136;;;;3620:845;4301:61;;;;;:::i;:::-;4379:59;:18;;;;4400:31;;;545:85:5;;;;;;;461:173;;4140:136:0;1013:1;;-1:-1:-1;4140:136:0;;4144:92;4189:26;:15;;;;:26;:::i;:::-;:47;;4144:92;;;;:41;4161:24;;;;;-1:-1:-1;4144:41:0;;539:7347;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;8435:972:1;8573:22;;;;539:7347:0;;8556:40:1;;539:7347:0;8556:40:1;;;539:7347:0;;;:::i;8556:40:1:-;539:7347:0;8546:51:1;;539:7347:0;;;;;;;;;;;;8608:34:1;539:7347:0;;8682:14:1;;;8722:82;8672:25;539:7347:0;8682:14:1;;;8672:25;:::i;:::-;8760:14;8722:82;8776:14;8760;;;1887:66;8776:14;;1887:66;539:7347:0;;;8722:82:1;;;8556:40;8722:82;;;;1887:66;;;;;;;;;539:7347:0;1887:66:1;539:7347:0;;1887:66:1;;;539:7347:0;1887:66:1;;;539:7347:0;1887:66:1;;;539:7347:0;1887:66:1;539:7347:0;1887:66:1;8604:799;2483:4;8822:29;;2483:4;;-1:-1:-1;;8917:16:1;;;539:7347:0;;8556:40:1;539:7347:0;;;8907:27:1;539:7347:0;;;2067:66:1;8878:70;;;539:7347:0;;;2067:66:1;;;539:7347:0;;;;2067:66:1;;;539:7347:0;;;;8878:70:1;;539:7347:0;2067:66:1;;;8878:70;2067:66;8818:585;2570:4;8966:35;;2570:4;;-1:-1:-1;;9063:18:1;;2067:66;539:7347:0;;;2262:66:1;8556:40;9028:67;;539:7347:0;;;2067:66:1;;;539:7347:0;;;;2067:66:1;;;539:7347:0;;;;9028:67:1;539:7347:0;2067:66:1;;;9028:67;2067:66;8962:441;2644:4;9113:28;2644:4;;-1:-1:-1;9290:15:1;;2067:66;539:7347:0;;;2067:66:1;8556:40;9261:58;;539:7347:0;;;2067:66:1;;;539:7347:0;;;;2067:66:1;;;539:7347:0;;;;9261:58:1;539:7347:0;2067:66:1;;;9261:58;2067:66;9109:294;9370:26;539:7347:0;9370:26:1;539:7347:0;;9370:26:1;539:7347:0;2644:4:1;-1:-1:-1;6894:44:0;539:7347;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;7171:712::-;;7371:38;7171:712;;;;7371:38;:::i;:::-;7420:23;7441:2;7420:23;;7416:280;;7171:712;7706:19;;7702:158;;7866:12;;;;539:7347;7171:712;:::o;7702:158::-;7764:60;539:7347;;7764:60;539:7347;7441:2;539:7347;7764:60;;;;;;;539:7347;7764:60;;;;;;:::i;:::-;;539:7347;;7764:60;;;;;;;539:7347;7764:60;539:7347;7764:60;539:7347;7764:60;;;7702:158;539:7347;;7764:89;7757:96;:::o;7764:60::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7416:280::-;7599:32;539:7347;7599:32;3511:494:4;;;:::i;:::-;-1:-1:-1;7441:2:0;539:7347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7599:32;;;;;;;;;;;;539:7347;7599:32;539:7347;;;;;;7643:15;7416:280;7639:51;7670:11;;;;7599:32;7670:11;:::o;9689:280:1:-;;9915:48;9874:18;9915:48;9689:280;9819:18;;;539:7347:0;;;1294:48:1;;;;-1:-1:-1;1294:48:1;;539:7347:0;;;1165:202:1;9819:18;1165:202;;;627:66;539:7347:0;;797:66:1;539:7347:0;896:14;;539:7347;956:66:1;896:14:0;;;539:7347;896:14;;;539:7347;;896:14;;;539:7347;896:14;1165:202:1;;;;;;:::i;:::-;539:7347:0;1148:225:1;;9874:18;;:::i;1294:48::-;1328:13;1294:48;;;2981:264:0;;539:7347;;3150:89;539:7347;3150:89;;;539:7347;;;;;;;;;;;;;;;;;;;;3150:89;;;;;;:::i;539:7347::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;7977:454:1;;539:7347:0;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;-1:-1:-1;8321:3:1;539:7347:0;;8303:16:1;;;;;8359:8;;539:7347:0;8359:8:1;;;:::i;:::-;;539:7347:0;1566:66:1;;539:7347:0;7865:7:1;539:7347:0;7865:7:1;;1887:66;7884:6;539:7347:0;7884:6:1;;;539:7347:0;;;;;7874:17:1;7893:10;;;;1887:66;7905:14;;;539:7347:0;;;7921:14:1;7937:17;7921:14;;;539:7347:0;;;7937:17:1;;1887:66;539:7347:0;;;7824:138:1;539:7347:0;7824:138:1;;539:7347:0;1566:66:1;539:7347:0;;;1566:66:1;;539:7347:0;7893:10:1;1566:66;;539:7347:0;7905:14:1;1566:66;;539:7347:0;7921:14:1;1566:66;;539:7347:0;7937:17:1;1566:66;;539:7347:0;1566:66:1;;;539:7347:0;1566:66:1;;;539:7347:0;1566:66:1;7824:138;;;;;;:::i;:::-;539:7347:0;7807:161:1;;8334:34;;;;:::i;:::-;539:7347:0;;8288:13:1;;8303:16;;;;;539:7347:0;;8397:28:1;;539:7347:0;;8397:28:1;;539:7347:0;;;:::i;3511:494:4:-;;3690:173;;;;;;;;3998:2;3955:14;3931:39;;539:7347:0;;;;;;;;;3511:494:4;:::o","linkReferences":{}},"methodIdentifiers":{"queuePayload(address,address,(uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"b05f87db","queuedPayloadHashes(address,address,uint256)":"d834bcbf","recoverSapientSignatureCompact(bytes32,bytes)":"898bd921","recoveryPayloadHash(address,(uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]))":"b00c8484","timestampForQueuedPayload(address,address,bytes32)":"0e159f80","totalQueuedPayloads(address,address)":"ec08af33"}}}},"src/modules/Payload.sol":{"Payload":{"abi":[{"type":"function","name":"BEHAVIOR_ABORT_ON_ERROR","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"BEHAVIOR_IGNORE_ERROR","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"BEHAVIOR_REVERT_ON_ERROR","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"KIND_CONFIG_UPDATE","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"KIND_DIGEST","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"KIND_MESSAGE","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"KIND_TRANSACTIONS","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidPackedLength","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPackedLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BEHAVIOR_ABORT_ON_ERROR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BEHAVIOR_IGNORE_ERROR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BEHAVIOR_REVERT_ON_ERROR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KIND_CONFIG_UPDATE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KIND_DIGEST\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KIND_MESSAGE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KIND_TRANSACTIONS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen, William Hua\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"CALLS_TYPEHASH\":{\"details\":\"keccak256(\\\"Calls(Call[] calls,uint256 space,uint256 nonce,address[] wallets)Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\\\")\"},\"CALL_TYPEHASH\":{\"details\":\"keccak256(\\\"Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\\\")\"},\"CONFIG_UPDATE_TYPEHASH\":{\"details\":\"keccak256(\\\"ConfigUpdate(bytes32 imageHash,address[] wallets)\\\")\"},\"EIP712_DOMAIN_NAME_SEQUENCE\":{\"details\":\"keccak256(\\\"Sequence Wallet\\\")\"},\"EIP712_DOMAIN_TYPEHASH\":{\"details\":\"keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\")\"},\"EIP712_DOMAIN_VERSION_SEQUENCE\":{\"details\":\"keccak256(\\\"3\\\")\"},\"MESSAGE_TYPEHASH\":{\"details\":\"keccak256(\\\"Message(bytes message,address[] wallets)\\\")\"}},\"title\":\"Payload\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidPackedLength()\":[{\"notice\":\"Error thrown when the encoding is invalid\"}]},\"kind\":\"user\",\"methods\":{\"BEHAVIOR_ABORT_ON_ERROR()\":{\"notice\":\"Behavior on error: abort on error\"},\"BEHAVIOR_IGNORE_ERROR()\":{\"notice\":\"Behavior on error: ignore error\"},\"BEHAVIOR_REVERT_ON_ERROR()\":{\"notice\":\"Behavior on error: revert on error\"},\"KIND_CONFIG_UPDATE()\":{\"notice\":\"Kind of config update\"},\"KIND_DIGEST()\":{\"notice\":\"Kind of message\"},\"KIND_MESSAGE()\":{\"notice\":\"Kind of digest\"},\"KIND_TRANSACTIONS()\":{\"notice\":\"Kind of transaction\"}},\"notice\":\"Library for encoding and decoding payloads\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/Payload.sol\":\"Payload\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601957610182908161001f823930815050f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630739d59a146100ad578063075a3d2d146100a85780633d5c1f9b146100a3578063420b0c25146100ad5780634a7d2aa0146100a85780634e5f5715146100a35763b570180a1461006957600080fd5b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160038152f35b600080fd5b610117565b6100e2565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160028152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160008152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160018152f3fea2646970667358221220fb3b37a4e71c3907c9bce206c87cf070ca2dbe4b06360016ce0001f18c92a7b764736f6c634300081c0033","sourceMap":"275:9697:1:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"6080604052600436101561001257600080fd5b60003560e01c80630739d59a146100ad578063075a3d2d146100a85780633d5c1f9b146100a3578063420b0c25146100ad5780634a7d2aa0146100a85780634e5f5715146100a35763b570180a1461006957600080fd5b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160038152f35b600080fd5b610117565b6100e2565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160028152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160008152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160018152f3fea2646970667358221220fb3b37a4e71c3907c9bce206c87cf070ca2dbe4b06360016ce0001f18c92a7b764736f6c634300081c0033","sourceMap":"275:9697:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2644:4;275:9697;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;2570:4;275:9697;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2483:4;275:9697;;","linkReferences":{}},"methodIdentifiers":{"BEHAVIOR_ABORT_ON_ERROR()":"420b0c25","BEHAVIOR_IGNORE_ERROR()":"4a7d2aa0","BEHAVIOR_REVERT_ON_ERROR()":"4e5f5715","KIND_CONFIG_UPDATE()":"0739d59a","KIND_DIGEST()":"b570180a","KIND_MESSAGE()":"3d5c1f9b","KIND_TRANSACTIONS()":"075a3d2d"}}}},"src/modules/interfaces/IERC1271.sol":{"IERC1271":{"abi":[{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"magicValue\":\"Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}}},\"title\":\"IERC1271\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"}},\"notice\":\"Interface for ERC1271\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"}}},"IERC1271Data":{"abi":[{"type":"function","name":"isValidSignature","inputs":[{"name":"_data","type":"bytes","internalType":"bytes"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\\\"isValidSignature(bytes,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_data\":\"Data that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"magicValue\":\"Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\"}}},\"title\":\"IERC1271Data\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"}},\"notice\":\"Deprecated interface for ERC1271 using bytes instead of bytes32\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IERC1271.sol\":\"IERC1271Data\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isValidSignature(bytes,bytes)":"20c13b0b"}}}},"src/modules/interfaces/ISapient.sol":{"ISapient":{"abi":[{"type":"function","name":"recoverSapientSignature","inputs":[{"name":"payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen\",\"details\":\"The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration\",\"kind\":\"dev\",\"methods\":{\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"payload\":\"The payload to recover the signature from\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"imageHash\":\"The recovered image hash\"}}},\"title\":\"ISapient\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recovers the image hash of a given signature\"}},\"notice\":\"Sapient signers take an explicit payload and return their own \\\"imageHash\\\" as result\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/ISapient.sol\":\"ISapient\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"13792a4a"}}},"ISapientCompact":{"abi":[{"type":"function","name":"recoverSapientSignatureCompact","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignatureCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen\",\"details\":\"The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration\",\"kind\":\"dev\",\"methods\":{\"recoverSapientSignatureCompact(bytes32,bytes)\":{\"params\":{\"digest\":\"The digest of the payload\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"imageHash\":\"The recovered image hash\"}}},\"title\":\"ISapientCompact\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"recoverSapientSignatureCompact(bytes32,bytes)\":{\"notice\":\"Recovers the image hash of a given signature, using a hashed payload\"}},\"notice\":\"Sapient signers take a compacted payload and return their own \\\"imageHash\\\" as result\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/ISapient.sol\":\"ISapientCompact\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"recoverSapientSignatureCompact(bytes32,bytes)":"898bd921"}}}},"src/utils/LibBytes.sol":{"LibBytes":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar (aa@horizon.io), Michael Standen (mstan@horizon.io)\",\"details\":\"These functions do not check if the input index is within the bounds of the data array.Reading out of bounds may return dirty values.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for reading data from bytes arrays\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions for reading data from bytes arrays.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/LibBytes.sol\":\"LibBytes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220a85ffa9e3ade302caa4978ea91e2fc168f2c0512807b43a7f8208a8f8a4df7d464736f6c634300081c0033","sourceMap":"432:3576:4:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"600080fdfea2646970667358221220a85ffa9e3ade302caa4978ea91e2fc168f2c0512807b43a7f8208a8f8a4df7d464736f6c634300081c0033","sourceMap":"432:3576:4:-:0;;","linkReferences":{}}}}},"src/utils/LibOptim.sol":{"LibOptim":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{},\"title\":\"LibOptim\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for optimized EVM operations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/LibOptim.sol\":\"LibOptim\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212200398f15f5e9b603b352d431691aa165e3c5441cd70facd49709dc0030836d1fe64736f6c634300081c0033","sourceMap":"162:2030:5:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"600080fdfea26469706673582212200398f15f5e9b603b352d431691aa165e3c5441cd70facd49709dc0030836d1fe64736f6c634300081c0033","sourceMap":"162:2030:5:-:0;;","linkReferences":{}}}}}},"sources":{"src/extensions/recovery/Recovery.sol":{"id":0,"ast":{"absolutePath":"src/extensions/recovery/Recovery.sol","id":639,"exportedSymbols":{"IERC1271":[1434],"IERC1271_MAGIC_VALUE_HASH":[1419],"ISapientCompact":[1475],"LibBytes":[1679],"LibOptim":[1733],"Payload":[1414],"Recovery":[638]},"nodeType":"SourceUnit","src":"39:7848:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"39:24:0","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":3,"nodeType":"ImportDirective","src":"65:52:0","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"../../modules/Payload.sol","nameLocation":"-1:-1:-1","scope":639,"sourceUnit":1415,"symbolAliases":[{"foreign":{"id":2,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1414,"src":"74:7:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":6,"nodeType":"ImportDirective","src":"118:92:0","nodes":[],"absolutePath":"src/modules/interfaces/IERC1271.sol","file":"../../modules/interfaces/IERC1271.sol","nameLocation":"-1:-1:-1","scope":639,"sourceUnit":1447,"symbolAliases":[{"foreign":{"id":4,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1434,"src":"127:8:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":5,"name":"IERC1271_MAGIC_VALUE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1419,"src":"137:25:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":8,"nodeType":"ImportDirective","src":"211:72:0","nodes":[],"absolutePath":"src/modules/interfaces/ISapient.sol","file":"../../modules/interfaces/ISapient.sol","nameLocation":"-1:-1:-1","scope":639,"sourceUnit":1476,"symbolAliases":[{"foreign":{"id":7,"name":"ISapientCompact","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1475,"src":"220:15:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":10,"nodeType":"ImportDirective","src":"284:52:0","nodes":[],"absolutePath":"src/utils/LibBytes.sol","file":"../../utils/LibBytes.sol","nameLocation":"-1:-1:-1","scope":639,"sourceUnit":1680,"symbolAliases":[{"foreign":{"id":9,"name":"LibBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"293:8:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":12,"nodeType":"ImportDirective","src":"337:52:0","nodes":[],"absolutePath":"src/utils/LibOptim.sol","file":"../../utils/LibOptim.sol","nameLocation":"-1:-1:-1","scope":639,"sourceUnit":1734,"symbolAliases":[{"foreign":{"id":11,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"346:8:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":15,"nodeType":"UsingForDirective","src":"391:25:0","nodes":[],"global":false,"libraryName":{"id":13,"name":"LibBytes","nameLocations":["397:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":1679,"src":"397:8:0"},"typeName":{"id":14,"name":"bytes","nodeType":"ElementaryTypeName","src":"410:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"id":638,"nodeType":"ContractDefinition","src":"539:7347:0","nodes":[{"id":23,"nodeType":"VariableDeclaration","src":"581:149:0","nodes":[],"constant":true,"mutability":"constant","name":"EIP712_DOMAIN_TYPEHASH","nameLocation":"606:22:0","scope":638,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":19,"name":"bytes32","nodeType":"ElementaryTypeName","src":"581:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":21,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"645:84:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":20,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"635:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":22,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"635:95:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":28,"nodeType":"VariableDeclaration","src":"735:99:0","nodes":[],"constant":true,"mutability":"constant","name":"EIP712_DOMAIN_NAME_SEQUENCE","nameLocation":"760:27:0","scope":638,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":24,"name":"bytes32","nodeType":"ElementaryTypeName","src":"735:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"53657175656e63652057616c6c6574202d205265636f76657279204d6f6465","id":26,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"800:33:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d50a220b5983c5d6e86926072ffa8a3197ae49602ffc9dd0e60d62d561a2e1d5","typeString":"literal_string \"Sequence Wallet - Recovery Mode\""},"value":"Sequence Wallet - Recovery Mode"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d50a220b5983c5d6e86926072ffa8a3197ae49602ffc9dd0e60d62d561a2e1d5","typeString":"literal_string \"Sequence Wallet - Recovery Mode\""}],"id":25,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"790:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":27,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"790:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":33,"nodeType":"VariableDeclaration","src":"838:72:0","nodes":[],"constant":true,"mutability":"constant","name":"EIP712_DOMAIN_VERSION_SEQUENCE","nameLocation":"863:30:0","scope":638,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":29,"name":"bytes32","nodeType":"ElementaryTypeName","src":"838:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"31","id":31,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"906:3:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""}],"id":30,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"896:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":32,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"896:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":36,"nodeType":"VariableDeclaration","src":"966:48:0","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_RECOVERY_LEAF","nameLocation":"992:18:0","scope":638,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":34,"name":"uint256","nodeType":"ElementaryTypeName","src":"966:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":35,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1013:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"id":39,"nodeType":"VariableDeclaration","src":"1018:39:0","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_NODE","nameLocation":"1044:9:0","scope":638,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37,"name":"uint256","nodeType":"ElementaryTypeName","src":"1018:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":38,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1056:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"id":42,"nodeType":"VariableDeclaration","src":"1061:41:0","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_BRANCH","nameLocation":"1087:11:0","scope":638,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":40,"name":"uint256","nodeType":"ElementaryTypeName","src":"1061:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"34","id":41,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1101:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"id":53,"nodeType":"EventDefinition","src":"1158:115:0","nodes":[],"anonymous":false,"documentation":{"id":43,"nodeType":"StructuredDocumentation","src":"1107:48:0","text":"@notice Emitted when a new payload is queued"},"eventSelector":"aeb5575092e25ccd826d5de3515c096028bb338c1f304db40dc831c3746ee0ae","name":"NewQueuedPayload","nameLocation":"1164:16:0","parameters":{"id":52,"nodeType":"ParameterList","parameters":[{"constant":false,"id":45,"indexed":true,"mutability":"mutable","name":"_wallet","nameLocation":"1197:7:0","nodeType":"VariableDeclaration","scope":53,"src":"1181:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44,"name":"address","nodeType":"ElementaryTypeName","src":"1181:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":47,"indexed":true,"mutability":"mutable","name":"_signer","nameLocation":"1222:7:0","nodeType":"VariableDeclaration","scope":53,"src":"1206:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"1206:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":49,"indexed":false,"mutability":"mutable","name":"_payloadHash","nameLocation":"1239:12:0","nodeType":"VariableDeclaration","scope":53,"src":"1231:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":48,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1231:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":51,"indexed":false,"mutability":"mutable","name":"_timestamp","nameLocation":"1261:10:0","nodeType":"VariableDeclaration","scope":53,"src":"1253:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50,"name":"uint256","nodeType":"ElementaryTypeName","src":"1253:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1180:92:0"}},{"id":65,"nodeType":"ErrorDefinition","src":"1334:101:0","nodes":[],"documentation":{"id":54,"nodeType":"StructuredDocumentation","src":"1277:54:0","text":"@notice Error thrown when the signature is invalid"},"errorSelector":"44b7a405","name":"InvalidSignature","nameLocation":"1340:16:0","parameters":{"id":64,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56,"mutability":"mutable","name":"_wallet","nameLocation":"1365:7:0","nodeType":"VariableDeclaration","scope":65,"src":"1357:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55,"name":"address","nodeType":"ElementaryTypeName","src":"1357:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":58,"mutability":"mutable","name":"_signer","nameLocation":"1382:7:0","nodeType":"VariableDeclaration","scope":65,"src":"1374:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":57,"name":"address","nodeType":"ElementaryTypeName","src":"1374:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61,"mutability":"mutable","name":"_payload","nameLocation":"1407:8:0","nodeType":"VariableDeclaration","scope":65,"src":"1391:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":60,"nodeType":"UserDefinedTypeName","pathNode":{"id":59,"name":"Payload.Decoded","nameLocations":["1391:7:0","1399:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":780,"src":"1391:15:0"},"referencedDeclaration":780,"src":"1391:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":63,"mutability":"mutable","name":"_signature","nameLocation":"1423:10:0","nodeType":"VariableDeclaration","scope":65,"src":"1417:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":62,"name":"bytes","nodeType":"ElementaryTypeName","src":"1417:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1356:78:0"}},{"id":74,"nodeType":"ErrorDefinition","src":"1500:76:0","nodes":[],"documentation":{"id":66,"nodeType":"StructuredDocumentation","src":"1438:59:0","text":"@notice Error thrown when the payload is already queued"},"errorSelector":"654c8bbf","name":"AlreadyQueued","nameLocation":"1506:13:0","parameters":{"id":73,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68,"mutability":"mutable","name":"_wallet","nameLocation":"1528:7:0","nodeType":"VariableDeclaration","scope":74,"src":"1520:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67,"name":"address","nodeType":"ElementaryTypeName","src":"1520:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":70,"mutability":"mutable","name":"_signer","nameLocation":"1545:7:0","nodeType":"VariableDeclaration","scope":74,"src":"1537:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"1537:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":72,"mutability":"mutable","name":"_payloadHash","nameLocation":"1562:12:0","nodeType":"VariableDeclaration","scope":74,"src":"1554:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":71,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1554:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1519:56:0"}},{"id":81,"nodeType":"ErrorDefinition","src":"1634:59:0","nodes":[],"documentation":{"id":75,"nodeType":"StructuredDocumentation","src":"1579:52:0","text":"@notice Error thrown when the queue is not ready"},"errorSelector":"904689fc","name":"QueueNotReady","nameLocation":"1640:13:0","parameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":77,"mutability":"mutable","name":"_wallet","nameLocation":"1662:7:0","nodeType":"VariableDeclaration","scope":81,"src":"1654:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":76,"name":"address","nodeType":"ElementaryTypeName","src":"1654:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79,"mutability":"mutable","name":"_payloadHash","nameLocation":"1679:12:0","nodeType":"VariableDeclaration","scope":81,"src":"1671:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":78,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1671:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1653:39:0"}},{"id":86,"nodeType":"ErrorDefinition","src":"1758:42:0","nodes":[],"documentation":{"id":82,"nodeType":"StructuredDocumentation","src":"1696:59:0","text":"@notice Error thrown when the signature flag is invalid"},"errorSelector":"b2505f7c","name":"InvalidSignatureFlag","nameLocation":"1764:20:0","parameters":{"id":85,"nodeType":"ParameterList","parameters":[{"constant":false,"id":84,"mutability":"mutable","name":"_flag","nameLocation":"1793:5:0","nodeType":"VariableDeclaration","scope":86,"src":"1785:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83,"name":"uint256","nodeType":"ElementaryTypeName","src":"1785:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1784:15:0"}},{"id":117,"nodeType":"FunctionDefinition","src":"1804:363:0","nodes":[],"body":{"id":116,"nodeType":"Block","src":"1924:243:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":98,"name":"EIP712_DOMAIN_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23,"src":"1974:22:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":99,"name":"EIP712_DOMAIN_NAME_SEQUENCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"2006:27:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":100,"name":"EIP712_DOMAIN_VERSION_SEQUENCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"2043:30:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"condition":{"id":101,"name":"_noChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88,"src":"2083:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"expression":{"id":108,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2117:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2123:7:0","memberName":"chainid","nodeType":"MemberAccess","src":"2117:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2109:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":106,"name":"uint256","nodeType":"ElementaryTypeName","src":"2109:7:0","typeDescriptions":{}}},"id":110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2109:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2083:48:0","trueExpression":{"arguments":[{"hexValue":"30","id":104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2104:1:0","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":103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2096:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":102,"name":"uint256","nodeType":"ElementaryTypeName","src":"2096:7:0","typeDescriptions":{}}},"id":105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2096:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":112,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90,"src":"2141:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":96,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1954:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":97,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1958:6:0","memberName":"encode","nodeType":"MemberAccess","src":"1954:10:0","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1954:202:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":95,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1937:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1937:225:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":94,"id":115,"nodeType":"Return","src":"1930:232:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"domainSeparator","nameLocation":"1813:15:0","parameters":{"id":91,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88,"mutability":"mutable","name":"_noChainId","nameLocation":"1839:10:0","nodeType":"VariableDeclaration","scope":117,"src":"1834:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":87,"name":"bool","nodeType":"ElementaryTypeName","src":"1834:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":90,"mutability":"mutable","name":"_wallet","nameLocation":"1863:7:0","nodeType":"VariableDeclaration","scope":117,"src":"1855:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89,"name":"address","nodeType":"ElementaryTypeName","src":"1855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1828:46:0"},"returnParameters":{"id":94,"nodeType":"ParameterList","parameters":[{"constant":false,"id":93,"mutability":"mutable","name":"_domainSeparator","nameLocation":"1906:16:0","nodeType":"VariableDeclaration","scope":117,"src":"1898:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":92,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1898:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1897:26:0"},"scope":638,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":126,"nodeType":"VariableDeclaration","src":"2270:100:0","nodes":[],"constant":false,"documentation":{"id":118,"nodeType":"StructuredDocumentation","src":"2171:96:0","text":"@notice Mapping of queued timestamps\n @dev wallet -> signer -> payloadHash -> timestamp"},"functionSelector":"0e159f80","mutability":"mutable","name":"timestampForQueuedPayload","nameLocation":"2345:25:0","scope":638,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(bytes32 => uint256)))"},"typeName":{"id":125,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":119,"name":"address","nodeType":"ElementaryTypeName","src":"2278:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2270:67:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(bytes32 => uint256)))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":124,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":120,"name":"address","nodeType":"ElementaryTypeName","src":"2297:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2289:47:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(address => mapping(bytes32 => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":123,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":121,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2316:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2308:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":122,"name":"uint256","nodeType":"ElementaryTypeName","src":"2327:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}}},"visibility":"public"},{"id":134,"nodeType":"VariableDeclaration","src":"2467:76:0","nodes":[],"constant":false,"documentation":{"id":127,"nodeType":"StructuredDocumentation","src":"2375:89:0","text":"@notice Mapping of queued payload hashes\n @dev wallet -> signer -> payloadHash[]"},"functionSelector":"d834bcbf","mutability":"mutable","name":"queuedPayloadHashes","nameLocation":"2524:19:0","scope":638,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$","typeString":"mapping(address => mapping(address => bytes32[]))"},"typeName":{"id":133,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":128,"name":"address","nodeType":"ElementaryTypeName","src":"2475:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2467:49:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$","typeString":"mapping(address => mapping(address => bytes32[]))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":132,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":129,"name":"address","nodeType":"ElementaryTypeName","src":"2494:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2486:29:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$","typeString":"mapping(address => bytes32[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":130,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2505:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":131,"nodeType":"ArrayTypeName","src":"2505:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}}},"visibility":"public"},{"id":152,"nodeType":"FunctionDefinition","src":"2810:167:0","nodes":[],"body":{"id":151,"nodeType":"Block","src":"2915:62:0","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"baseExpression":{"id":144,"name":"queuedPayloadHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"2928:19:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$","typeString":"mapping(address => mapping(address => bytes32[] storage ref))"}},"id":146,"indexExpression":{"id":145,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":137,"src":"2948:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2928:28:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$","typeString":"mapping(address => bytes32[] storage ref)"}},"id":148,"indexExpression":{"id":147,"name":"_signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":139,"src":"2957:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2928:37:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2966:6:0","memberName":"length","nodeType":"MemberAccess","src":"2928:44:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":143,"id":150,"nodeType":"Return","src":"2921:51:0"}]},"documentation":{"id":135,"nodeType":"StructuredDocumentation","src":"2548:259:0","text":"@notice Get the total number of queued payloads\n @param _wallet The wallet to get the total number of queued payloads for\n @param _signer The signer to get the total number of queued payloads for\n @return The total number of queued payloads"},"functionSelector":"ec08af33","implemented":true,"kind":"function","modifiers":[],"name":"totalQueuedPayloads","nameLocation":"2819:19:0","parameters":{"id":140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":137,"mutability":"mutable","name":"_wallet","nameLocation":"2852:7:0","nodeType":"VariableDeclaration","scope":152,"src":"2844:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":136,"name":"address","nodeType":"ElementaryTypeName","src":"2844:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":139,"mutability":"mutable","name":"_signer","nameLocation":"2873:7:0","nodeType":"VariableDeclaration","scope":152,"src":"2865:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"2865:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2838:46:0"},"returnParameters":{"id":143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":152,"src":"2906:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":141,"name":"uint256","nodeType":"ElementaryTypeName","src":"2906:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2905:9:0"},"scope":638,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":174,"nodeType":"FunctionDefinition","src":"2981:264:0","nodes":[],"body":{"id":173,"nodeType":"Block","src":"3127:118:0","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"53657175656e6365207265636f76657279206c6561663a0a","id":166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3167:27:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_a75e556b6ad8a0f25fe44123266a29ae40e022f8836a08503eaee277550ed031","typeString":"literal_string hex\"53657175656e6365207265636f76657279206c6561663a0a\""},"value":"Sequence recovery leaf:\n"},{"id":167,"name":"_signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":154,"src":"3196:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":168,"name":"_requiredDeltaTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"3205:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":169,"name":"_minTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":158,"src":"3225:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a75e556b6ad8a0f25fe44123266a29ae40e022f8836a08503eaee277550ed031","typeString":"literal_string hex\"53657175656e6365207265636f76657279206c6561663a0a\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":164,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3150:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3154:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"3150:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3150:89:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":163,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3140:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3140:100:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":162,"id":172,"nodeType":"Return","src":"3133:107:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_leafForRecoveryLeaf","nameLocation":"2990:20:0","parameters":{"id":159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":154,"mutability":"mutable","name":"_signer","nameLocation":"3024:7:0","nodeType":"VariableDeclaration","scope":174,"src":"3016:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":153,"name":"address","nodeType":"ElementaryTypeName","src":"3016:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":156,"mutability":"mutable","name":"_requiredDeltaTime","nameLocation":"3045:18:0","nodeType":"VariableDeclaration","scope":174,"src":"3037:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":155,"name":"uint256","nodeType":"ElementaryTypeName","src":"3037:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":158,"mutability":"mutable","name":"_minTimestamp","nameLocation":"3077:13:0","nodeType":"VariableDeclaration","scope":174,"src":"3069:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":157,"name":"uint256","nodeType":"ElementaryTypeName","src":"3069:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3010:84:0"},"returnParameters":{"id":162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"3118:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":160,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3118:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3117:9:0"},"scope":638,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":402,"nodeType":"FunctionDefinition","src":"3249:2021:0","nodes":[],"body":{"id":401,"nodeType":"Block","src":"3407:1863:0","nodes":[],"statements":[{"assignments":[188],"declarations":[{"constant":false,"id":188,"mutability":"mutable","name":"rindex","nameLocation":"3421:6:0","nodeType":"VariableDeclaration","scope":401,"src":"3413:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":187,"name":"uint256","nodeType":"ElementaryTypeName","src":"3413:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":189,"nodeType":"VariableDeclarationStatement","src":"3413:14:0"},{"body":{"id":395,"nodeType":"Block","src":"3469:1767:0","statements":[{"assignments":[195],"declarations":[{"constant":false,"id":195,"mutability":"mutable","name":"flag","nameLocation":"3554:4:0","nodeType":"VariableDeclaration","scope":395,"src":"3546:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":194,"name":"uint256","nodeType":"ElementaryTypeName","src":"3546:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":196,"nodeType":"VariableDeclarationStatement","src":"3546:12:0"},{"expression":{"id":204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":197,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"3567:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":198,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3573:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":199,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3566:14:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":202,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3604:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":200,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"3583:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3594:9:0","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":1502,"src":"3583:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3583:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"3566:45:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":205,"nodeType":"ExpressionStatement","src":"3566:45:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":206,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"3624:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":207,"name":"FLAG_RECOVERY_LEAF","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36,"src":"3632:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3624:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":301,"nodeType":"IfStatement","src":"3620:845:0","trueBody":{"id":300,"nodeType":"Block","src":"3652:813:0","statements":[{"assignments":[210],"declarations":[{"constant":false,"id":210,"mutability":"mutable","name":"signer","nameLocation":"3719:6:0","nodeType":"VariableDeclaration","scope":300,"src":"3711:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":209,"name":"address","nodeType":"ElementaryTypeName","src":"3711:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":211,"nodeType":"VariableDeclarationStatement","src":"3711:14:0"},{"assignments":[213],"declarations":[{"constant":false,"id":213,"mutability":"mutable","name":"requiredDeltaTime","nameLocation":"3743:17:0","nodeType":"VariableDeclaration","scope":300,"src":"3735:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":212,"name":"uint256","nodeType":"ElementaryTypeName","src":"3735:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":214,"nodeType":"VariableDeclarationStatement","src":"3735:25:0"},{"assignments":[216],"declarations":[{"constant":false,"id":216,"mutability":"mutable","name":"minTimestamp","nameLocation":"3778:12:0","nodeType":"VariableDeclaration","scope":300,"src":"3770:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":215,"name":"uint256","nodeType":"ElementaryTypeName","src":"3770:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":217,"nodeType":"VariableDeclarationStatement","src":"3770:20:0"},{"expression":{"id":225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":218,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"3802:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":219,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3810:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":220,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3801:16:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":223,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3843:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":221,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"3820:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3831:11:0","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":1621,"src":"3820:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3820:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"3801:49:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":226,"nodeType":"ExpressionStatement","src":"3801:49:0"},{"expression":{"id":234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":227,"name":"requiredDeltaTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":213,"src":"3861:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":228,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3880:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":229,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3860:27:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":232,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3912:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":230,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"3890:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3901:10:0","memberName":"readUint24","nodeType":"MemberAccess","referencedDeclaration":1528,"src":"3890:21:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint24,uint256)"}},"id":233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3890:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint24_$_t_uint256_$","typeString":"tuple(uint24,uint256)"}},"src":"3860:59:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":235,"nodeType":"ExpressionStatement","src":"3860:59:0"},{"expression":{"id":243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":236,"name":"minTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"3930:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":237,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3944:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":238,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3929:22:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":241,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3976:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":239,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"3954:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3965:10:0","memberName":"readUint64","nodeType":"MemberAccess","referencedDeclaration":1541,"src":"3954:21:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint64_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint64,uint256)"}},"id":242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3954:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint64_$_t_uint256_$","typeString":"tuple(uint64,uint256)"}},"src":"3929:54:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":244,"nodeType":"ExpressionStatement","src":"3929:54:0"},{"assignments":[246],"declarations":[{"constant":false,"id":246,"mutability":"mutable","name":"queuedAt","nameLocation":"4063:8:0","nodeType":"VariableDeclaration","scope":300,"src":"4055:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":245,"name":"uint256","nodeType":"ElementaryTypeName","src":"4055:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":254,"initialValue":{"baseExpression":{"baseExpression":{"baseExpression":{"id":247,"name":"timestampForQueuedPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126,"src":"4074:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(bytes32 => uint256)))"}},"id":249,"indexExpression":{"id":248,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":176,"src":"4100:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4074:34:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(address => mapping(bytes32 => uint256))"}},"id":251,"indexExpression":{"id":250,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"4109:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4074:42:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":253,"indexExpression":{"id":252,"name":"_payloadHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"4117:12:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4074:56:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4055:75:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":255,"name":"queuedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"4144:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4156:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4144:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":258,"name":"queuedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"4161:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":259,"name":"minTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"4173:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4161:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4144:41:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":262,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4189:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4195:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"4189:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":264,"name":"queuedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":246,"src":"4207:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4189:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":266,"name":"requiredDeltaTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":213,"src":"4219:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4189:47:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4144:92:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":274,"nodeType":"IfStatement","src":"4140:136:0","trueBody":{"id":273,"nodeType":"Block","src":"4238:38:0","statements":[{"expression":{"id":271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":269,"name":"verified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"4250:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4261:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4250:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":272,"nodeType":"ExpressionStatement","src":"4250:15:0"}]}},{"assignments":[276],"declarations":[{"constant":false,"id":276,"mutability":"mutable","name":"node","nameLocation":"4294:4:0","nodeType":"VariableDeclaration","scope":300,"src":"4286:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":275,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4286:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":282,"initialValue":{"arguments":[{"id":278,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":210,"src":"4322:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":279,"name":"requiredDeltaTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":213,"src":"4330:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":280,"name":"minTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"4349:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":277,"name":"_leafForRecoveryLeaf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"4301:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (address,uint256,uint256) pure returns (bytes32)"}},"id":281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4301:61:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4286:76:0"},{"expression":{"id":297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":283,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"4372:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":284,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"4379:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4395:1:0","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":286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4387:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":285,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4387:7:0","typeDescriptions":{}}},"id":288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4387:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4379:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":295,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":276,"src":"4434:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4379:59:0","trueExpression":{"arguments":[{"id":292,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"4420:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":293,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":276,"src":"4426:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":290,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"4400:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$1733_$","typeString":"type(library LibOptim)"}},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4409:10:0","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":1694,"src":"4400:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4400:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4372:66:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":298,"nodeType":"ExpressionStatement","src":"4372:66:0"},{"id":299,"nodeType":"Continue","src":"4448:8:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":302,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"4477:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":303,"name":"FLAG_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39,"src":"4485:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4477:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":335,"nodeType":"IfStatement","src":"4473:231:0","trueBody":{"id":334,"nodeType":"Block","src":"4496:208:0","statements":[{"assignments":[306],"declarations":[{"constant":false,"id":306,"mutability":"mutable","name":"node","nameLocation":"4540:4:0","nodeType":"VariableDeclaration","scope":334,"src":"4532:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":305,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4532:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":307,"nodeType":"VariableDeclarationStatement","src":"4532:12:0"},{"expression":{"id":315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":308,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":306,"src":"4555:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":309,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"4561:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":310,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4554:14:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":313,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"4594:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":311,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"4571:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4582:11:0","memberName":"readBytes32","nodeType":"MemberAccess","referencedDeclaration":1608,"src":"4571:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes32,uint256)"}},"id":314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4571:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"src":"4554:47:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":316,"nodeType":"ExpressionStatement","src":"4554:47:0"},{"expression":{"id":331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":317,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"4611:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":318,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"4618:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4634:1:0","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":320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4626:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":319,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4626:7:0","typeDescriptions":{}}},"id":322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4626:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4618:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":329,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":306,"src":"4673:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4618:59:0","trueExpression":{"arguments":[{"id":326,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"4659:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":327,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":306,"src":"4665:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":324,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"4639:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$1733_$","typeString":"type(library LibOptim)"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4648:10:0","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":1694,"src":"4639:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4639:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4611:66:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":332,"nodeType":"ExpressionStatement","src":"4611:66:0"},{"id":333,"nodeType":"Continue","src":"4687:8:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":336,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"4716:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":337,"name":"FLAG_BRANCH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42,"src":"4724:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4716:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":390,"nodeType":"IfStatement","src":"4712:476:0","trueBody":{"id":389,"nodeType":"Block","src":"4737:451:0","statements":[{"assignments":[340],"declarations":[{"constant":false,"id":340,"mutability":"mutable","name":"size","nameLocation":"4776:4:0","nodeType":"VariableDeclaration","scope":389,"src":"4768:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":339,"name":"uint256","nodeType":"ElementaryTypeName","src":"4768:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":341,"nodeType":"VariableDeclarationStatement","src":"4768:12:0"},{"expression":{"id":349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":342,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"4791:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":343,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"4797:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":344,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4790:14:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":347,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"4829:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":345,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"4807:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4818:10:0","memberName":"readUint24","nodeType":"MemberAccess","referencedDeclaration":1528,"src":"4807:21:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint24,uint256)"}},"id":348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4807:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint24_$_t_uint256_$","typeString":"tuple(uint24,uint256)"}},"src":"4790:46:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":350,"nodeType":"ExpressionStatement","src":"4790:46:0"},{"assignments":[352],"declarations":[{"constant":false,"id":352,"mutability":"mutable","name":"nrindex","nameLocation":"4910:7:0","nodeType":"VariableDeclaration","scope":389,"src":"4902:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":351,"name":"uint256","nodeType":"ElementaryTypeName","src":"4902:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":356,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":353,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"4920:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":354,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"4929:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4920:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4902:31:0"},{"assignments":[358,360],"declarations":[{"constant":false,"id":358,"mutability":"mutable","name":"nverified","nameLocation":"4950:9:0","nodeType":"VariableDeclaration","scope":389,"src":"4945:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":357,"name":"bool","nodeType":"ElementaryTypeName","src":"4945:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":360,"mutability":"mutable","name":"nroot","nameLocation":"4969:5:0","nodeType":"VariableDeclaration","scope":389,"src":"4961:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":359,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4961:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":369,"initialValue":{"arguments":[{"id":362,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":176,"src":"4993:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":363,"name":"_payloadHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"5002:12:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":364,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"5016:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":366,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"5034:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"5016:26:0","startExpression":{"id":365,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"5027:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":361,"name":"_recoverBranch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"4978:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes32_$","typeString":"function (address,bytes32,bytes calldata) view returns (bool,bytes32)"}},"id":368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4978:65:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"4944:99:0"},{"expression":{"id":372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":370,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"5053:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":371,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"5062:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5053:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":373,"nodeType":"ExpressionStatement","src":"5053:16:0"},{"expression":{"id":378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":374,"name":"verified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"5080:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":375,"name":"verified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"5091:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":376,"name":"nverified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":358,"src":"5103:9:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5091:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5080:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":379,"nodeType":"ExpressionStatement","src":"5080:32:0"},{"expression":{"id":386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":380,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"5122:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":383,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"5149:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":384,"name":"nroot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"5155:5:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":381,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"5129:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$1733_$","typeString":"type(library LibOptim)"}},"id":382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5138:10:0","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":1694,"src":"5129:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5129:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5122:39:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":387,"nodeType":"ExpressionStatement","src":"5122:39:0"},{"id":388,"nodeType":"Continue","src":"5171:8:0"}]}},{"errorCall":{"arguments":[{"id":392,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"5224:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":391,"name":"InvalidSignatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":86,"src":"5203:20:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5203:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":394,"nodeType":"RevertStatement","src":"5196:33:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"3441:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":191,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"3450:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3461:6:0","memberName":"length","nodeType":"MemberAccess","src":"3450:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3441:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":396,"nodeType":"WhileStatement","src":"3434:1802:0"},{"expression":{"components":[{"id":397,"name":"verified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":183,"src":"5250:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":398,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":185,"src":"5260:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":399,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5249:16:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"functionReturnParameters":186,"id":400,"nodeType":"Return","src":"5242:23:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_recoverBranch","nameLocation":"3258:14:0","parameters":{"id":181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":176,"mutability":"mutable","name":"_wallet","nameLocation":"3286:7:0","nodeType":"VariableDeclaration","scope":402,"src":"3278:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":175,"name":"address","nodeType":"ElementaryTypeName","src":"3278:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":178,"mutability":"mutable","name":"_payloadHash","nameLocation":"3307:12:0","nodeType":"VariableDeclaration","scope":402,"src":"3299:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":177,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3299:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":180,"mutability":"mutable","name":"_signature","nameLocation":"3340:10:0","nodeType":"VariableDeclaration","scope":402,"src":"3325:25:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":179,"name":"bytes","nodeType":"ElementaryTypeName","src":"3325:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3272:82:0"},"returnParameters":{"id":186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":183,"mutability":"mutable","name":"verified","nameLocation":"3383:8:0","nodeType":"VariableDeclaration","scope":402,"src":"3378:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":182,"name":"bool","nodeType":"ElementaryTypeName","src":"3378:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":185,"mutability":"mutable","name":"root","nameLocation":"3401:4:0","nodeType":"VariableDeclaration","scope":402,"src":"3393:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":184,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3393:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3377:29:0"},"scope":638,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":438,"nodeType":"FunctionDefinition","src":"5498:320:0","nodes":[],"body":{"id":437,"nodeType":"Block","src":"5621:197:0","nodes":[],"statements":[{"assignments":[414],"declarations":[{"constant":false,"id":414,"mutability":"mutable","name":"domain","nameLocation":"5635:6:0","nodeType":"VariableDeclaration","scope":437,"src":"5627:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":413,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5627:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":420,"initialValue":{"arguments":[{"expression":{"id":416,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"5660:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded calldata"}},"id":417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5669:9:0","memberName":"noChainId","nodeType":"MemberAccess","referencedDeclaration":762,"src":"5660:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":418,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":405,"src":"5680:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"}],"id":415,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":117,"src":"5644:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$_t_address_$returns$_t_bytes32_$","typeString":"function (bool,address) view returns (bytes32)"}},"id":419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5644:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5627:61:0"},{"assignments":[422],"declarations":[{"constant":false,"id":422,"mutability":"mutable","name":"structHash","nameLocation":"5702:10:0","nodeType":"VariableDeclaration","scope":437,"src":"5694:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":421,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5694:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":427,"initialValue":{"arguments":[{"id":425,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"5732:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded calldata"}],"expression":{"id":423,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1414,"src":"5715:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1414_$","typeString":"type(library Payload)"}},"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5723:8:0","memberName":"toEIP712","nodeType":"MemberAccess","referencedDeclaration":1344,"src":"5715:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Decoded_$780_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory) pure returns (bytes32)"}},"id":426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5715:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5694:47:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5781:10:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"id":432,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"5793:6:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":433,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":422,"src":"5801:10:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":429,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5764:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5768:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"5764:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5764:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":428,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5754:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5754:59:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":412,"id":436,"nodeType":"Return","src":"5747:66:0"}]},"documentation":{"id":403,"nodeType":"StructuredDocumentation","src":"5274:221:0","text":"@notice Get the recovery payload hash\n @param _wallet The wallet to get the recovery payload hash for\n @param _payload The payload to get the recovery payload hash for\n @return The recovery payload hash"},"functionSelector":"b00c8484","implemented":true,"kind":"function","modifiers":[],"name":"recoveryPayloadHash","nameLocation":"5507:19:0","parameters":{"id":409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":405,"mutability":"mutable","name":"_wallet","nameLocation":"5540:7:0","nodeType":"VariableDeclaration","scope":438,"src":"5532:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":404,"name":"address","nodeType":"ElementaryTypeName","src":"5532:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":408,"mutability":"mutable","name":"_payload","nameLocation":"5578:8:0","nodeType":"VariableDeclaration","scope":438,"src":"5553:33:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":407,"nodeType":"UserDefinedTypeName","pathNode":{"id":406,"name":"Payload.Decoded","nameLocations":["5553:7:0","5561:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":780,"src":"5553:15:0"},"referencedDeclaration":780,"src":"5553:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"5526:64:0"},"returnParameters":{"id":412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":438,"src":"5612:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":410,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5612:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5611:9:0"},"scope":638,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":472,"nodeType":"FunctionDefinition","src":"5856:327:0","nodes":[],"body":{"id":471,"nodeType":"Block","src":"5989:194:0","nodes":[],"statements":[{"assignments":[449,451],"declarations":[{"constant":false,"id":449,"mutability":"mutable","name":"verified","nameLocation":"6001:8:0","nodeType":"VariableDeclaration","scope":471,"src":"5996:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":448,"name":"bool","nodeType":"ElementaryTypeName","src":"5996:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":451,"mutability":"mutable","name":"root","nameLocation":"6019:4:0","nodeType":"VariableDeclaration","scope":471,"src":"6011:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":450,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6011:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":458,"initialValue":{"arguments":[{"expression":{"id":453,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6042:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6046:6:0","memberName":"sender","nodeType":"MemberAccess","src":"6042:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":455,"name":"_payloadHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":441,"src":"6054:12:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":456,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":443,"src":"6068:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":452,"name":"_recoverBranch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"6027:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes32_$","typeString":"function (address,bytes32,bytes calldata) view returns (bool,bytes32)"}},"id":457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6027:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"5995:84:0"},{"condition":{"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6089:9:0","subExpression":{"id":459,"name":"verified","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":449,"src":"6090:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":468,"nodeType":"IfStatement","src":"6085:76:0","trueBody":{"id":467,"nodeType":"Block","src":"6100:61:0","statements":[{"errorCall":{"arguments":[{"expression":{"id":462,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6129:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6133:6:0","memberName":"sender","nodeType":"MemberAccess","src":"6129:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":464,"name":"_payloadHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":441,"src":"6141:12:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":461,"name":"QueueNotReady","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":81,"src":"6115:13:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes32_$returns$_t_error_$","typeString":"function (address,bytes32) pure returns (error)"}},"id":465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6115:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":466,"nodeType":"RevertStatement","src":"6108:46:0"}]}},{"expression":{"id":469,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":451,"src":"6174:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":447,"id":470,"nodeType":"Return","src":"6167:11:0"}]},"baseFunctions":[1474],"documentation":{"id":439,"nodeType":"StructuredDocumentation","src":"5822:31:0","text":"@inheritdoc ISapientCompact"},"functionSelector":"898bd921","implemented":true,"kind":"function","modifiers":[],"name":"recoverSapientSignatureCompact","nameLocation":"5865:30:0","parameters":{"id":444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":441,"mutability":"mutable","name":"_payloadHash","nameLocation":"5909:12:0","nodeType":"VariableDeclaration","scope":472,"src":"5901:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":440,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5901:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":443,"mutability":"mutable","name":"_signature","nameLocation":"5942:10:0","nodeType":"VariableDeclaration","scope":472,"src":"5927:25:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":442,"name":"bytes","nodeType":"ElementaryTypeName","src":"5927:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5895:61:0"},"returnParameters":{"id":447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":446,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":472,"src":"5980:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":445,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5980:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5979:9:0"},"scope":638,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":555,"nodeType":"FunctionDefinition","src":"6450:717:0","nodes":[],"body":{"id":554,"nodeType":"Block","src":"6597:570:0","nodes":[],"statements":[{"condition":{"id":491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6607:57:0","subExpression":{"arguments":[{"id":486,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"6625:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":487,"name":"_signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6634:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":488,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"6643:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded calldata"}},{"id":489,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"6653:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":485,"name":"isValidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"6608:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_struct$_Decoded_$780_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bool_$","typeString":"function (address,address,struct Payload.Decoded calldata,bytes calldata) view returns (bool)"}},"id":490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6608:56:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":500,"nodeType":"IfStatement","src":"6603:141:0","trueBody":{"id":499,"nodeType":"Block","src":"6666:78:0","statements":[{"errorCall":{"arguments":[{"id":493,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"6698:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":494,"name":"_signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6707:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":495,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"6716:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded calldata"}},{"id":496,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"6726:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":492,"name":"InvalidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"6681:16:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_struct$_Decoded_$780_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (address,address,struct Payload.Decoded memory,bytes memory) pure returns (error)"}},"id":497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6681:56:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":498,"nodeType":"RevertStatement","src":"6674:63:0"}]}},{"assignments":[502],"declarations":[{"constant":false,"id":502,"mutability":"mutable","name":"payloadHash","nameLocation":"6758:11:0","nodeType":"VariableDeclaration","scope":554,"src":"6750:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":501,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6750:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":508,"initialValue":{"arguments":[{"id":505,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"6788:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded calldata"}},{"id":506,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"6798:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":503,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1414,"src":"6772:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1414_$","typeString":"type(library Payload)"}},"id":504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6780:7:0","memberName":"hashFor","nodeType":"MemberAccess","referencedDeclaration":1413,"src":"6772:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$780_memory_ptr_$_t_address_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,address) view returns (bytes32)"}},"id":507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6772:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6750:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":509,"name":"timestampForQueuedPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126,"src":"6816:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(bytes32 => uint256)))"}},"id":511,"indexExpression":{"id":510,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"6842:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6816:34:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(address => mapping(bytes32 => uint256))"}},"id":513,"indexExpression":{"id":512,"name":"_signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6851:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6816:43:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":515,"indexExpression":{"id":514,"name":"payloadHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"6860:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6816:56:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6876:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6816:61:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":525,"nodeType":"IfStatement","src":"6812:133:0","trueBody":{"id":524,"nodeType":"Block","src":"6879:66:0","statements":[{"errorCall":{"arguments":[{"id":519,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"6908:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":520,"name":"_signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6917:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":521,"name":"payloadHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"6926:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":518,"name":"AlreadyQueued","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74,"src":"6894:13:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$_t_bytes32_$returns$_t_error_$","typeString":"function (address,address,bytes32) pure returns (error)"}},"id":522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6894:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":523,"nodeType":"RevertStatement","src":"6887:51:0"}]}},{"expression":{"id":535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":526,"name":"timestampForQueuedPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":126,"src":"6951:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(address => mapping(bytes32 => uint256)))"}},"id":530,"indexExpression":{"id":527,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"6977:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6951:34:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(address => mapping(bytes32 => uint256))"}},"id":531,"indexExpression":{"id":528,"name":"_signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6986:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6951:43:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":532,"indexExpression":{"id":529,"name":"payloadHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"6995:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6951:56:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":533,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7010:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7016:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"7010:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6951:74:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":536,"nodeType":"ExpressionStatement","src":"6951:74:0"},{"expression":{"arguments":[{"id":543,"name":"payloadHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"7074:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"baseExpression":{"baseExpression":{"id":537,"name":"queuedPayloadHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"7031:19:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$","typeString":"mapping(address => mapping(address => bytes32[] storage ref))"}},"id":540,"indexExpression":{"id":538,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"7051:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7031:28:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$","typeString":"mapping(address => bytes32[] storage ref)"}},"id":541,"indexExpression":{"id":539,"name":"_signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"7060:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7031:37:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7069:4:0","memberName":"push","nodeType":"MemberAccess","src":"7031:42:0","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$","typeString":"function (bytes32[] storage pointer,bytes32)"}},"id":544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7031:55:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":545,"nodeType":"ExpressionStatement","src":"7031:55:0"},{"eventCall":{"arguments":[{"id":547,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":475,"src":"7115:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":548,"name":"_signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"7124:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":549,"name":"payloadHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":502,"src":"7133:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":550,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7146:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7152:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"7146:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":546,"name":"NewQueuedPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"7098:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (address,address,bytes32,uint256)"}},"id":552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7098:64:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":553,"nodeType":"EmitStatement","src":"7093:69:0"}]},"documentation":{"id":473,"nodeType":"StructuredDocumentation","src":"6187:260:0","text":"@notice Queue a payload for recovery\n @param _wallet The wallet to queue the payload for\n @param _signer The signer to queue the payload for\n @param _payload The payload to queue\n @param _signature The signature to queue the payload for"},"functionSelector":"b05f87db","implemented":true,"kind":"function","modifiers":[],"name":"queuePayload","nameLocation":"6459:12:0","parameters":{"id":483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"_wallet","nameLocation":"6485:7:0","nodeType":"VariableDeclaration","scope":555,"src":"6477:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":474,"name":"address","nodeType":"ElementaryTypeName","src":"6477:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":477,"mutability":"mutable","name":"_signer","nameLocation":"6506:7:0","nodeType":"VariableDeclaration","scope":555,"src":"6498:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":476,"name":"address","nodeType":"ElementaryTypeName","src":"6498:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":480,"mutability":"mutable","name":"_payload","nameLocation":"6544:8:0","nodeType":"VariableDeclaration","scope":555,"src":"6519:33:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":479,"nodeType":"UserDefinedTypeName","pathNode":{"id":478,"name":"Payload.Decoded","nameLocations":["6519:7:0","6527:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":780,"src":"6519:15:0"},"referencedDeclaration":780,"src":"6519:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":482,"mutability":"mutable","name":"_signature","nameLocation":"6573:10:0","nodeType":"VariableDeclaration","scope":555,"src":"6558:25:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":481,"name":"bytes","nodeType":"ElementaryTypeName","src":"6558:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6471:116:0"},"returnParameters":{"id":484,"nodeType":"ParameterList","parameters":[],"src":"6597:0:0"},"scope":638,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":637,"nodeType":"FunctionDefinition","src":"7171:712:0","nodes":[],"body":{"id":636,"nodeType":"Block","src":"7342:541:0","nodes":[],"statements":[{"assignments":[570],"declarations":[{"constant":false,"id":570,"mutability":"mutable","name":"rPayloadHash","nameLocation":"7356:12:0","nodeType":"VariableDeclaration","scope":636,"src":"7348:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":569,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7348:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":575,"initialValue":{"arguments":[{"id":572,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":557,"src":"7391:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":573,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"7400:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded calldata"}],"id":571,"name":"recoveryPayloadHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":438,"src":"7371:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_struct$_Decoded_$780_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (address,struct Payload.Decoded calldata) view returns (bytes32)"}},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7371:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7348:61:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":576,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"7420:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7431:6:0","memberName":"length","nodeType":"MemberAccess","src":"7420:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3634","id":578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7441:2:0","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"7420:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":616,"nodeType":"IfStatement","src":"7416:280:0","trueBody":{"id":615,"nodeType":"Block","src":"7445:251:0","statements":[{"assignments":[581],"declarations":[{"constant":false,"id":581,"mutability":"mutable","name":"r","nameLocation":"7493:1:0","nodeType":"VariableDeclaration","scope":615,"src":"7485:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":580,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7485:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":582,"nodeType":"VariableDeclarationStatement","src":"7485:9:0"},{"assignments":[584],"declarations":[{"constant":false,"id":584,"mutability":"mutable","name":"s","nameLocation":"7510:1:0","nodeType":"VariableDeclaration","scope":615,"src":"7502:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":583,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7502:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":585,"nodeType":"VariableDeclarationStatement","src":"7502:9:0"},{"assignments":[587],"declarations":[{"constant":false,"id":587,"mutability":"mutable","name":"v","nameLocation":"7525:1:0","nodeType":"VariableDeclaration","scope":615,"src":"7519:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":586,"name":"uint8","nodeType":"ElementaryTypeName","src":"7519:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":588,"nodeType":"VariableDeclarationStatement","src":"7519:7:0"},{"expression":{"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":589,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"7535:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":590,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"7538:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":591,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"7541:1:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},null],"id":592,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7534:10:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_uint8_$__$","typeString":"tuple(bytes32,bytes32,uint8,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7573:1:0","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"}],"expression":{"id":593,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"7547:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7558:14:0","memberName":"readRSVCompact","nodeType":"MemberAccess","referencedDeclaration":1678,"src":"7547:25:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes32,bytes32,uint8,uint256)"}},"id":596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7547:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$","typeString":"tuple(bytes32,bytes32,uint8,uint256)"}},"src":"7534:41:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":598,"nodeType":"ExpressionStatement","src":"7534:41:0"},{"assignments":[600],"declarations":[{"constant":false,"id":600,"mutability":"mutable","name":"addr","nameLocation":"7592:4:0","nodeType":"VariableDeclaration","scope":615,"src":"7584:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":599,"name":"address","nodeType":"ElementaryTypeName","src":"7584:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":607,"initialValue":{"arguments":[{"id":602,"name":"rPayloadHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":570,"src":"7609:12:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":603,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"7623:1:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":604,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"7626:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":605,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":584,"src":"7629:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":601,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"7599:9:0","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7599:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7584:47:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":608,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":600,"src":"7643:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":609,"name":"_signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"7651:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7643:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":614,"nodeType":"IfStatement","src":"7639:51:0","trueBody":{"id":613,"nodeType":"Block","src":"7660:30:0","statements":[{"expression":{"hexValue":"74727565","id":611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7677:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":568,"id":612,"nodeType":"Return","src":"7670:11:0"}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":617,"name":"_signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"7706:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7714:4:0","memberName":"code","nodeType":"MemberAccess","src":"7706:12:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7719:6:0","memberName":"length","nodeType":"MemberAccess","src":"7706:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7729:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7706:24:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":633,"nodeType":"IfStatement","src":"7702:158:0","trueBody":{"id":632,"nodeType":"Block","src":"7732:128:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":626,"name":"rPayloadHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":570,"src":"7799:12:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":627,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"7813:10:0","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":623,"name":"_signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"7773:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":622,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1434,"src":"7764:8:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$1434_$","typeString":"type(contract IERC1271)"}},"id":624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7764:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$1434","typeString":"contract IERC1271"}},"id":625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7782:16:0","memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":1433,"src":"7764:34:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (bytes32,bytes memory) view external returns (bytes4)"}},"id":628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7764:60:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":629,"name":"IERC1271_MAGIC_VALUE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1419,"src":"7828:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"7764:89:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":568,"id":631,"nodeType":"Return","src":"7757:96:0"}]}},{"expression":{"hexValue":"66616c7365","id":634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7873:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":568,"id":635,"nodeType":"Return","src":"7866:12:0"}]},"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"7180:16:0","parameters":{"id":565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":557,"mutability":"mutable","name":"_wallet","nameLocation":"7210:7:0","nodeType":"VariableDeclaration","scope":637,"src":"7202:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":556,"name":"address","nodeType":"ElementaryTypeName","src":"7202:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":559,"mutability":"mutable","name":"_signer","nameLocation":"7231:7:0","nodeType":"VariableDeclaration","scope":637,"src":"7223:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":558,"name":"address","nodeType":"ElementaryTypeName","src":"7223:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":562,"mutability":"mutable","name":"_payload","nameLocation":"7269:8:0","nodeType":"VariableDeclaration","scope":637,"src":"7244:33:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":561,"nodeType":"UserDefinedTypeName","pathNode":{"id":560,"name":"Payload.Decoded","nameLocations":["7244:7:0","7252:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":780,"src":"7244:15:0"},"referencedDeclaration":780,"src":"7244:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":564,"mutability":"mutable","name":"_signature","nameLocation":"7298:10:0","nodeType":"VariableDeclaration","scope":637,"src":"7283:25:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":563,"name":"bytes","nodeType":"ElementaryTypeName","src":"7283:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7196:116:0"},"returnParameters":{"id":568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":637,"src":"7336:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":566,"name":"bool","nodeType":"ElementaryTypeName","src":"7336:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7335:6:0"},"scope":638,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":17,"name":"ISapientCompact","nameLocations":["560:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1475,"src":"560:15:0"},"id":18,"nodeType":"InheritanceSpecifier","src":"560:15:0"}],"canonicalName":"Recovery","contractDependencies":[],"contractKind":"contract","documentation":{"id":16,"nodeType":"StructuredDocumentation","src":"418:121:0","text":"@title Recovery\n @author Agustin Aguilar, William Hua, Michael Standen\n @notice A recovery mode sapient signer"},"fullyImplemented":true,"linearizedBaseContracts":[638,1475],"name":"Recovery","nameLocation":"548:8:0","scope":639,"usedErrors":[65,74,81,86,651],"usedEvents":[53]}],"license":"Apache-2.0"}},"src/modules/Payload.sol":{"id":1,"ast":{"absolutePath":"src/modules/Payload.sol","id":1415,"exportedSymbols":{"LibBytes":[1679],"Payload":[1414]},"nodeType":"SourceUnit","src":"39:9934:1","nodes":[{"id":640,"nodeType":"PragmaDirective","src":"39:24:1","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":642,"nodeType":"ImportDirective","src":"65:49:1","nodes":[],"absolutePath":"src/utils/LibBytes.sol","file":"../utils/LibBytes.sol","nameLocation":"-1:-1:-1","scope":1415,"sourceUnit":1680,"symbolAliases":[{"foreign":{"id":641,"name":"LibBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"74:8:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":645,"nodeType":"UsingForDirective","src":"116:25:1","nodes":[],"global":false,"libraryName":{"id":643,"name":"LibBytes","nameLocations":["122:8:1"],"nodeType":"IdentifierPath","referencedDeclaration":1679,"src":"122:8:1"},"typeName":{"id":644,"name":"bytes","nodeType":"ElementaryTypeName","src":"135:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"id":1414,"nodeType":"ContractDefinition","src":"275:9697:1","nodes":[{"id":651,"nodeType":"ErrorDefinition","src":"348:30:1","nodes":[],"documentation":{"id":647,"nodeType":"StructuredDocumentation","src":"296:49:1","text":"@notice Error thrown when the kind is invalid"},"errorSelector":"04818320","name":"InvalidKind","nameLocation":"354:11:1","parameters":{"id":650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":649,"mutability":"mutable","name":"kind","nameLocation":"372:4:1","nodeType":"VariableDeclaration","scope":651,"src":"366:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":648,"name":"uint8","nodeType":"ElementaryTypeName","src":"366:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"365:12:1"}},{"id":654,"nodeType":"ErrorDefinition","src":"438:28:1","nodes":[],"documentation":{"id":652,"nodeType":"StructuredDocumentation","src":"382:53:1","text":"@notice Error thrown when the encoding is invalid"},"errorSelector":"0bdf8038","name":"InvalidPackedLength","nameLocation":"444:19:1","parameters":{"id":653,"nodeType":"ParameterList","parameters":[],"src":"463:2:1"}},{"id":658,"nodeType":"VariableDeclaration","src":"577:116:1","nodes":[],"constant":true,"documentation":{"id":655,"nodeType":"StructuredDocumentation","src":"470:104:1","text":"@dev keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\")"},"mutability":"constant","name":"EIP712_DOMAIN_TYPEHASH","nameLocation":"602:22:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":656,"name":"bytes32","nodeType":"ElementaryTypeName","src":"577:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307838623733633363363962623866653364353132656363346366373539636337393233396637623137396230666661636161396137356435323262333934303066","id":657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"627:66:1","typeDescriptions":{"typeIdentifier":"t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1","typeString":"int_const 6307...(69 digits omitted)...1551"},"value":"0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"},"visibility":"private"},{"id":662,"nodeType":"VariableDeclaration","src":"738:125:1","nodes":[],"constant":true,"documentation":{"id":659,"nodeType":"StructuredDocumentation","src":"698:37:1","text":"@dev keccak256(\"Sequence Wallet\")"},"mutability":"constant","name":"EIP712_DOMAIN_NAME_SEQUENCE","nameLocation":"763:27:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":660,"name":"bytes32","nodeType":"ElementaryTypeName","src":"738:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834616134356361376164383235636562316266333536343366306135386332393532333964663536336231623536356332343835663936343737633536333138","id":661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"797:66:1","typeDescriptions":{"typeIdentifier":"t_rational_33761553195033020586580595614607192138595268542657526595243609892281397895960_by_1","typeString":"int_const 3376...(69 digits omitted)...5960"},"value":"0x4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c56318"},"visibility":"private"},{"id":666,"nodeType":"VariableDeclaration","src":"894:128:1","nodes":[],"constant":true,"documentation":{"id":663,"nodeType":"StructuredDocumentation","src":"868:23:1","text":"@dev keccak256(\"3\")"},"mutability":"constant","name":"EIP712_DOMAIN_VERSION_SEQUENCE","nameLocation":"919:30:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":664,"name":"bytes32","nodeType":"ElementaryTypeName","src":"894:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307832613830653165663164373834326632376632653662653039373262623730386239613133356333383836306462653733633237633334383663333466346465","id":665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"956:66:1","typeDescriptions":{"typeIdentifier":"t_rational_19224855404247632006917173431419498680506051063941070371722880450128577361118_by_1","typeString":"int_const 1922...(69 digits omitted)...1118"},"value":"0x2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de"},"visibility":"private"},{"id":697,"nodeType":"FunctionDefinition","src":"1027:351:1","nodes":[],"body":{"id":696,"nodeType":"Block","src":"1135:243:1","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":678,"name":"EIP712_DOMAIN_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"1185:22:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":679,"name":"EIP712_DOMAIN_NAME_SEQUENCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":662,"src":"1217:27:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":680,"name":"EIP712_DOMAIN_VERSION_SEQUENCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":666,"src":"1254:30:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"condition":{"id":681,"name":"_noChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":668,"src":"1294:10:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"expression":{"id":688,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1328:5:1","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1334:7:1","memberName":"chainid","nodeType":"MemberAccess","src":"1328:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1320:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":686,"name":"uint256","nodeType":"ElementaryTypeName","src":"1320:7:1","typeDescriptions":{}}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1320:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1294:48:1","trueExpression":{"arguments":[{"hexValue":"30","id":684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:1:1","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":683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1307:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":682,"name":"uint256","nodeType":"ElementaryTypeName","src":"1307:7:1","typeDescriptions":{}}},"id":685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1307:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":692,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"1352:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":676,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1165:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1169:6:1","memberName":"encode","nodeType":"MemberAccess","src":"1165:10:1","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1165:202:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":675,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1148:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1148:225:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":674,"id":695,"nodeType":"Return","src":"1141:232:1"}]},"implemented":true,"kind":"function","modifiers":[],"name":"domainSeparator","nameLocation":"1036:15:1","parameters":{"id":671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":668,"mutability":"mutable","name":"_noChainId","nameLocation":"1057:10:1","nodeType":"VariableDeclaration","scope":697,"src":"1052:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":667,"name":"bool","nodeType":"ElementaryTypeName","src":"1052:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":670,"mutability":"mutable","name":"_wallet","nameLocation":"1077:7:1","nodeType":"VariableDeclaration","scope":697,"src":"1069:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":669,"name":"address","nodeType":"ElementaryTypeName","src":"1069:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1051:34:1"},"returnParameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":673,"mutability":"mutable","name":"_domainSeparator","nameLocation":"1117:16:1","nodeType":"VariableDeclaration","scope":697,"src":"1109:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":672,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1109:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1108:26:1"},"scope":1414,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":701,"nodeType":"VariableDeclaration","src":"1525:107:1","nodes":[],"constant":true,"documentation":{"id":698,"nodeType":"StructuredDocumentation","src":"1382:140:1","text":"@dev keccak256(\"Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\")"},"mutability":"constant","name":"CALL_TYPEHASH","nameLocation":"1550:13:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":699,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1525:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830363033393835323539613935336461316636356135323266353839633137626431643031313765633164336162623763303738386165663235316566343337","id":700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1566:66:1","typeDescriptions":{"typeIdentifier":"t_rational_2720228918296723626360963932407871369705396312253585537199823977844291073079_by_1","typeString":"int_const 2720...(68 digits omitted)...3079"},"value":"0x0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437"},"visibility":"private"},{"id":705,"nodeType":"VariableDeclaration","src":"1845:108:1","nodes":[],"constant":true,"documentation":{"id":702,"nodeType":"StructuredDocumentation","src":"1637:205:1","text":"@dev keccak256(\"Calls(Call[] calls,uint256 space,uint256 nonce,address[] wallets)Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\")"},"mutability":"constant","name":"CALLS_TYPEHASH","nameLocation":"1870:14:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":703,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1845:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307831316531653430373961373961363665346164653530303333636665323637386364643533343164326466653565663935313365646231613062653134376132","id":704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1887:66:1","typeDescriptions":{"typeIdentifier":"t_rational_8088432818645496868949845499382202138579422833748228835324246952328244053922_by_1","typeString":"int_const 8088...(68 digits omitted)...3922"},"value":"0x11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a2"},"visibility":"private"},{"id":709,"nodeType":"VariableDeclaration","src":"2023:110:1","nodes":[],"constant":true,"documentation":{"id":706,"nodeType":"StructuredDocumentation","src":"1958:62:1","text":"@dev keccak256(\"Message(bytes message,address[] wallets)\")"},"mutability":"constant","name":"MESSAGE_TYPEHASH","nameLocation":"2048:16:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2023:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307865313961336239346663336337656365336638393064393861393962633432323631353533376130386465613036303366613834323538363764383764343636","id":708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2067:66:1","typeDescriptions":{"typeIdentifier":"t_rational_102042896598880959789982557965414717533526188977275095176186987427015590138982_by_1","typeString":"int_const 1020...(70 digits omitted)...8982"},"value":"0xe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466"},"visibility":"private"},{"id":713,"nodeType":"VariableDeclaration","src":"2212:116:1","nodes":[],"constant":true,"documentation":{"id":710,"nodeType":"StructuredDocumentation","src":"2138:71:1","text":"@dev keccak256(\"ConfigUpdate(bytes32 imageHash,address[] wallets)\")"},"mutability":"constant","name":"CONFIG_UPDATE_TYPEHASH","nameLocation":"2237:22:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":711,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2212:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307831316664656237653833373361316161393662666163386430656139313532366232633564313565356365653230653035343365373830323538663365386534","id":712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2262:66:1","typeDescriptions":{"typeIdentifier":"t_rational_8137956054492713933634491153494727094918514662285841049577704819443807545572_by_1","typeString":"int_const 8137...(68 digits omitted)...5572"},"value":"0x11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4"},"visibility":"private"},{"id":717,"nodeType":"VariableDeclaration","src":"2367:46:1","nodes":[],"constant":true,"documentation":{"id":714,"nodeType":"StructuredDocumentation","src":"2333:31:1","text":"@notice Kind of transaction"},"functionSelector":"075a3d2d","mutability":"constant","name":"KIND_TRANSACTIONS","nameLocation":"2389:17:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":715,"name":"uint8","nodeType":"ElementaryTypeName","src":"2367:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783030","id":716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2409:4:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"id":721,"nodeType":"VariableDeclaration","src":"2446:41:1","nodes":[],"constant":true,"documentation":{"id":718,"nodeType":"StructuredDocumentation","src":"2417:26:1","text":"@notice Kind of digest"},"functionSelector":"3d5c1f9b","mutability":"constant","name":"KIND_MESSAGE","nameLocation":"2468:12:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":719,"name":"uint8","nodeType":"ElementaryTypeName","src":"2446:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783031","id":720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2483:4:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"public"},{"id":725,"nodeType":"VariableDeclaration","src":"2527:47:1","nodes":[],"constant":true,"documentation":{"id":722,"nodeType":"StructuredDocumentation","src":"2491:33:1","text":"@notice Kind of config update"},"functionSelector":"0739d59a","mutability":"constant","name":"KIND_CONFIG_UPDATE","nameLocation":"2549:18:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":723,"name":"uint8","nodeType":"ElementaryTypeName","src":"2527:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783032","id":724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2570:4:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"visibility":"public"},{"id":729,"nodeType":"VariableDeclaration","src":"2608:40:1","nodes":[],"constant":true,"documentation":{"id":726,"nodeType":"StructuredDocumentation","src":"2578:27:1","text":"@notice Kind of message"},"functionSelector":"b570180a","mutability":"constant","name":"KIND_DIGEST","nameLocation":"2630:11:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":727,"name":"uint8","nodeType":"ElementaryTypeName","src":"2608:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783033","id":728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2644:4:1","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x03"},"visibility":"public"},{"id":733,"nodeType":"VariableDeclaration","src":"2699:50:1","nodes":[],"constant":true,"documentation":{"id":730,"nodeType":"StructuredDocumentation","src":"2653:43:1","text":"@notice Behavior on error: ignore error"},"functionSelector":"4a7d2aa0","mutability":"constant","name":"BEHAVIOR_IGNORE_ERROR","nameLocation":"2721:21:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":731,"name":"uint8","nodeType":"ElementaryTypeName","src":"2699:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783030","id":732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2745:4:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"id":737,"nodeType":"VariableDeclaration","src":"2802:53:1","nodes":[],"constant":true,"documentation":{"id":734,"nodeType":"StructuredDocumentation","src":"2753:46:1","text":"@notice Behavior on error: revert on error"},"functionSelector":"4e5f5715","mutability":"constant","name":"BEHAVIOR_REVERT_ON_ERROR","nameLocation":"2824:24:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":735,"name":"uint8","nodeType":"ElementaryTypeName","src":"2802:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783031","id":736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2851:4:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"public"},{"id":741,"nodeType":"VariableDeclaration","src":"2907:52:1","nodes":[],"constant":true,"documentation":{"id":738,"nodeType":"StructuredDocumentation","src":"2859:45:1","text":"@notice Behavior on error: abort on error"},"functionSelector":"420b0c25","mutability":"constant","name":"BEHAVIOR_ABORT_ON_ERROR","nameLocation":"2929:23:1","scope":1414,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":739,"name":"uint8","nodeType":"ElementaryTypeName","src":"2907:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783032","id":740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2955:4:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"visibility":"public"},{"id":757,"nodeType":"StructDefinition","src":"3374:165:1","nodes":[],"canonicalName":"Payload.Call","documentation":{"id":742,"nodeType":"StructuredDocumentation","src":"2964:407:1","text":"@notice Payload call information\n @param to Address of the target contract\n @param value Value to send with the call\n @param data Data to send with the call\n @param gasLimit Gas limit for the call\n @param delegateCall If the call is a delegate call\n @param onlyFallback If the call should only be executed in an error scenario\n @param behaviorOnError Behavior on error"},"members":[{"constant":false,"id":744,"mutability":"mutable","name":"to","nameLocation":"3400:2:1","nodeType":"VariableDeclaration","scope":757,"src":"3392:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"3392:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":746,"mutability":"mutable","name":"value","nameLocation":"3416:5:1","nodeType":"VariableDeclaration","scope":757,"src":"3408:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":745,"name":"uint256","nodeType":"ElementaryTypeName","src":"3408:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":748,"mutability":"mutable","name":"data","nameLocation":"3433:4:1","nodeType":"VariableDeclaration","scope":757,"src":"3427:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":747,"name":"bytes","nodeType":"ElementaryTypeName","src":"3427:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":750,"mutability":"mutable","name":"gasLimit","nameLocation":"3451:8:1","nodeType":"VariableDeclaration","scope":757,"src":"3443:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":749,"name":"uint256","nodeType":"ElementaryTypeName","src":"3443:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":752,"mutability":"mutable","name":"delegateCall","nameLocation":"3470:12:1","nodeType":"VariableDeclaration","scope":757,"src":"3465:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":751,"name":"bool","nodeType":"ElementaryTypeName","src":"3465:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":754,"mutability":"mutable","name":"onlyFallback","nameLocation":"3493:12:1","nodeType":"VariableDeclaration","scope":757,"src":"3488:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":753,"name":"bool","nodeType":"ElementaryTypeName","src":"3488:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":756,"mutability":"mutable","name":"behaviorOnError","nameLocation":"3519:15:1","nodeType":"VariableDeclaration","scope":757,"src":"3511:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":755,"name":"uint256","nodeType":"ElementaryTypeName","src":"3511:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Call","nameLocation":"3381:4:1","scope":1414,"visibility":"public"},{"id":780,"nodeType":"StructDefinition","src":"4064:323:1","nodes":[],"canonicalName":"Payload.Decoded","documentation":{"id":758,"nodeType":"StructuredDocumentation","src":"3543:518:1","text":"@notice Decoded payload\n @param kind Kind of payload\n @param noChainId If the chain ID should be omitted\n @param calls Array of calls (transaction kind)\n @param space Nonce space for the calls (transaction kind)\n @param nonce Nonce value for the calls (transaction kind)\n @param message Message to validate (message kind)\n @param imageHash Image hash to update to (config update kind)\n @param digest Digest to validate (digest kind)\n @param parentWallets Parent wallets"},"members":[{"constant":false,"id":760,"mutability":"mutable","name":"kind","nameLocation":"4091:4:1","nodeType":"VariableDeclaration","scope":780,"src":"4085:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":759,"name":"uint8","nodeType":"ElementaryTypeName","src":"4085:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":762,"mutability":"mutable","name":"noChainId","nameLocation":"4106:9:1","nodeType":"VariableDeclaration","scope":780,"src":"4101:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":761,"name":"bool","nodeType":"ElementaryTypeName","src":"4101:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":766,"mutability":"mutable","name":"calls","nameLocation":"4152:5:1","nodeType":"VariableDeclaration","scope":780,"src":"4145:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_storage_$dyn_storage_ptr","typeString":"struct Payload.Call[]"},"typeName":{"baseType":{"id":764,"nodeType":"UserDefinedTypeName","pathNode":{"id":763,"name":"Call","nameLocations":["4145:4:1"],"nodeType":"IdentifierPath","referencedDeclaration":757,"src":"4145:4:1"},"referencedDeclaration":757,"src":"4145:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_storage_ptr","typeString":"struct Payload.Call"}},"id":765,"nodeType":"ArrayTypeName","src":"4145:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_storage_$dyn_storage_ptr","typeString":"struct Payload.Call[]"}},"visibility":"internal"},{"constant":false,"id":768,"mutability":"mutable","name":"space","nameLocation":"4171:5:1","nodeType":"VariableDeclaration","scope":780,"src":"4163:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":767,"name":"uint256","nodeType":"ElementaryTypeName","src":"4163:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":770,"mutability":"mutable","name":"nonce","nameLocation":"4190:5:1","nodeType":"VariableDeclaration","scope":780,"src":"4182:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":769,"name":"uint256","nodeType":"ElementaryTypeName","src":"4182:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":772,"mutability":"mutable","name":"message","nameLocation":"4227:7:1","nodeType":"VariableDeclaration","scope":780,"src":"4221:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":771,"name":"bytes","nodeType":"ElementaryTypeName","src":"4221:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":774,"mutability":"mutable","name":"imageHash","nameLocation":"4274:9:1","nodeType":"VariableDeclaration","scope":780,"src":"4266:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":773,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4266:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":776,"mutability":"mutable","name":"digest","nameLocation":"4325:6:1","nodeType":"VariableDeclaration","scope":780,"src":"4317:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":775,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4317:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":779,"mutability":"mutable","name":"parentWallets","nameLocation":"4369:13:1","nodeType":"VariableDeclaration","scope":780,"src":"4359:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":777,"name":"address","nodeType":"ElementaryTypeName","src":"4359:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":778,"nodeType":"ArrayTypeName","src":"4359:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"name":"Decoded","nameLocation":"4071:7:1","scope":1414,"visibility":"public"},{"id":801,"nodeType":"FunctionDefinition","src":"4391:170:1","nodes":[],"body":{"id":800,"nodeType":"Block","src":"4490:71:1","nodes":[],"statements":[{"expression":{"id":792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":788,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"4496:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":790,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4505:4:1","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":760,"src":"4496:13:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":791,"name":"KIND_MESSAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"4512:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4496:28:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":793,"nodeType":"ExpressionStatement","src":"4496:28:1"},{"expression":{"id":798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":794,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"4530:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4539:7:1","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":772,"src":"4530:16:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":797,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":782,"src":"4549:7:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4530:26:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":799,"nodeType":"ExpressionStatement","src":"4530:26:1"}]},"implemented":true,"kind":"function","modifiers":[],"name":"fromMessage","nameLocation":"4400:11:1","parameters":{"id":783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":782,"mutability":"mutable","name":"message","nameLocation":"4430:7:1","nodeType":"VariableDeclaration","scope":801,"src":"4417:20:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":781,"name":"bytes","nodeType":"ElementaryTypeName","src":"4417:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4411:30:1"},"returnParameters":{"id":787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":786,"mutability":"mutable","name":"_decoded","nameLocation":"4480:8:1","nodeType":"VariableDeclaration","scope":801,"src":"4465:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":785,"nodeType":"UserDefinedTypeName","pathNode":{"id":784,"name":"Decoded","nameLocations":["4465:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":780,"src":"4465:7:1"},"referencedDeclaration":780,"src":"4465:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"4464:25:1"},"scope":1414,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":822,"nodeType":"FunctionDefinition","src":"4565:182:1","nodes":[],"body":{"id":821,"nodeType":"Block","src":"4666:81:1","nodes":[],"statements":[{"expression":{"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":809,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":807,"src":"4672:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":811,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4681:4:1","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":760,"src":"4672:13:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":812,"name":"KIND_CONFIG_UPDATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":725,"src":"4688:18:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4672:34:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":814,"nodeType":"ExpressionStatement","src":"4672:34:1"},{"expression":{"id":819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":815,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":807,"src":"4712:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":817,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4721:9:1","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":774,"src":"4712:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":818,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"4733:9:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4712:30:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":820,"nodeType":"ExpressionStatement","src":"4712:30:1"}]},"implemented":true,"kind":"function","modifiers":[],"name":"fromConfigUpdate","nameLocation":"4574:16:1","parameters":{"id":804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":803,"mutability":"mutable","name":"imageHash","nameLocation":"4604:9:1","nodeType":"VariableDeclaration","scope":822,"src":"4596:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":802,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4596:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4590:27:1"},"returnParameters":{"id":808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":807,"mutability":"mutable","name":"_decoded","nameLocation":"4656:8:1","nodeType":"VariableDeclaration","scope":822,"src":"4641:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":806,"nodeType":"UserDefinedTypeName","pathNode":{"id":805,"name":"Decoded","nameLocations":["4641:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":780,"src":"4641:7:1"},"referencedDeclaration":780,"src":"4641:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"4640:25:1"},"scope":1414,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":843,"nodeType":"FunctionDefinition","src":"4751:160:1","nodes":[],"body":{"id":842,"nodeType":"Block","src":"4843:68:1","nodes":[],"statements":[{"expression":{"id":834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":830,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"4849:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":832,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4858:4:1","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":760,"src":"4849:13:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":833,"name":"KIND_DIGEST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":729,"src":"4865:11:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4849:27:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":835,"nodeType":"ExpressionStatement","src":"4849:27:1"},{"expression":{"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":836,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"4882:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":838,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4891:6:1","memberName":"digest","nodeType":"MemberAccess","referencedDeclaration":776,"src":"4882:15:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":839,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":824,"src":"4900:6:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4882:24:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":841,"nodeType":"ExpressionStatement","src":"4882:24:1"}]},"implemented":true,"kind":"function","modifiers":[],"name":"fromDigest","nameLocation":"4760:10:1","parameters":{"id":825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":824,"mutability":"mutable","name":"digest","nameLocation":"4784:6:1","nodeType":"VariableDeclaration","scope":843,"src":"4776:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":823,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4776:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4770:24:1"},"returnParameters":{"id":829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":828,"mutability":"mutable","name":"_decoded","nameLocation":"4833:8:1","nodeType":"VariableDeclaration","scope":843,"src":"4818:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":827,"nodeType":"UserDefinedTypeName","pathNode":{"id":826,"name":"Decoded","nameLocations":["4818:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":780,"src":"4818:7:1"},"referencedDeclaration":780,"src":"4818:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"4817:25:1"},"scope":1414,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1159,"nodeType":"FunctionDefinition","src":"4915:2802:1","nodes":[],"body":{"id":1158,"nodeType":"Block","src":"5019:2698:1","nodes":[],"statements":[{"expression":{"id":855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":851,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"5025:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5034:4:1","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":760,"src":"5025:13:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":854,"name":"KIND_TRANSACTIONS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"5041:17:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5025:33:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":856,"nodeType":"ExpressionStatement","src":"5025:33:1"},{"assignments":[858,860],"declarations":[{"constant":false,"id":858,"mutability":"mutable","name":"globalFlag","nameLocation":"5102:10:1","nodeType":"VariableDeclaration","scope":1158,"src":"5094:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":857,"name":"uint256","nodeType":"ElementaryTypeName","src":"5094:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":860,"mutability":"mutable","name":"pointer","nameLocation":"5122:7:1","nodeType":"VariableDeclaration","scope":1158,"src":"5114:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":859,"name":"uint256","nodeType":"ElementaryTypeName","src":"5114:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":864,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":861,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"5133:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5140:14:1","memberName":"readFirstUint8","nodeType":"MemberAccess","referencedDeclaration":1489,"src":"5133:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint8,uint256)"}},"id":863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5133:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5093:63:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":865,"name":"globalFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"5219:10:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783031","id":866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5232:4:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"5219:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783031","id":868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5240:4:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"5219:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":888,"nodeType":"Block","src":"5285:70:1","statements":[{"expression":{"id":886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":877,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"5294:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5303:5:1","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":768,"src":"5294:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":880,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"5310:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":881,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5293:25:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":884,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"5340:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":882,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"5321:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5328:11:1","memberName":"readUint160","nodeType":"MemberAccess","referencedDeclaration":1554,"src":"5321:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint160_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint160,uint256)"}},"id":885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5321:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint256_$","typeString":"tuple(uint160,uint256)"}},"src":"5293:55:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":887,"nodeType":"ExpressionStatement","src":"5293:55:1"}]},"id":889,"nodeType":"IfStatement","src":"5215:140:1","trueBody":{"id":876,"nodeType":"Block","src":"5246:33:1","statements":[{"expression":{"id":874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":870,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"5254:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":872,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5263:5:1","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":768,"src":"5254:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5271:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5254:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":875,"nodeType":"ExpressionStatement","src":"5254:18:1"}]}},{"assignments":[891],"declarations":[{"constant":false,"id":891,"mutability":"mutable","name":"nonceSize","nameLocation":"5420:9:1","nodeType":"VariableDeclaration","scope":1158,"src":"5412:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":890,"name":"uint256","nodeType":"ElementaryTypeName","src":"5412:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":898,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":892,"name":"globalFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"5433:10:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5447:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5433:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":895,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5432:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783037","id":896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5452:4:1","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"0x07"},"src":"5432:24:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5412:44:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":899,"name":"nonceSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"5467:9:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5479:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5467:13:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":915,"nodeType":"IfStatement","src":"5463:122:1","trueBody":{"id":914,"nodeType":"Block","src":"5482:103:1","statements":[{"expression":{"id":912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":902,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"5515:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":904,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5524:5:1","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":770,"src":"5515:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":905,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"5531:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":906,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5514:25:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":909,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"5559:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":910,"name":"nonceSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":891,"src":"5568:9:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":907,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"5542:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5549:9:1","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":1582,"src":"5542:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5542:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5514:64:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":913,"nodeType":"ExpressionStatement","src":"5514:64:1"}]}},{"assignments":[917],"declarations":[{"constant":false,"id":917,"mutability":"mutable","name":"numCalls","nameLocation":"5599:8:1","nodeType":"VariableDeclaration","scope":1158,"src":"5591:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":916,"name":"uint256","nodeType":"ElementaryTypeName","src":"5591:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":918,"nodeType":"VariableDeclarationStatement","src":"5591:16:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"globalFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"5678:10:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5691:4:1","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"5678:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783130","id":922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5699:4:1","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"5678:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":955,"nodeType":"Block","src":"5738:256:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":929,"name":"globalFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":858,"src":"5822:10:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5835:4:1","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5822:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783230","id":932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5843:4:1","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5822:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":953,"nodeType":"Block","src":"5922:66:1","statements":[{"expression":{"id":951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":944,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"5933:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":945,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"5943:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":946,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5932:19:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":949,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"5971:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":947,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"5954:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5961:9:1","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":1502,"src":"5954:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5954:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"5932:47:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":952,"nodeType":"ExpressionStatement","src":"5932:47:1"}]},"id":954,"nodeType":"IfStatement","src":"5818:170:1","trueBody":{"id":943,"nodeType":"Block","src":"5849:67:1","statements":[{"expression":{"id":941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":934,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"5860:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":935,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"5870:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":936,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5859:19:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":939,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"5899:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":937,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"5881:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5888:10:1","memberName":"readUint16","nodeType":"MemberAccess","referencedDeclaration":1515,"src":"5881:17:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint16_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint16,uint256)"}},"id":940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5881:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint256_$","typeString":"tuple(uint16,uint256)"}},"src":"5859:48:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":942,"nodeType":"ExpressionStatement","src":"5859:48:1"}]}}]},"id":956,"nodeType":"IfStatement","src":"5674:320:1","trueBody":{"id":928,"nodeType":"Block","src":"5705:27:1","statements":[{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":924,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"5713:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5724:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5713:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":927,"nodeType":"ExpressionStatement","src":"5713:12:1"}]}},{"expression":{"id":966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":957,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"6022:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6031:5:1","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":766,"src":"6022:14:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":964,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"6050:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6039:10:1","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Payload.Call memory[] memory)"},"typeName":{"baseType":{"id":961,"nodeType":"UserDefinedTypeName","pathNode":{"id":960,"name":"Call","nameLocations":["6043:4:1"],"nodeType":"IdentifierPath","referencedDeclaration":757,"src":"6043:4:1"},"referencedDeclaration":757,"src":"6043:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_storage_ptr","typeString":"struct Payload.Call"}},"id":962,"nodeType":"ArrayTypeName","src":"6043:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_storage_$dyn_storage_ptr","typeString":"struct Payload.Call[]"}}},"id":965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6039:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"src":"6022:37:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":967,"nodeType":"ExpressionStatement","src":"6022:37:1"},{"body":{"id":1145,"nodeType":"Block","src":"6105:1507:1","statements":[{"assignments":[979],"declarations":[{"constant":false,"id":979,"mutability":"mutable","name":"flags","nameLocation":"6119:5:1","nodeType":"VariableDeclaration","scope":1145,"src":"6113:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":978,"name":"uint8","nodeType":"ElementaryTypeName","src":"6113:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":980,"nodeType":"VariableDeclarationStatement","src":"6113:11:1"},{"expression":{"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":981,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"6133:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":982,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"6140:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":983,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6132:16:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":986,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"6168:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":984,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6151:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6158:9:1","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":1502,"src":"6151:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"6132:44:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":989,"nodeType":"ExpressionStatement","src":"6132:44:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":990,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"6283:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783031","id":991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6291:4:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"6283:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783031","id":993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6299:4:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"6283:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1022,"nodeType":"Block","src":"6390:115:1","statements":[{"expression":{"id":1020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"expression":{"id":1008,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"6436:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1011,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6445:5:1","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":766,"src":"6436:14:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1012,"indexExpression":{"id":1010,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"6451:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6436:17:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1013,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6454:2:1","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":744,"src":"6436:20:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1014,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"6458:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1015,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6435:31:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1018,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"6488:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1016,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6469:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6476:11:1","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":1621,"src":"6469:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":1019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6469:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"6435:61:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1021,"nodeType":"ExpressionStatement","src":"6435:61:1"}]},"id":1023,"nodeType":"IfStatement","src":"6279:226:1","trueBody":{"id":1007,"nodeType":"Block","src":"6305:79:1","statements":[{"expression":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":995,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"6339:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6348:5:1","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":766,"src":"6339:14:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":999,"indexExpression":{"id":997,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"6354:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6339:17:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1000,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6357:2:1","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":744,"src":"6339:20:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1003,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6370:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_Payload_$1414","typeString":"library Payload"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payload_$1414","typeString":"library Payload"}],"id":1002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6362:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1001,"name":"address","nodeType":"ElementaryTypeName","src":"6362:7:1","typeDescriptions":{}}},"id":1004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6362:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6339:36:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1006,"nodeType":"ExpressionStatement","src":"6339:36:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1024,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"6577:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783032","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6585:4:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"6577:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783032","id":1027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6593:4:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"6577:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1044,"nodeType":"IfStatement","src":"6573:109:1","trueBody":{"id":1043,"nodeType":"Block","src":"6599:83:1","statements":[{"expression":{"id":1041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"expression":{"id":1029,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"6610:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1032,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6619:5:1","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":766,"src":"6610:14:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1033,"indexExpression":{"id":1031,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"6625:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6610:17:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6628:5:1","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":746,"src":"6610:23:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1035,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"6635:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1036,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6609:34:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1039,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"6665:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1037,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6646:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6653:11:1","memberName":"readUint256","nodeType":"MemberAccess","referencedDeclaration":1567,"src":"6646:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint256,uint256)"}},"id":1040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6646:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"6609:64:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1042,"nodeType":"ExpressionStatement","src":"6609:64:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1045,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"6752:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783034","id":1046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6760:4:1","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"src":"6752:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783034","id":1048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6768:4:1","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"src":"6752:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1081,"nodeType":"IfStatement","src":"6748:287:1","trueBody":{"id":1080,"nodeType":"Block","src":"6774:261:1","statements":[{"assignments":[1051],"declarations":[{"constant":false,"id":1051,"mutability":"mutable","name":"calldataSize","nameLocation":"6846:12:1","nodeType":"VariableDeclaration","scope":1080,"src":"6838:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1050,"name":"uint256","nodeType":"ElementaryTypeName","src":"6838:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1052,"nodeType":"VariableDeclarationStatement","src":"6838:20:1"},{"expression":{"id":1060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1053,"name":"calldataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"6869:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1054,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"6883:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1055,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6868:23:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1058,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"6912:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1056,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6894:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6901:10:1","memberName":"readUint24","nodeType":"MemberAccess","referencedDeclaration":1528,"src":"6894:17:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint24,uint256)"}},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6894:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint24_$_t_uint256_$","typeString":"tuple(uint24,uint256)"}},"src":"6868:52:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1061,"nodeType":"ExpressionStatement","src":"6868:52:1"},{"expression":{"id":1074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1062,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"6930:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1065,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6939:5:1","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":766,"src":"6930:14:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1066,"indexExpression":{"id":1064,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"6945:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6930:17:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6948:4:1","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":748,"src":"6930:22:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1068,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"6955:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1070,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"6970:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1071,"name":"calldataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"6980:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6970:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6955:38:1","startExpression":{"id":1069,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"6962:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"src":"6930:63:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1075,"nodeType":"ExpressionStatement","src":"6930:63:1"},{"expression":{"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1076,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"7003:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1077,"name":"calldataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"7014:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7003:23:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1079,"nodeType":"ExpressionStatement","src":"7003:23:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1082,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"7113:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783038","id":1083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7121:4:1","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"7113:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783038","id":1085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7129:4:1","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"7113:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1102,"nodeType":"IfStatement","src":"7109:112:1","trueBody":{"id":1101,"nodeType":"Block","src":"7135:86:1","statements":[{"expression":{"id":1099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"expression":{"id":1087,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"7146:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7155:5:1","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":766,"src":"7146:14:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1091,"indexExpression":{"id":1089,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"7161:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7146:17:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7164:8:1","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":750,"src":"7146:26:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1093,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"7174:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1094,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7145:37:1","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1097,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"7204:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1095,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"7185:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7192:11:1","memberName":"readUint256","nodeType":"MemberAccess","referencedDeclaration":1567,"src":"7185:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint256,uint256)"}},"id":1098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7185:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"7145:67:1","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1100,"nodeType":"ExpressionStatement","src":"7145:67:1"}]}},{"expression":{"id":1115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1103,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"7297:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1106,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7306:5:1","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":766,"src":"7297:14:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1107,"indexExpression":{"id":1105,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"7312:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7297:17:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7315:12:1","memberName":"delegateCall","nodeType":"MemberAccess","referencedDeclaration":752,"src":"7297:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1109,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"7331:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130","id":1110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7339:4:1","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"7331:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783130","id":1112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7347:4:1","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"7331:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1114,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7330:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7297:55:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1116,"nodeType":"ExpressionStatement","src":"7297:55:1"},{"expression":{"id":1129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1117,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"7420:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7429:5:1","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":766,"src":"7420:14:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1121,"indexExpression":{"id":1119,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"7435:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7420:17:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1122,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7438:12:1","memberName":"onlyFallback","nodeType":"MemberAccess","referencedDeclaration":754,"src":"7420:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1123,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"7454:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":1124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7462:4:1","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"7454:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783230","id":1126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7470:4:1","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"7454:20:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1128,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7453:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7420:55:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1130,"nodeType":"ExpressionStatement","src":"7420:55:1"},{"expression":{"id":1143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1131,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"7550:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7559:5:1","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":766,"src":"7550:14:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1135,"indexExpression":{"id":1133,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"7565:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7550:17:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7568:15:1","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":756,"src":"7550:33:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1137,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"7587:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784330","id":1138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7595:4:1","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xC0"},"src":"7587:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1140,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7586:14:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"36","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7604:1:1","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7586:19:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7550:55:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1144,"nodeType":"ExpressionStatement","src":"7550:55:1"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":972,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"6086:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":973,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"6090:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6086:12:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1146,"initializationExpression":{"assignments":[969],"declarations":[{"constant":false,"id":969,"mutability":"mutable","name":"i","nameLocation":"6079:1:1","nodeType":"VariableDeclaration","scope":1146,"src":"6071:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":968,"name":"uint256","nodeType":"ElementaryTypeName","src":"6071:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":971,"initialValue":{"hexValue":"30","id":970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6083:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6071:13:1"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6100:3:1","subExpression":{"id":975,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"6100:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":977,"nodeType":"ExpressionStatement","src":"6100:3:1"},"nodeType":"ForStatement","src":"6066:1546:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1147,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"7622:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":1148,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"7633:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7640:6:1","memberName":"length","nodeType":"MemberAccess","src":"7633:13:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7622:24:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1155,"nodeType":"IfStatement","src":"7618:73:1","trueBody":{"id":1154,"nodeType":"Block","src":"7648:43:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1151,"name":"InvalidPackedLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"7663:19:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7663:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1153,"nodeType":"RevertStatement","src":"7656:28:1"}]}},{"expression":{"id":1156,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"7704:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"functionReturnParameters":850,"id":1157,"nodeType":"Return","src":"7697:15:1"}]},"implemented":true,"kind":"function","modifiers":[],"name":"fromPackedCalls","nameLocation":"4924:15:1","parameters":{"id":846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"packed","nameLocation":"4960:6:1","nodeType":"VariableDeclaration","scope":1159,"src":"4945:21:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":844,"name":"bytes","nodeType":"ElementaryTypeName","src":"4945:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4939:31:1"},"returnParameters":{"id":850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":849,"mutability":"mutable","name":"_decoded","nameLocation":"5009:8:1","nodeType":"VariableDeclaration","scope":1159,"src":"4994:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":848,"nodeType":"UserDefinedTypeName","pathNode":{"id":847,"name":"Decoded","nameLocations":["4994:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":780,"src":"4994:7:1"},"referencedDeclaration":780,"src":"4994:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"4993:25:1"},"scope":1414,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1191,"nodeType":"FunctionDefinition","src":"7721:252:1","nodes":[],"body":{"id":1190,"nodeType":"Block","src":"7794:179:1","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":1170,"name":"CALL_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":701,"src":"7844:13:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1171,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"7859:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7861:2:1","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":744,"src":"7859:4:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1173,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"7865:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7867:5:1","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":746,"src":"7865:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":1176,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"7884:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1177,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7886:4:1","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":748,"src":"7884:6:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1175,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7874:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7874:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1179,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"7893:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1180,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7895:8:1","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":750,"src":"7893:10:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1181,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"7905:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7907:12:1","memberName":"delegateCall","nodeType":"MemberAccess","referencedDeclaration":752,"src":"7905:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":1183,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"7921:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1184,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7923:12:1","memberName":"onlyFallback","nodeType":"MemberAccess","referencedDeclaration":754,"src":"7921:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":1185,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"7937:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7939:15:1","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":756,"src":"7937:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1168,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7824:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7828:6:1","memberName":"encode","nodeType":"MemberAccess","src":"7824:10:1","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7824:138:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1167,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7807:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7807:161:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1166,"id":1189,"nodeType":"Return","src":"7800:168:1"}]},"implemented":true,"kind":"function","modifiers":[],"name":"hashCall","nameLocation":"7730:8:1","parameters":{"id":1163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1162,"mutability":"mutable","name":"c","nameLocation":"7756:1:1","nodeType":"VariableDeclaration","scope":1191,"src":"7744:13:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call"},"typeName":{"id":1161,"nodeType":"UserDefinedTypeName","pathNode":{"id":1160,"name":"Call","nameLocations":["7744:4:1"],"nodeType":"IdentifierPath","referencedDeclaration":757,"src":"7744:4:1"},"referencedDeclaration":757,"src":"7744:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_storage_ptr","typeString":"struct Payload.Call"}},"visibility":"internal"}],"src":"7738:23:1"},"returnParameters":{"id":1166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1165,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1191,"src":"7785:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1164,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7785:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7784:9:1"},"scope":1414,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1243,"nodeType":"FunctionDefinition","src":"7977:454:1","nodes":[],"body":{"id":1242,"nodeType":"Block","src":"8057:374:1","nodes":[],"statements":[{"assignments":[1204],"declarations":[{"constant":false,"id":1204,"mutability":"mutable","name":"callHashes","nameLocation":"8237:10:1","nodeType":"VariableDeclaration","scope":1242,"src":"8220:27:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1202,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8220:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1203,"nodeType":"ArrayTypeName","src":"8220:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":1211,"initialValue":{"arguments":[{"expression":{"id":1208,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8264:5:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8270:6:1","memberName":"length","nodeType":"MemberAccess","src":"8264:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8250:13:1","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":1205,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8254:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1206,"nodeType":"ArrayTypeName","src":"8254:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":1210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8250:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8220:57:1"},{"body":{"id":1233,"nodeType":"Block","src":"8326:49:1","statements":[{"expression":{"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1223,"name":"callHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1204,"src":"8334:10:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":1225,"indexExpression":{"id":1224,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"8345:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8334:13:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":1227,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8359:5:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1229,"indexExpression":{"id":1228,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"8365:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8359:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Call_$757_memory_ptr","typeString":"struct Payload.Call memory"}],"id":1226,"name":"hashCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1191,"src":"8350:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Call_$757_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Call memory) pure returns (bytes32)"}},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8350:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8334:34:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1232,"nodeType":"ExpressionStatement","src":"8334:34:1"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1216,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"8303:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1217,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"8307:5:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8313:6:1","memberName":"length","nodeType":"MemberAccess","src":"8307:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8303:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1234,"initializationExpression":{"assignments":[1213],"declarations":[{"constant":false,"id":1213,"mutability":"mutable","name":"i","nameLocation":"8296:1:1","nodeType":"VariableDeclaration","scope":1234,"src":"8288:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1212,"name":"uint256","nodeType":"ElementaryTypeName","src":"8288:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1215,"initialValue":{"hexValue":"30","id":1214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8300:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8288:13:1"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8321:3:1","subExpression":{"id":1220,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"8321:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1222,"nodeType":"ExpressionStatement","src":"8321:3:1"},"nodeType":"ForStatement","src":"8283:92:1"},{"expression":{"arguments":[{"arguments":[{"id":1238,"name":"callHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1204,"src":"8414:10:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"expression":{"id":1236,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8397:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8401:12:1","memberName":"encodePacked","nodeType":"MemberAccess","src":"8397:16:1","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8397:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1235,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8387:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8387:39:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1199,"id":1241,"nodeType":"Return","src":"8380:46:1"}]},"implemented":true,"kind":"function","modifiers":[],"name":"hashCalls","nameLocation":"7986:9:1","parameters":{"id":1196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1195,"mutability":"mutable","name":"calls","nameLocation":"8015:5:1","nodeType":"VariableDeclaration","scope":1243,"src":"8001:19:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call[]"},"typeName":{"baseType":{"id":1193,"nodeType":"UserDefinedTypeName","pathNode":{"id":1192,"name":"Call","nameLocations":["8001:4:1"],"nodeType":"IdentifierPath","referencedDeclaration":757,"src":"8001:4:1"},"referencedDeclaration":757,"src":"8001:4:1","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$757_storage_ptr","typeString":"struct Payload.Call"}},"id":1194,"nodeType":"ArrayTypeName","src":"8001:6:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_storage_$dyn_storage_ptr","typeString":"struct Payload.Call[]"}},"visibility":"internal"}],"src":"7995:29:1"},"returnParameters":{"id":1199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1198,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1243,"src":"8048:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1197,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8048:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8047:9:1"},"scope":1414,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1344,"nodeType":"FunctionDefinition","src":"8435:972:1","nodes":[],"body":{"id":1343,"nodeType":"Block","src":"8518:889:1","nodes":[],"statements":[{"assignments":[1252],"declarations":[{"constant":false,"id":1252,"mutability":"mutable","name":"walletsHash","nameLocation":"8532:11:1","nodeType":"VariableDeclaration","scope":1343,"src":"8524:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1251,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8524:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1260,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":1256,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"8573:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8582:13:1","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":779,"src":"8573:22:1","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"}],"expression":{"id":1254,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8556:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8560:12:1","memberName":"encodePacked","nodeType":"MemberAccess","src":"8556:16:1","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8556:40:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1253,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8546:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8546:51:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8524:73:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1261,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"8608:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8617:4:1","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":760,"src":"8608:13:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1263,"name":"KIND_TRANSACTIONS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"8625:17:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8608:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1286,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"8822:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1287,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8831:4:1","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":760,"src":"8822:13:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1288,"name":"KIND_MESSAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"8839:12:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8822:29:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1303,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"8966:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1304,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8975:4:1","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":760,"src":"8966:13:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1305,"name":"KIND_CONFIG_UPDATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":725,"src":"8983:18:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8966:35:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1318,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"9113:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9122:4:1","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":760,"src":"9113:13:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1320,"name":"KIND_DIGEST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":729,"src":"9130:11:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9113:28:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1338,"nodeType":"Block","src":"9333:70:1","statements":[{"errorCall":{"arguments":[{"expression":{"id":1334,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"9382:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1335,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9391:4:1","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":760,"src":"9382:13:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1333,"name":"InvalidKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"9370:11:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":1336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9370:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1337,"nodeType":"RevertStatement","src":"9363:33:1"}]},"id":1339,"nodeType":"IfStatement","src":"9109:294:1","trueBody":{"id":1332,"nodeType":"Block","src":"9143:184:1","statements":[{"expression":{"arguments":[{"arguments":[{"id":1325,"name":"MESSAGE_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"9272:16:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1326,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"9290:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1327,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9299:6:1","memberName":"digest","nodeType":"MemberAccess","referencedDeclaration":776,"src":"9290:15:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1328,"name":"walletsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"9307:11:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1323,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9261:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1324,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9265:6:1","memberName":"encode","nodeType":"MemberAccess","src":"9261:10:1","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9261:58:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1322,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9251:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9251:69:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1250,"id":1331,"nodeType":"Return","src":"9244:76:1"}]}},"id":1340,"nodeType":"IfStatement","src":"8962:441:1","trueBody":{"id":1317,"nodeType":"Block","src":"9003:100:1","statements":[{"expression":{"arguments":[{"arguments":[{"id":1310,"name":"CONFIG_UPDATE_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":713,"src":"9039:22:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1311,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"9063:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1312,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9072:9:1","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":774,"src":"9063:18:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1313,"name":"walletsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"9083:11:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1308,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9028:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9032:6:1","memberName":"encode","nodeType":"MemberAccess","src":"9028:10:1","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9028:67:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1307,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9018:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9018:78:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1250,"id":1316,"nodeType":"Return","src":"9011:85:1"}]}},"id":1341,"nodeType":"IfStatement","src":"8818:585:1","trueBody":{"id":1302,"nodeType":"Block","src":"8853:103:1","statements":[{"expression":{"arguments":[{"arguments":[{"id":1293,"name":"MESSAGE_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":709,"src":"8889:16:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"expression":{"id":1295,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"8917:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8926:7:1","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":772,"src":"8917:16:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1294,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8907:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8907:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1298,"name":"walletsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"8936:11:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1291,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8878:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8882:6:1","memberName":"encode","nodeType":"MemberAccess","src":"8878:10:1","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8878:70:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1290,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8868:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8868:81:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1250,"id":1301,"nodeType":"Return","src":"8861:88:1"}]}},"id":1342,"nodeType":"IfStatement","src":"8604:799:1","trueBody":{"id":1285,"nodeType":"Block","src":"8644:168:1","statements":[{"assignments":[1266],"declarations":[{"constant":false,"id":1266,"mutability":"mutable","name":"callsHash","nameLocation":"8660:9:1","nodeType":"VariableDeclaration","scope":1285,"src":"8652:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1265,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8652:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1271,"initialValue":{"arguments":[{"expression":{"id":1268,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"8682:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1269,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8691:5:1","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":766,"src":"8682:14:1","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}],"id":1267,"name":"hashCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1243,"src":"8672:9:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Call_$757_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Call memory[] memory) pure returns (bytes32)"}},"id":1270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8672:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8652:45:1"},{"expression":{"arguments":[{"arguments":[{"id":1275,"name":"CALLS_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"8733:14:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1276,"name":"callsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1266,"src":"8749:9:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1277,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"8760:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1278,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8769:5:1","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":768,"src":"8760:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1279,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"8776:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1280,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8785:5:1","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":770,"src":"8776:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1281,"name":"walletsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"8792:11:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1273,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8722:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8726:6:1","memberName":"encode","nodeType":"MemberAccess","src":"8722:10:1","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8722:82:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1272,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8712:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8712:93:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1250,"id":1284,"nodeType":"Return","src":"8705:100:1"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"toEIP712","nameLocation":"8444:8:1","parameters":{"id":1247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1246,"mutability":"mutable","name":"_decoded","nameLocation":"8473:8:1","nodeType":"VariableDeclaration","scope":1344,"src":"8458:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1245,"nodeType":"UserDefinedTypeName","pathNode":{"id":1244,"name":"Decoded","nameLocations":["8458:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":780,"src":"8458:7:1"},"referencedDeclaration":780,"src":"8458:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"8452:33:1"},"returnParameters":{"id":1250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1249,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1344,"src":"8509:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1248,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8509:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8508:9:1"},"scope":1414,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1379,"nodeType":"FunctionDefinition","src":"9411:274:1","nodes":[],"body":{"id":1378,"nodeType":"Block","src":"9490:195:1","nodes":[],"statements":[{"assignments":[1353],"declarations":[{"constant":false,"id":1353,"mutability":"mutable","name":"domain","nameLocation":"9504:6:1","nodeType":"VariableDeclaration","scope":1378,"src":"9496:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1352,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9496:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1362,"initialValue":{"arguments":[{"expression":{"id":1355,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"9529:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9538:9:1","memberName":"noChainId","nodeType":"MemberAccess","referencedDeclaration":762,"src":"9529:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":1359,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9557:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_Payload_$1414","typeString":"library Payload"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payload_$1414","typeString":"library Payload"}],"id":1358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9549:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1357,"name":"address","nodeType":"ElementaryTypeName","src":"9549:7:1","typeDescriptions":{}}},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9549:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1354,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"9513:15:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$_t_address_$returns$_t_bytes32_$","typeString":"function (bool,address) view returns (bytes32)"}},"id":1361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9513:50:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9496:67:1"},{"assignments":[1364],"declarations":[{"constant":false,"id":1364,"mutability":"mutable","name":"structHash","nameLocation":"9577:10:1","nodeType":"VariableDeclaration","scope":1378,"src":"9569:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1363,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9569:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1368,"initialValue":{"arguments":[{"id":1366,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"9599:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}],"id":1365,"name":"toEIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1344,"src":"9590:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Decoded_$780_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory) pure returns (bytes32)"}},"id":1367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9590:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9569:39:1"},{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9648:10:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"id":1373,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"9660:6:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1374,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"9668:10:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1370,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9631:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9635:12:1","memberName":"encodePacked","nodeType":"MemberAccess","src":"9631:16:1","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9631:48:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1369,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9621:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9621:59:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1351,"id":1377,"nodeType":"Return","src":"9614:66:1"}]},"implemented":true,"kind":"function","modifiers":[],"name":"hash","nameLocation":"9420:4:1","parameters":{"id":1348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1347,"mutability":"mutable","name":"_decoded","nameLocation":"9445:8:1","nodeType":"VariableDeclaration","scope":1379,"src":"9430:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1346,"nodeType":"UserDefinedTypeName","pathNode":{"id":1345,"name":"Decoded","nameLocations":["9430:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":780,"src":"9430:7:1"},"referencedDeclaration":780,"src":"9430:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"9424:33:1"},"returnParameters":{"id":1351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1350,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1379,"src":"9481:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1349,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9481:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9480:9:1"},"scope":1414,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1413,"nodeType":"FunctionDefinition","src":"9689:280:1","nodes":[],"body":{"id":1412,"nodeType":"Block","src":"9780:189:1","nodes":[],"statements":[{"assignments":[1390],"declarations":[{"constant":false,"id":1390,"mutability":"mutable","name":"domain","nameLocation":"9794:6:1","nodeType":"VariableDeclaration","scope":1412,"src":"9786:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1389,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9786:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1396,"initialValue":{"arguments":[{"expression":{"id":1392,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"9819:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1393,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9828:9:1","memberName":"noChainId","nodeType":"MemberAccess","referencedDeclaration":762,"src":"9819:18:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1394,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1384,"src":"9839:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1391,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"9803:15:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$_t_address_$returns$_t_bytes32_$","typeString":"function (bool,address) view returns (bytes32)"}},"id":1395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9803:44:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9786:61:1"},{"assignments":[1398],"declarations":[{"constant":false,"id":1398,"mutability":"mutable","name":"structHash","nameLocation":"9861:10:1","nodeType":"VariableDeclaration","scope":1412,"src":"9853:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1397,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9853:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1402,"initialValue":{"arguments":[{"id":1400,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1382,"src":"9883:8:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded memory"}],"id":1399,"name":"toEIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1344,"src":"9874:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Decoded_$780_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory) pure returns (bytes32)"}},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9874:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9853:39:1"},{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":1406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9932:10:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"id":1407,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"9944:6:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1408,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1398,"src":"9952:10:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1404,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9915:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9919:12:1","memberName":"encodePacked","nodeType":"MemberAccess","src":"9915:16:1","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9915:48:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1403,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9905:9:1","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9905:59:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1388,"id":1411,"nodeType":"Return","src":"9898:66:1"}]},"implemented":true,"kind":"function","modifiers":[],"name":"hashFor","nameLocation":"9698:7:1","parameters":{"id":1385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1382,"mutability":"mutable","name":"_decoded","nameLocation":"9721:8:1","nodeType":"VariableDeclaration","scope":1413,"src":"9706:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1381,"nodeType":"UserDefinedTypeName","pathNode":{"id":1380,"name":"Decoded","nameLocations":["9706:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":780,"src":"9706:7:1"},"referencedDeclaration":780,"src":"9706:7:1","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":1384,"mutability":"mutable","name":"_wallet","nameLocation":"9739:7:1","nodeType":"VariableDeclaration","scope":1413,"src":"9731:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1383,"name":"address","nodeType":"ElementaryTypeName","src":"9731:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9705:42:1"},"returnParameters":{"id":1388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1387,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1413,"src":"9771:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1386,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9771:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9770:9:1"},"scope":1414,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Payload","contractDependencies":[],"contractKind":"library","documentation":{"id":646,"nodeType":"StructuredDocumentation","src":"143:132:1","text":"@title Payload\n @author Agustin Aguilar, Michael Standen, William Hua\n @notice Library for encoding and decoding payloads"},"fullyImplemented":true,"linearizedBaseContracts":[1414],"name":"Payload","nameLocation":"283:7:1","scope":1415,"usedErrors":[651,654],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/IERC1271.sol":{"id":2,"ast":{"absolutePath":"src/modules/interfaces/IERC1271.sol","id":1447,"exportedSymbols":{"IERC1271":[1434],"IERC1271Data":[1446],"IERC1271_MAGIC_VALUE_BYTES":[1422],"IERC1271_MAGIC_VALUE_HASH":[1419]},"nodeType":"SourceUnit","src":"39:1764:2","nodes":[{"id":1416,"nodeType":"PragmaDirective","src":"39:24:2","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":1419,"nodeType":"VariableDeclaration","src":"65:54:2","nodes":[],"constant":true,"mutability":"constant","name":"IERC1271_MAGIC_VALUE_HASH","nameLocation":"81:25:2","scope":1447,"stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1417,"name":"bytes4","nodeType":"ElementaryTypeName","src":"65:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783136323662613765","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"109:10:2","typeDescriptions":{"typeIdentifier":"t_rational_371636862_by_1","typeString":"int_const 371636862"},"value":"0x1626ba7e"},"visibility":"internal"},{"id":1422,"nodeType":"VariableDeclaration","src":"121:55:2","nodes":[],"constant":true,"mutability":"constant","name":"IERC1271_MAGIC_VALUE_BYTES","nameLocation":"137:26:2","scope":1447,"stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1420,"name":"bytes4","nodeType":"ElementaryTypeName","src":"121:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783230633133623062","id":1421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"166:10:2","typeDescriptions":{"typeIdentifier":"t_rational_549534475_by_1","typeString":"int_const 549534475"},"value":"0x20c13b0b"},"visibility":"internal"},{"id":1434,"nodeType":"ContractDefinition","src":"233:734:2","nodes":[{"id":1433,"nodeType":"FunctionDefinition","src":"854:110:2","nodes":[],"documentation":{"id":1424,"nodeType":"StructuredDocumentation","src":"257:594:2","text":"@notice Verifies whether the provided signature is valid with respect to the provided hash\n @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\"isValidSignature(bytes32,bytes)\")\n > This function MAY modify Ethereum's state\n @param _hash keccak256 hash that was signed\n @param _signature Signature byte array associated with _data\n @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise"},"functionSelector":"1626ba7e","implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"863:16:2","parameters":{"id":1429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1426,"mutability":"mutable","name":"_hash","nameLocation":"888:5:2","nodeType":"VariableDeclaration","scope":1433,"src":"880:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1425,"name":"bytes32","nodeType":"ElementaryTypeName","src":"880:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1428,"mutability":"mutable","name":"_signature","nameLocation":"910:10:2","nodeType":"VariableDeclaration","scope":1433,"src":"895:25:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1427,"name":"bytes","nodeType":"ElementaryTypeName","src":"895:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"879:42:2"},"returnParameters":{"id":1432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1431,"mutability":"mutable","name":"magicValue","nameLocation":"952:10:2","nodeType":"VariableDeclaration","scope":1433,"src":"945:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1430,"name":"bytes4","nodeType":"ElementaryTypeName","src":"945:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"944:19:2"},"scope":1434,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1271","contractDependencies":[],"contractKind":"interface","documentation":{"id":1423,"nodeType":"StructuredDocumentation","src":"179:54:2","text":"@title IERC1271\n @notice Interface for ERC1271"},"fullyImplemented":false,"linearizedBaseContracts":[1434],"name":"IERC1271","nameLocation":"243:8:2","scope":1447,"usedErrors":[],"usedEvents":[]},{"id":1446,"nodeType":"ContractDefinition","src":"1069:733:2","nodes":[{"id":1445,"nodeType":"FunctionDefinition","src":"1682:117:2","nodes":[],"documentation":{"id":1436,"nodeType":"StructuredDocumentation","src":"1097:582:2","text":"@notice Verifies whether the provided signature is valid with respect to the provided hash\n @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n > This function MAY modify Ethereum's state\n @param _data Data that was signed\n @param _signature Signature byte array associated with _data\n @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise"},"functionSelector":"20c13b0b","implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"1691:16:2","parameters":{"id":1441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1438,"mutability":"mutable","name":"_data","nameLocation":"1723:5:2","nodeType":"VariableDeclaration","scope":1445,"src":"1708:20:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1437,"name":"bytes","nodeType":"ElementaryTypeName","src":"1708:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1440,"mutability":"mutable","name":"_signature","nameLocation":"1745:10:2","nodeType":"VariableDeclaration","scope":1445,"src":"1730:25:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1439,"name":"bytes","nodeType":"ElementaryTypeName","src":"1730:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1707:49:2"},"returnParameters":{"id":1444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1443,"mutability":"mutable","name":"magicValue","nameLocation":"1787:10:2","nodeType":"VariableDeclaration","scope":1445,"src":"1780:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1442,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1780:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1779:19:2"},"scope":1446,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1271Data","contractDependencies":[],"contractKind":"interface","documentation":{"id":1435,"nodeType":"StructuredDocumentation","src":"969:100:2","text":"@title IERC1271Data\n @notice Deprecated interface for ERC1271 using bytes instead of bytes32"},"fullyImplemented":false,"linearizedBaseContracts":[1446],"name":"IERC1271Data","nameLocation":"1079:12:2","scope":1447,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/ISapient.sol":{"id":3,"ast":{"absolutePath":"src/modules/interfaces/ISapient.sol","id":1476,"exportedSymbols":{"ISapient":[1463],"ISapientCompact":[1475],"Payload":[1414]},"nodeType":"SourceUnit","src":"39:1460:3","nodes":[{"id":1448,"nodeType":"PragmaDirective","src":"39:24:3","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":1450,"nodeType":"ImportDirective","src":"65:41:3","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"../Payload.sol","nameLocation":"-1:-1:-1","scope":1476,"sourceUnit":1415,"symbolAliases":[{"foreign":{"id":1449,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1414,"src":"74:7:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1463,"nodeType":"ContractDefinition","src":"384:413:3","nodes":[{"id":1462,"nodeType":"FunctionDefinition","src":"647:147:3","nodes":[],"documentation":{"id":1452,"nodeType":"StructuredDocumentation","src":"408:236:3","text":"@notice Recovers the image hash of a given signature\n @param payload The payload to recover the signature from\n @param signature The signature to recover the image hash from\n @return imageHash The recovered image hash"},"functionSelector":"13792a4a","implemented":false,"kind":"function","modifiers":[],"name":"recoverSapientSignature","nameLocation":"656:23:3","parameters":{"id":1458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1455,"mutability":"mutable","name":"payload","nameLocation":"710:7:3","nodeType":"VariableDeclaration","scope":1462,"src":"685:32:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_calldata_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1454,"nodeType":"UserDefinedTypeName","pathNode":{"id":1453,"name":"Payload.Decoded","nameLocations":["685:7:3","693:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":780,"src":"685:15:3"},"referencedDeclaration":780,"src":"685:15:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$780_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":1457,"mutability":"mutable","name":"signature","nameLocation":"738:9:3","nodeType":"VariableDeclaration","scope":1462,"src":"723:24:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1456,"name":"bytes","nodeType":"ElementaryTypeName","src":"723:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"679:72:3"},"returnParameters":{"id":1461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1460,"mutability":"mutable","name":"imageHash","nameLocation":"783:9:3","nodeType":"VariableDeclaration","scope":1462,"src":"775:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1459,"name":"bytes32","nodeType":"ElementaryTypeName","src":"775:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"774:19:3"},"scope":1463,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ISapient","contractDependencies":[],"contractKind":"interface","documentation":{"id":1451,"nodeType":"StructuredDocumentation","src":"108:276:3","text":"@title ISapient\n @author Agustin Aguilar, Michael Standen\n @notice Sapient signers take an explicit payload and return their own \"imageHash\" as result\n @dev The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration"},"fullyImplemented":false,"linearizedBaseContracts":[1463],"name":"ISapient","nameLocation":"394:8:3","scope":1476,"usedErrors":[],"usedEvents":[]},{"id":1475,"nodeType":"ContractDefinition","src":"1082:416:3","nodes":[{"id":1474,"nodeType":"FunctionDefinition","src":"1359:136:3","nodes":[],"documentation":{"id":1465,"nodeType":"StructuredDocumentation","src":"1113:243:3","text":"@notice Recovers the image hash of a given signature, using a hashed payload\n @param digest The digest of the payload\n @param signature The signature to recover the image hash from\n @return imageHash The recovered image hash"},"functionSelector":"898bd921","implemented":false,"kind":"function","modifiers":[],"name":"recoverSapientSignatureCompact","nameLocation":"1368:30:3","parameters":{"id":1470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1467,"mutability":"mutable","name":"digest","nameLocation":"1412:6:3","nodeType":"VariableDeclaration","scope":1474,"src":"1404:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1466,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1404:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1469,"mutability":"mutable","name":"signature","nameLocation":"1439:9:3","nodeType":"VariableDeclaration","scope":1474,"src":"1424:24:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1468,"name":"bytes","nodeType":"ElementaryTypeName","src":"1424:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1398:54:3"},"returnParameters":{"id":1473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1472,"mutability":"mutable","name":"imageHash","nameLocation":"1484:9:3","nodeType":"VariableDeclaration","scope":1474,"src":"1476:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1471,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1476:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1475:19:3"},"scope":1475,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ISapientCompact","contractDependencies":[],"contractKind":"interface","documentation":{"id":1464,"nodeType":"StructuredDocumentation","src":"799:283:3","text":"@title ISapientCompact\n @author Agustin Aguilar, Michael Standen\n @notice Sapient signers take a compacted payload and return their own \"imageHash\" as result\n @dev The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration"},"fullyImplemented":false,"linearizedBaseContracts":[1475],"name":"ISapientCompact","nameLocation":"1092:15:3","scope":1476,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/utils/LibBytes.sol":{"id":4,"ast":{"absolutePath":"src/utils/LibBytes.sol","id":1680,"exportedSymbols":{"LibBytes":[1679]},"nodeType":"SourceUnit","src":"39:3970:4","nodes":[{"id":1477,"nodeType":"PragmaDirective","src":"39:24:4","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":1679,"nodeType":"ContractDefinition","src":"432:3576:4","nodes":[{"id":1489,"nodeType":"FunctionDefinition","src":"454:225:4","nodes":[],"body":{"id":1488,"nodeType":"Block","src":"560:119:4","nodes":[],"statements":[{"AST":{"nativeSrc":"575:100:4","nodeType":"YulBlock","src":"575:100:4","statements":[{"nativeSrc":"583:38:4","nodeType":"YulVariableDeclaration","src":"583:38:4","value":{"arguments":[{"name":"_data.offset","nativeSrc":"608:12:4","nodeType":"YulIdentifier","src":"608:12:4"}],"functionName":{"name":"calldataload","nativeSrc":"595:12:4","nodeType":"YulIdentifier","src":"595:12:4"},"nativeSrc":"595:26:4","nodeType":"YulFunctionCall","src":"595:26:4"},"variables":[{"name":"word","nativeSrc":"587:4:4","nodeType":"YulTypedName","src":"587:4:4","type":""}]},{"nativeSrc":"628:19:4","nodeType":"YulAssignment","src":"628:19:4","value":{"arguments":[{"kind":"number","nativeSrc":"637:3:4","nodeType":"YulLiteral","src":"637:3:4","type":"","value":"248"},{"name":"word","nativeSrc":"642:4:4","nodeType":"YulIdentifier","src":"642:4:4"}],"functionName":{"name":"shr","nativeSrc":"633:3:4","nodeType":"YulIdentifier","src":"633:3:4"},"nativeSrc":"633:14:4","nodeType":"YulFunctionCall","src":"633:14:4"},"variableNames":[{"name":"a","nativeSrc":"628:1:4","nodeType":"YulIdentifier","src":"628:1:4"}]},{"nativeSrc":"654:15:4","nodeType":"YulAssignment","src":"654:15:4","value":{"kind":"number","nativeSrc":"668:1:4","nodeType":"YulLiteral","src":"668:1:4","type":"","value":"1"},"variableNames":[{"name":"newPointer","nativeSrc":"654:10:4","nodeType":"YulIdentifier","src":"654:10:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1480,"isOffset":true,"isSlot":false,"src":"608:12:4","suffix":"offset","valueSize":1},{"declaration":1483,"isOffset":false,"isSlot":false,"src":"628:1:4","valueSize":1},{"declaration":1485,"isOffset":false,"isSlot":false,"src":"654:10:4","valueSize":1}],"id":1487,"nodeType":"InlineAssembly","src":"566:109:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readFirstUint8","nameLocation":"463:14:4","parameters":{"id":1481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1480,"mutability":"mutable","name":"_data","nameLocation":"498:5:4","nodeType":"VariableDeclaration","scope":1489,"src":"483:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1479,"name":"bytes","nodeType":"ElementaryTypeName","src":"483:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"477:30:4"},"returnParameters":{"id":1486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1483,"mutability":"mutable","name":"a","nameLocation":"537:1:4","nodeType":"VariableDeclaration","scope":1489,"src":"531:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1482,"name":"uint8","nodeType":"ElementaryTypeName","src":"531:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1485,"mutability":"mutable","name":"newPointer","nameLocation":"548:10:4","nodeType":"VariableDeclaration","scope":1489,"src":"540:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1484,"name":"uint256","nodeType":"ElementaryTypeName","src":"540:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"530:29:4"},"scope":1679,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1502,"nodeType":"FunctionDefinition","src":"683:254:4","nodes":[],"body":{"id":1501,"nodeType":"Block","src":"792:145:4","nodes":[],"statements":[{"AST":{"nativeSrc":"807:126:4","nodeType":"YulBlock","src":"807:126:4","statements":[{"nativeSrc":"815:51:4","nodeType":"YulVariableDeclaration","src":"815:51:4","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"844:6:4","nodeType":"YulIdentifier","src":"844:6:4"},{"name":"_data.offset","nativeSrc":"852:12:4","nodeType":"YulIdentifier","src":"852:12:4"}],"functionName":{"name":"add","nativeSrc":"840:3:4","nodeType":"YulIdentifier","src":"840:3:4"},"nativeSrc":"840:25:4","nodeType":"YulFunctionCall","src":"840:25:4"}],"functionName":{"name":"calldataload","nativeSrc":"827:12:4","nodeType":"YulIdentifier","src":"827:12:4"},"nativeSrc":"827:39:4","nodeType":"YulFunctionCall","src":"827:39:4"},"variables":[{"name":"word","nativeSrc":"819:4:4","nodeType":"YulTypedName","src":"819:4:4","type":""}]},{"nativeSrc":"873:19:4","nodeType":"YulAssignment","src":"873:19:4","value":{"arguments":[{"kind":"number","nativeSrc":"882:3:4","nodeType":"YulLiteral","src":"882:3:4","type":"","value":"248"},{"name":"word","nativeSrc":"887:4:4","nodeType":"YulIdentifier","src":"887:4:4"}],"functionName":{"name":"shr","nativeSrc":"878:3:4","nodeType":"YulIdentifier","src":"878:3:4"},"nativeSrc":"878:14:4","nodeType":"YulFunctionCall","src":"878:14:4"},"variableNames":[{"name":"a","nativeSrc":"873:1:4","nodeType":"YulIdentifier","src":"873:1:4"}]},{"nativeSrc":"899:28:4","nodeType":"YulAssignment","src":"899:28:4","value":{"arguments":[{"name":"_index","nativeSrc":"917:6:4","nodeType":"YulIdentifier","src":"917:6:4"},{"kind":"number","nativeSrc":"925:1:4","nodeType":"YulLiteral","src":"925:1:4","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"913:3:4","nodeType":"YulIdentifier","src":"913:3:4"},"nativeSrc":"913:14:4","nodeType":"YulFunctionCall","src":"913:14:4"},"variableNames":[{"name":"newPointer","nativeSrc":"899:10:4","nodeType":"YulIdentifier","src":"899:10:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1491,"isOffset":true,"isSlot":false,"src":"852:12:4","suffix":"offset","valueSize":1},{"declaration":1493,"isOffset":false,"isSlot":false,"src":"844:6:4","valueSize":1},{"declaration":1493,"isOffset":false,"isSlot":false,"src":"917:6:4","valueSize":1},{"declaration":1496,"isOffset":false,"isSlot":false,"src":"873:1:4","valueSize":1},{"declaration":1498,"isOffset":false,"isSlot":false,"src":"899:10:4","valueSize":1}],"id":1500,"nodeType":"InlineAssembly","src":"798:135:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint8","nameLocation":"692:9:4","parameters":{"id":1494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1491,"mutability":"mutable","name":"_data","nameLocation":"717:5:4","nodeType":"VariableDeclaration","scope":1502,"src":"702:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1490,"name":"bytes","nodeType":"ElementaryTypeName","src":"702:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1493,"mutability":"mutable","name":"_index","nameLocation":"732:6:4","nodeType":"VariableDeclaration","scope":1502,"src":"724:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1492,"name":"uint256","nodeType":"ElementaryTypeName","src":"724:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"701:38:4"},"returnParameters":{"id":1499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1496,"mutability":"mutable","name":"a","nameLocation":"769:1:4","nodeType":"VariableDeclaration","scope":1502,"src":"763:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1495,"name":"uint8","nodeType":"ElementaryTypeName","src":"763:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1498,"mutability":"mutable","name":"newPointer","nameLocation":"780:10:4","nodeType":"VariableDeclaration","scope":1502,"src":"772:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1497,"name":"uint256","nodeType":"ElementaryTypeName","src":"772:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"762:29:4"},"scope":1679,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1515,"nodeType":"FunctionDefinition","src":"941:256:4","nodes":[],"body":{"id":1514,"nodeType":"Block","src":"1052:145:4","nodes":[],"statements":[{"AST":{"nativeSrc":"1067:126:4","nodeType":"YulBlock","src":"1067:126:4","statements":[{"nativeSrc":"1075:51:4","nodeType":"YulVariableDeclaration","src":"1075:51:4","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"1104:6:4","nodeType":"YulIdentifier","src":"1104:6:4"},{"name":"_data.offset","nativeSrc":"1112:12:4","nodeType":"YulIdentifier","src":"1112:12:4"}],"functionName":{"name":"add","nativeSrc":"1100:3:4","nodeType":"YulIdentifier","src":"1100:3:4"},"nativeSrc":"1100:25:4","nodeType":"YulFunctionCall","src":"1100:25:4"}],"functionName":{"name":"calldataload","nativeSrc":"1087:12:4","nodeType":"YulIdentifier","src":"1087:12:4"},"nativeSrc":"1087:39:4","nodeType":"YulFunctionCall","src":"1087:39:4"},"variables":[{"name":"word","nativeSrc":"1079:4:4","nodeType":"YulTypedName","src":"1079:4:4","type":""}]},{"nativeSrc":"1133:19:4","nodeType":"YulAssignment","src":"1133:19:4","value":{"arguments":[{"kind":"number","nativeSrc":"1142:3:4","nodeType":"YulLiteral","src":"1142:3:4","type":"","value":"240"},{"name":"word","nativeSrc":"1147:4:4","nodeType":"YulIdentifier","src":"1147:4:4"}],"functionName":{"name":"shr","nativeSrc":"1138:3:4","nodeType":"YulIdentifier","src":"1138:3:4"},"nativeSrc":"1138:14:4","nodeType":"YulFunctionCall","src":"1138:14:4"},"variableNames":[{"name":"a","nativeSrc":"1133:1:4","nodeType":"YulIdentifier","src":"1133:1:4"}]},{"nativeSrc":"1159:28:4","nodeType":"YulAssignment","src":"1159:28:4","value":{"arguments":[{"name":"_index","nativeSrc":"1177:6:4","nodeType":"YulIdentifier","src":"1177:6:4"},{"kind":"number","nativeSrc":"1185:1:4","nodeType":"YulLiteral","src":"1185:1:4","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"1173:3:4","nodeType":"YulIdentifier","src":"1173:3:4"},"nativeSrc":"1173:14:4","nodeType":"YulFunctionCall","src":"1173:14:4"},"variableNames":[{"name":"newPointer","nativeSrc":"1159:10:4","nodeType":"YulIdentifier","src":"1159:10:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1504,"isOffset":true,"isSlot":false,"src":"1112:12:4","suffix":"offset","valueSize":1},{"declaration":1506,"isOffset":false,"isSlot":false,"src":"1104:6:4","valueSize":1},{"declaration":1506,"isOffset":false,"isSlot":false,"src":"1177:6:4","valueSize":1},{"declaration":1509,"isOffset":false,"isSlot":false,"src":"1133:1:4","valueSize":1},{"declaration":1511,"isOffset":false,"isSlot":false,"src":"1159:10:4","valueSize":1}],"id":1513,"nodeType":"InlineAssembly","src":"1058:135:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint16","nameLocation":"950:10:4","parameters":{"id":1507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1504,"mutability":"mutable","name":"_data","nameLocation":"976:5:4","nodeType":"VariableDeclaration","scope":1515,"src":"961:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1503,"name":"bytes","nodeType":"ElementaryTypeName","src":"961:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1506,"mutability":"mutable","name":"_index","nameLocation":"991:6:4","nodeType":"VariableDeclaration","scope":1515,"src":"983:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1505,"name":"uint256","nodeType":"ElementaryTypeName","src":"983:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"960:38:4"},"returnParameters":{"id":1512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1509,"mutability":"mutable","name":"a","nameLocation":"1029:1:4","nodeType":"VariableDeclaration","scope":1515,"src":"1022:8:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1508,"name":"uint16","nodeType":"ElementaryTypeName","src":"1022:6:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":1511,"mutability":"mutable","name":"newPointer","nameLocation":"1040:10:4","nodeType":"VariableDeclaration","scope":1515,"src":"1032:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1510,"name":"uint256","nodeType":"ElementaryTypeName","src":"1032:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1021:30:4"},"scope":1679,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1528,"nodeType":"FunctionDefinition","src":"1201:256:4","nodes":[],"body":{"id":1527,"nodeType":"Block","src":"1312:145:4","nodes":[],"statements":[{"AST":{"nativeSrc":"1327:126:4","nodeType":"YulBlock","src":"1327:126:4","statements":[{"nativeSrc":"1335:51:4","nodeType":"YulVariableDeclaration","src":"1335:51:4","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"1364:6:4","nodeType":"YulIdentifier","src":"1364:6:4"},{"name":"_data.offset","nativeSrc":"1372:12:4","nodeType":"YulIdentifier","src":"1372:12:4"}],"functionName":{"name":"add","nativeSrc":"1360:3:4","nodeType":"YulIdentifier","src":"1360:3:4"},"nativeSrc":"1360:25:4","nodeType":"YulFunctionCall","src":"1360:25:4"}],"functionName":{"name":"calldataload","nativeSrc":"1347:12:4","nodeType":"YulIdentifier","src":"1347:12:4"},"nativeSrc":"1347:39:4","nodeType":"YulFunctionCall","src":"1347:39:4"},"variables":[{"name":"word","nativeSrc":"1339:4:4","nodeType":"YulTypedName","src":"1339:4:4","type":""}]},{"nativeSrc":"1393:19:4","nodeType":"YulAssignment","src":"1393:19:4","value":{"arguments":[{"kind":"number","nativeSrc":"1402:3:4","nodeType":"YulLiteral","src":"1402:3:4","type":"","value":"232"},{"name":"word","nativeSrc":"1407:4:4","nodeType":"YulIdentifier","src":"1407:4:4"}],"functionName":{"name":"shr","nativeSrc":"1398:3:4","nodeType":"YulIdentifier","src":"1398:3:4"},"nativeSrc":"1398:14:4","nodeType":"YulFunctionCall","src":"1398:14:4"},"variableNames":[{"name":"a","nativeSrc":"1393:1:4","nodeType":"YulIdentifier","src":"1393:1:4"}]},{"nativeSrc":"1419:28:4","nodeType":"YulAssignment","src":"1419:28:4","value":{"arguments":[{"name":"_index","nativeSrc":"1437:6:4","nodeType":"YulIdentifier","src":"1437:6:4"},{"kind":"number","nativeSrc":"1445:1:4","nodeType":"YulLiteral","src":"1445:1:4","type":"","value":"3"}],"functionName":{"name":"add","nativeSrc":"1433:3:4","nodeType":"YulIdentifier","src":"1433:3:4"},"nativeSrc":"1433:14:4","nodeType":"YulFunctionCall","src":"1433:14:4"},"variableNames":[{"name":"newPointer","nativeSrc":"1419:10:4","nodeType":"YulIdentifier","src":"1419:10:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1517,"isOffset":true,"isSlot":false,"src":"1372:12:4","suffix":"offset","valueSize":1},{"declaration":1519,"isOffset":false,"isSlot":false,"src":"1364:6:4","valueSize":1},{"declaration":1519,"isOffset":false,"isSlot":false,"src":"1437:6:4","valueSize":1},{"declaration":1522,"isOffset":false,"isSlot":false,"src":"1393:1:4","valueSize":1},{"declaration":1524,"isOffset":false,"isSlot":false,"src":"1419:10:4","valueSize":1}],"id":1526,"nodeType":"InlineAssembly","src":"1318:135:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint24","nameLocation":"1210:10:4","parameters":{"id":1520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1517,"mutability":"mutable","name":"_data","nameLocation":"1236:5:4","nodeType":"VariableDeclaration","scope":1528,"src":"1221:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1516,"name":"bytes","nodeType":"ElementaryTypeName","src":"1221:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1519,"mutability":"mutable","name":"_index","nameLocation":"1251:6:4","nodeType":"VariableDeclaration","scope":1528,"src":"1243:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1518,"name":"uint256","nodeType":"ElementaryTypeName","src":"1243:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:38:4"},"returnParameters":{"id":1525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1522,"mutability":"mutable","name":"a","nameLocation":"1289:1:4","nodeType":"VariableDeclaration","scope":1528,"src":"1282:8:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":1521,"name":"uint24","nodeType":"ElementaryTypeName","src":"1282:6:4","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":1524,"mutability":"mutable","name":"newPointer","nameLocation":"1300:10:4","nodeType":"VariableDeclaration","scope":1528,"src":"1292:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1523,"name":"uint256","nodeType":"ElementaryTypeName","src":"1292:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1281:30:4"},"scope":1679,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1541,"nodeType":"FunctionDefinition","src":"1461:256:4","nodes":[],"body":{"id":1540,"nodeType":"Block","src":"1572:145:4","nodes":[],"statements":[{"AST":{"nativeSrc":"1587:126:4","nodeType":"YulBlock","src":"1587:126:4","statements":[{"nativeSrc":"1595:51:4","nodeType":"YulVariableDeclaration","src":"1595:51:4","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"1624:6:4","nodeType":"YulIdentifier","src":"1624:6:4"},{"name":"_data.offset","nativeSrc":"1632:12:4","nodeType":"YulIdentifier","src":"1632:12:4"}],"functionName":{"name":"add","nativeSrc":"1620:3:4","nodeType":"YulIdentifier","src":"1620:3:4"},"nativeSrc":"1620:25:4","nodeType":"YulFunctionCall","src":"1620:25:4"}],"functionName":{"name":"calldataload","nativeSrc":"1607:12:4","nodeType":"YulIdentifier","src":"1607:12:4"},"nativeSrc":"1607:39:4","nodeType":"YulFunctionCall","src":"1607:39:4"},"variables":[{"name":"word","nativeSrc":"1599:4:4","nodeType":"YulTypedName","src":"1599:4:4","type":""}]},{"nativeSrc":"1653:19:4","nodeType":"YulAssignment","src":"1653:19:4","value":{"arguments":[{"kind":"number","nativeSrc":"1662:3:4","nodeType":"YulLiteral","src":"1662:3:4","type":"","value":"192"},{"name":"word","nativeSrc":"1667:4:4","nodeType":"YulIdentifier","src":"1667:4:4"}],"functionName":{"name":"shr","nativeSrc":"1658:3:4","nodeType":"YulIdentifier","src":"1658:3:4"},"nativeSrc":"1658:14:4","nodeType":"YulFunctionCall","src":"1658:14:4"},"variableNames":[{"name":"a","nativeSrc":"1653:1:4","nodeType":"YulIdentifier","src":"1653:1:4"}]},{"nativeSrc":"1679:28:4","nodeType":"YulAssignment","src":"1679:28:4","value":{"arguments":[{"name":"_index","nativeSrc":"1697:6:4","nodeType":"YulIdentifier","src":"1697:6:4"},{"kind":"number","nativeSrc":"1705:1:4","nodeType":"YulLiteral","src":"1705:1:4","type":"","value":"8"}],"functionName":{"name":"add","nativeSrc":"1693:3:4","nodeType":"YulIdentifier","src":"1693:3:4"},"nativeSrc":"1693:14:4","nodeType":"YulFunctionCall","src":"1693:14:4"},"variableNames":[{"name":"newPointer","nativeSrc":"1679:10:4","nodeType":"YulIdentifier","src":"1679:10:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1530,"isOffset":true,"isSlot":false,"src":"1632:12:4","suffix":"offset","valueSize":1},{"declaration":1532,"isOffset":false,"isSlot":false,"src":"1624:6:4","valueSize":1},{"declaration":1532,"isOffset":false,"isSlot":false,"src":"1697:6:4","valueSize":1},{"declaration":1535,"isOffset":false,"isSlot":false,"src":"1653:1:4","valueSize":1},{"declaration":1537,"isOffset":false,"isSlot":false,"src":"1679:10:4","valueSize":1}],"id":1539,"nodeType":"InlineAssembly","src":"1578:135:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint64","nameLocation":"1470:10:4","parameters":{"id":1533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1530,"mutability":"mutable","name":"_data","nameLocation":"1496:5:4","nodeType":"VariableDeclaration","scope":1541,"src":"1481:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1529,"name":"bytes","nodeType":"ElementaryTypeName","src":"1481:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1532,"mutability":"mutable","name":"_index","nameLocation":"1511:6:4","nodeType":"VariableDeclaration","scope":1541,"src":"1503:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1531,"name":"uint256","nodeType":"ElementaryTypeName","src":"1503:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1480:38:4"},"returnParameters":{"id":1538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1535,"mutability":"mutable","name":"a","nameLocation":"1549:1:4","nodeType":"VariableDeclaration","scope":1541,"src":"1542:8:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1534,"name":"uint64","nodeType":"ElementaryTypeName","src":"1542:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1537,"mutability":"mutable","name":"newPointer","nameLocation":"1560:10:4","nodeType":"VariableDeclaration","scope":1541,"src":"1552:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1536,"name":"uint256","nodeType":"ElementaryTypeName","src":"1552:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1541:30:4"},"scope":1679,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1554,"nodeType":"FunctionDefinition","src":"1721:258:4","nodes":[],"body":{"id":1553,"nodeType":"Block","src":"1834:145:4","nodes":[],"statements":[{"AST":{"nativeSrc":"1849:126:4","nodeType":"YulBlock","src":"1849:126:4","statements":[{"nativeSrc":"1857:51:4","nodeType":"YulVariableDeclaration","src":"1857:51:4","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"1886:6:4","nodeType":"YulIdentifier","src":"1886:6:4"},{"name":"_data.offset","nativeSrc":"1894:12:4","nodeType":"YulIdentifier","src":"1894:12:4"}],"functionName":{"name":"add","nativeSrc":"1882:3:4","nodeType":"YulIdentifier","src":"1882:3:4"},"nativeSrc":"1882:25:4","nodeType":"YulFunctionCall","src":"1882:25:4"}],"functionName":{"name":"calldataload","nativeSrc":"1869:12:4","nodeType":"YulIdentifier","src":"1869:12:4"},"nativeSrc":"1869:39:4","nodeType":"YulFunctionCall","src":"1869:39:4"},"variables":[{"name":"word","nativeSrc":"1861:4:4","nodeType":"YulTypedName","src":"1861:4:4","type":""}]},{"nativeSrc":"1915:18:4","nodeType":"YulAssignment","src":"1915:18:4","value":{"arguments":[{"kind":"number","nativeSrc":"1924:2:4","nodeType":"YulLiteral","src":"1924:2:4","type":"","value":"96"},{"name":"word","nativeSrc":"1928:4:4","nodeType":"YulIdentifier","src":"1928:4:4"}],"functionName":{"name":"shr","nativeSrc":"1920:3:4","nodeType":"YulIdentifier","src":"1920:3:4"},"nativeSrc":"1920:13:4","nodeType":"YulFunctionCall","src":"1920:13:4"},"variableNames":[{"name":"a","nativeSrc":"1915:1:4","nodeType":"YulIdentifier","src":"1915:1:4"}]},{"nativeSrc":"1940:29:4","nodeType":"YulAssignment","src":"1940:29:4","value":{"arguments":[{"name":"_index","nativeSrc":"1958:6:4","nodeType":"YulIdentifier","src":"1958:6:4"},{"kind":"number","nativeSrc":"1966:2:4","nodeType":"YulLiteral","src":"1966:2:4","type":"","value":"20"}],"functionName":{"name":"add","nativeSrc":"1954:3:4","nodeType":"YulIdentifier","src":"1954:3:4"},"nativeSrc":"1954:15:4","nodeType":"YulFunctionCall","src":"1954:15:4"},"variableNames":[{"name":"newPointer","nativeSrc":"1940:10:4","nodeType":"YulIdentifier","src":"1940:10:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1543,"isOffset":true,"isSlot":false,"src":"1894:12:4","suffix":"offset","valueSize":1},{"declaration":1545,"isOffset":false,"isSlot":false,"src":"1886:6:4","valueSize":1},{"declaration":1545,"isOffset":false,"isSlot":false,"src":"1958:6:4","valueSize":1},{"declaration":1548,"isOffset":false,"isSlot":false,"src":"1915:1:4","valueSize":1},{"declaration":1550,"isOffset":false,"isSlot":false,"src":"1940:10:4","valueSize":1}],"id":1552,"nodeType":"InlineAssembly","src":"1840:135:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint160","nameLocation":"1730:11:4","parameters":{"id":1546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1543,"mutability":"mutable","name":"_data","nameLocation":"1757:5:4","nodeType":"VariableDeclaration","scope":1554,"src":"1742:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1542,"name":"bytes","nodeType":"ElementaryTypeName","src":"1742:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1545,"mutability":"mutable","name":"_index","nameLocation":"1772:6:4","nodeType":"VariableDeclaration","scope":1554,"src":"1764:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1544,"name":"uint256","nodeType":"ElementaryTypeName","src":"1764:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1741:38:4"},"returnParameters":{"id":1551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"mutability":"mutable","name":"a","nameLocation":"1811:1:4","nodeType":"VariableDeclaration","scope":1554,"src":"1803:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":1547,"name":"uint160","nodeType":"ElementaryTypeName","src":"1803:7:4","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":1550,"mutability":"mutable","name":"newPointer","nameLocation":"1822:10:4","nodeType":"VariableDeclaration","scope":1554,"src":"1814:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1549,"name":"uint256","nodeType":"ElementaryTypeName","src":"1814:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1802:31:4"},"scope":1679,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1567,"nodeType":"FunctionDefinition","src":"1983:226:4","nodes":[],"body":{"id":1566,"nodeType":"Block","src":"2096:113:4","nodes":[],"statements":[{"AST":{"nativeSrc":"2111:94:4","nodeType":"YulBlock","src":"2111:94:4","statements":[{"nativeSrc":"2119:44:4","nodeType":"YulAssignment","src":"2119:44:4","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"2141:6:4","nodeType":"YulIdentifier","src":"2141:6:4"},{"name":"_data.offset","nativeSrc":"2149:12:4","nodeType":"YulIdentifier","src":"2149:12:4"}],"functionName":{"name":"add","nativeSrc":"2137:3:4","nodeType":"YulIdentifier","src":"2137:3:4"},"nativeSrc":"2137:25:4","nodeType":"YulFunctionCall","src":"2137:25:4"}],"functionName":{"name":"calldataload","nativeSrc":"2124:12:4","nodeType":"YulIdentifier","src":"2124:12:4"},"nativeSrc":"2124:39:4","nodeType":"YulFunctionCall","src":"2124:39:4"},"variableNames":[{"name":"a","nativeSrc":"2119:1:4","nodeType":"YulIdentifier","src":"2119:1:4"}]},{"nativeSrc":"2170:29:4","nodeType":"YulAssignment","src":"2170:29:4","value":{"arguments":[{"name":"_index","nativeSrc":"2188:6:4","nodeType":"YulIdentifier","src":"2188:6:4"},{"kind":"number","nativeSrc":"2196:2:4","nodeType":"YulLiteral","src":"2196:2:4","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2184:3:4","nodeType":"YulIdentifier","src":"2184:3:4"},"nativeSrc":"2184:15:4","nodeType":"YulFunctionCall","src":"2184:15:4"},"variableNames":[{"name":"newPointer","nativeSrc":"2170:10:4","nodeType":"YulIdentifier","src":"2170:10:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1556,"isOffset":true,"isSlot":false,"src":"2149:12:4","suffix":"offset","valueSize":1},{"declaration":1558,"isOffset":false,"isSlot":false,"src":"2141:6:4","valueSize":1},{"declaration":1558,"isOffset":false,"isSlot":false,"src":"2188:6:4","valueSize":1},{"declaration":1561,"isOffset":false,"isSlot":false,"src":"2119:1:4","valueSize":1},{"declaration":1563,"isOffset":false,"isSlot":false,"src":"2170:10:4","valueSize":1}],"id":1565,"nodeType":"InlineAssembly","src":"2102:103:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint256","nameLocation":"1992:11:4","parameters":{"id":1559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1556,"mutability":"mutable","name":"_data","nameLocation":"2019:5:4","nodeType":"VariableDeclaration","scope":1567,"src":"2004:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1555,"name":"bytes","nodeType":"ElementaryTypeName","src":"2004:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1558,"mutability":"mutable","name":"_index","nameLocation":"2034:6:4","nodeType":"VariableDeclaration","scope":1567,"src":"2026:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1557,"name":"uint256","nodeType":"ElementaryTypeName","src":"2026:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2003:38:4"},"returnParameters":{"id":1564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1561,"mutability":"mutable","name":"a","nameLocation":"2073:1:4","nodeType":"VariableDeclaration","scope":1567,"src":"2065:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1560,"name":"uint256","nodeType":"ElementaryTypeName","src":"2065:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1563,"mutability":"mutable","name":"newPointer","nameLocation":"2084:10:4","nodeType":"VariableDeclaration","scope":1567,"src":"2076:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1562,"name":"uint256","nodeType":"ElementaryTypeName","src":"2076:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2064:31:4"},"scope":1679,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1582,"nodeType":"FunctionDefinition","src":"2213:380:4","nodes":[],"body":{"id":1581,"nodeType":"Block","src":"2357:236:4","nodes":[],"statements":[{"AST":{"nativeSrc":"2372:217:4","nodeType":"YulBlock","src":"2372:217:4","statements":[{"nativeSrc":"2380:51:4","nodeType":"YulVariableDeclaration","src":"2380:51:4","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"2409:6:4","nodeType":"YulIdentifier","src":"2409:6:4"},{"name":"_data.offset","nativeSrc":"2417:12:4","nodeType":"YulIdentifier","src":"2417:12:4"}],"functionName":{"name":"add","nativeSrc":"2405:3:4","nodeType":"YulIdentifier","src":"2405:3:4"},"nativeSrc":"2405:25:4","nodeType":"YulFunctionCall","src":"2405:25:4"}],"functionName":{"name":"calldataload","nativeSrc":"2392:12:4","nodeType":"YulIdentifier","src":"2392:12:4"},"nativeSrc":"2392:39:4","nodeType":"YulFunctionCall","src":"2392:39:4"},"variables":[{"name":"word","nativeSrc":"2384:4:4","nodeType":"YulTypedName","src":"2384:4:4","type":""}]},{"nativeSrc":"2438:38:4","nodeType":"YulVariableDeclaration","src":"2438:38:4","value":{"arguments":[{"kind":"number","nativeSrc":"2455:3:4","nodeType":"YulLiteral","src":"2455:3:4","type":"","value":"256"},{"arguments":[{"name":"_length","nativeSrc":"2464:7:4","nodeType":"YulIdentifier","src":"2464:7:4"},{"kind":"number","nativeSrc":"2473:1:4","nodeType":"YulLiteral","src":"2473:1:4","type":"","value":"8"}],"functionName":{"name":"mul","nativeSrc":"2460:3:4","nodeType":"YulIdentifier","src":"2460:3:4"},"nativeSrc":"2460:15:4","nodeType":"YulFunctionCall","src":"2460:15:4"}],"functionName":{"name":"sub","nativeSrc":"2451:3:4","nodeType":"YulIdentifier","src":"2451:3:4"},"nativeSrc":"2451:25:4","nodeType":"YulFunctionCall","src":"2451:25:4"},"variables":[{"name":"shift","nativeSrc":"2442:5:4","nodeType":"YulTypedName","src":"2442:5:4","type":""}]},{"nativeSrc":"2483:59:4","nodeType":"YulAssignment","src":"2483:59:4","value":{"arguments":[{"arguments":[{"name":"shift","nativeSrc":"2496:5:4","nodeType":"YulIdentifier","src":"2496:5:4"},{"name":"word","nativeSrc":"2503:4:4","nodeType":"YulIdentifier","src":"2503:4:4"}],"functionName":{"name":"shr","nativeSrc":"2492:3:4","nodeType":"YulIdentifier","src":"2492:3:4"},"nativeSrc":"2492:16:4","nodeType":"YulFunctionCall","src":"2492:16:4"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2522:1:4","nodeType":"YulLiteral","src":"2522:1:4","type":"","value":"8"},{"name":"_length","nativeSrc":"2525:7:4","nodeType":"YulIdentifier","src":"2525:7:4"}],"functionName":{"name":"mul","nativeSrc":"2518:3:4","nodeType":"YulIdentifier","src":"2518:3:4"},"nativeSrc":"2518:15:4","nodeType":"YulFunctionCall","src":"2518:15:4"},{"kind":"number","nativeSrc":"2535:1:4","nodeType":"YulLiteral","src":"2535:1:4","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2514:3:4","nodeType":"YulIdentifier","src":"2514:3:4"},"nativeSrc":"2514:23:4","nodeType":"YulFunctionCall","src":"2514:23:4"},{"kind":"number","nativeSrc":"2539:1:4","nodeType":"YulLiteral","src":"2539:1:4","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2510:3:4","nodeType":"YulIdentifier","src":"2510:3:4"},"nativeSrc":"2510:31:4","nodeType":"YulFunctionCall","src":"2510:31:4"}],"functionName":{"name":"and","nativeSrc":"2488:3:4","nodeType":"YulIdentifier","src":"2488:3:4"},"nativeSrc":"2488:54:4","nodeType":"YulFunctionCall","src":"2488:54:4"},"variableNames":[{"name":"a","nativeSrc":"2483:1:4","nodeType":"YulIdentifier","src":"2483:1:4"}]},{"nativeSrc":"2549:34:4","nodeType":"YulAssignment","src":"2549:34:4","value":{"arguments":[{"name":"_index","nativeSrc":"2567:6:4","nodeType":"YulIdentifier","src":"2567:6:4"},{"name":"_length","nativeSrc":"2575:7:4","nodeType":"YulIdentifier","src":"2575:7:4"}],"functionName":{"name":"add","nativeSrc":"2563:3:4","nodeType":"YulIdentifier","src":"2563:3:4"},"nativeSrc":"2563:20:4","nodeType":"YulFunctionCall","src":"2563:20:4"},"variableNames":[{"name":"newPointer","nativeSrc":"2549:10:4","nodeType":"YulIdentifier","src":"2549:10:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1569,"isOffset":true,"isSlot":false,"src":"2417:12:4","suffix":"offset","valueSize":1},{"declaration":1571,"isOffset":false,"isSlot":false,"src":"2409:6:4","valueSize":1},{"declaration":1571,"isOffset":false,"isSlot":false,"src":"2567:6:4","valueSize":1},{"declaration":1573,"isOffset":false,"isSlot":false,"src":"2464:7:4","valueSize":1},{"declaration":1573,"isOffset":false,"isSlot":false,"src":"2525:7:4","valueSize":1},{"declaration":1573,"isOffset":false,"isSlot":false,"src":"2575:7:4","valueSize":1},{"declaration":1576,"isOffset":false,"isSlot":false,"src":"2483:1:4","valueSize":1},{"declaration":1578,"isOffset":false,"isSlot":false,"src":"2549:10:4","valueSize":1}],"id":1580,"nodeType":"InlineAssembly","src":"2363:226:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUintX","nameLocation":"2222:9:4","parameters":{"id":1574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1569,"mutability":"mutable","name":"_data","nameLocation":"2252:5:4","nodeType":"VariableDeclaration","scope":1582,"src":"2237:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1568,"name":"bytes","nodeType":"ElementaryTypeName","src":"2237:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1571,"mutability":"mutable","name":"_index","nameLocation":"2271:6:4","nodeType":"VariableDeclaration","scope":1582,"src":"2263:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1570,"name":"uint256","nodeType":"ElementaryTypeName","src":"2263:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1573,"mutability":"mutable","name":"_length","nameLocation":"2291:7:4","nodeType":"VariableDeclaration","scope":1582,"src":"2283:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1572,"name":"uint256","nodeType":"ElementaryTypeName","src":"2283:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2231:71:4"},"returnParameters":{"id":1579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1576,"mutability":"mutable","name":"a","nameLocation":"2334:1:4","nodeType":"VariableDeclaration","scope":1582,"src":"2326:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1575,"name":"uint256","nodeType":"ElementaryTypeName","src":"2326:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1578,"mutability":"mutable","name":"newPointer","nameLocation":"2345:10:4","nodeType":"VariableDeclaration","scope":1582,"src":"2337:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1577,"name":"uint256","nodeType":"ElementaryTypeName","src":"2337:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:31:4"},"scope":1679,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1595,"nodeType":"FunctionDefinition","src":"2597:325:4","nodes":[],"body":{"id":1594,"nodeType":"Block","src":"2710:212:4","nodes":[],"statements":[{"AST":{"nativeSrc":"2725:193:4","nodeType":"YulBlock","src":"2725:193:4","statements":[{"nativeSrc":"2733:53:4","nodeType":"YulVariableDeclaration","src":"2733:53:4","value":{"arguments":[{"arguments":[{"name":"_pointer","nativeSrc":"2762:8:4","nodeType":"YulIdentifier","src":"2762:8:4"},{"name":"_data.offset","nativeSrc":"2772:12:4","nodeType":"YulIdentifier","src":"2772:12:4"}],"functionName":{"name":"add","nativeSrc":"2758:3:4","nodeType":"YulIdentifier","src":"2758:3:4"},"nativeSrc":"2758:27:4","nodeType":"YulFunctionCall","src":"2758:27:4"}],"functionName":{"name":"calldataload","nativeSrc":"2745:12:4","nodeType":"YulIdentifier","src":"2745:12:4"},"nativeSrc":"2745:41:4","nodeType":"YulFunctionCall","src":"2745:41:4"},"variables":[{"name":"word","nativeSrc":"2737:4:4","nodeType":"YulTypedName","src":"2737:4:4","type":""}]},{"nativeSrc":"2793:82:4","nodeType":"YulAssignment","src":"2793:82:4","value":{"arguments":[{"name":"word","nativeSrc":"2802:4:4","nodeType":"YulIdentifier","src":"2802:4:4"},{"kind":"number","nativeSrc":"2808:66:4","nodeType":"YulLiteral","src":"2808:66:4","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"2798:3:4","nodeType":"YulIdentifier","src":"2798:3:4"},"nativeSrc":"2798:77:4","nodeType":"YulFunctionCall","src":"2798:77:4"},"variableNames":[{"name":"a","nativeSrc":"2793:1:4","nodeType":"YulIdentifier","src":"2793:1:4"}]},{"nativeSrc":"2882:30:4","nodeType":"YulAssignment","src":"2882:30:4","value":{"arguments":[{"name":"_pointer","nativeSrc":"2900:8:4","nodeType":"YulIdentifier","src":"2900:8:4"},{"kind":"number","nativeSrc":"2910:1:4","nodeType":"YulLiteral","src":"2910:1:4","type":"","value":"4"}],"functionName":{"name":"add","nativeSrc":"2896:3:4","nodeType":"YulIdentifier","src":"2896:3:4"},"nativeSrc":"2896:16:4","nodeType":"YulFunctionCall","src":"2896:16:4"},"variableNames":[{"name":"newPointer","nativeSrc":"2882:10:4","nodeType":"YulIdentifier","src":"2882:10:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1584,"isOffset":true,"isSlot":false,"src":"2772:12:4","suffix":"offset","valueSize":1},{"declaration":1586,"isOffset":false,"isSlot":false,"src":"2762:8:4","valueSize":1},{"declaration":1586,"isOffset":false,"isSlot":false,"src":"2900:8:4","valueSize":1},{"declaration":1589,"isOffset":false,"isSlot":false,"src":"2793:1:4","valueSize":1},{"declaration":1591,"isOffset":false,"isSlot":false,"src":"2882:10:4","valueSize":1}],"id":1593,"nodeType":"InlineAssembly","src":"2716:202:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readBytes4","nameLocation":"2606:10:4","parameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1584,"mutability":"mutable","name":"_data","nameLocation":"2632:5:4","nodeType":"VariableDeclaration","scope":1595,"src":"2617:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1583,"name":"bytes","nodeType":"ElementaryTypeName","src":"2617:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1586,"mutability":"mutable","name":"_pointer","nameLocation":"2647:8:4","nodeType":"VariableDeclaration","scope":1595,"src":"2639:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1585,"name":"uint256","nodeType":"ElementaryTypeName","src":"2639:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2616:40:4"},"returnParameters":{"id":1592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1589,"mutability":"mutable","name":"a","nameLocation":"2687:1:4","nodeType":"VariableDeclaration","scope":1595,"src":"2680:8:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1588,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2680:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":1591,"mutability":"mutable","name":"newPointer","nameLocation":"2698:10:4","nodeType":"VariableDeclaration","scope":1595,"src":"2690:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1590,"name":"uint256","nodeType":"ElementaryTypeName","src":"2690:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2679:30:4"},"scope":1679,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1608,"nodeType":"FunctionDefinition","src":"2926:232:4","nodes":[],"body":{"id":1607,"nodeType":"Block","src":"3041:117:4","nodes":[],"statements":[{"AST":{"nativeSrc":"3056:98:4","nodeType":"YulBlock","src":"3056:98:4","statements":[{"nativeSrc":"3064:46:4","nodeType":"YulAssignment","src":"3064:46:4","value":{"arguments":[{"arguments":[{"name":"_pointer","nativeSrc":"3086:8:4","nodeType":"YulIdentifier","src":"3086:8:4"},{"name":"_data.offset","nativeSrc":"3096:12:4","nodeType":"YulIdentifier","src":"3096:12:4"}],"functionName":{"name":"add","nativeSrc":"3082:3:4","nodeType":"YulIdentifier","src":"3082:3:4"},"nativeSrc":"3082:27:4","nodeType":"YulFunctionCall","src":"3082:27:4"}],"functionName":{"name":"calldataload","nativeSrc":"3069:12:4","nodeType":"YulIdentifier","src":"3069:12:4"},"nativeSrc":"3069:41:4","nodeType":"YulFunctionCall","src":"3069:41:4"},"variableNames":[{"name":"a","nativeSrc":"3064:1:4","nodeType":"YulIdentifier","src":"3064:1:4"}]},{"nativeSrc":"3117:31:4","nodeType":"YulAssignment","src":"3117:31:4","value":{"arguments":[{"name":"_pointer","nativeSrc":"3135:8:4","nodeType":"YulIdentifier","src":"3135:8:4"},{"kind":"number","nativeSrc":"3145:2:4","nodeType":"YulLiteral","src":"3145:2:4","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3131:3:4","nodeType":"YulIdentifier","src":"3131:3:4"},"nativeSrc":"3131:17:4","nodeType":"YulFunctionCall","src":"3131:17:4"},"variableNames":[{"name":"newPointer","nativeSrc":"3117:10:4","nodeType":"YulIdentifier","src":"3117:10:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1597,"isOffset":true,"isSlot":false,"src":"3096:12:4","suffix":"offset","valueSize":1},{"declaration":1599,"isOffset":false,"isSlot":false,"src":"3086:8:4","valueSize":1},{"declaration":1599,"isOffset":false,"isSlot":false,"src":"3135:8:4","valueSize":1},{"declaration":1602,"isOffset":false,"isSlot":false,"src":"3064:1:4","valueSize":1},{"declaration":1604,"isOffset":false,"isSlot":false,"src":"3117:10:4","valueSize":1}],"id":1606,"nodeType":"InlineAssembly","src":"3047:107:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readBytes32","nameLocation":"2935:11:4","parameters":{"id":1600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"_data","nameLocation":"2962:5:4","nodeType":"VariableDeclaration","scope":1608,"src":"2947:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1596,"name":"bytes","nodeType":"ElementaryTypeName","src":"2947:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1599,"mutability":"mutable","name":"_pointer","nameLocation":"2977:8:4","nodeType":"VariableDeclaration","scope":1608,"src":"2969:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1598,"name":"uint256","nodeType":"ElementaryTypeName","src":"2969:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2946:40:4"},"returnParameters":{"id":1605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1602,"mutability":"mutable","name":"a","nameLocation":"3018:1:4","nodeType":"VariableDeclaration","scope":1608,"src":"3010:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3010:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1604,"mutability":"mutable","name":"newPointer","nameLocation":"3029:10:4","nodeType":"VariableDeclaration","scope":1608,"src":"3021:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1603,"name":"uint256","nodeType":"ElementaryTypeName","src":"3021:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3009:31:4"},"scope":1679,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1621,"nodeType":"FunctionDefinition","src":"3162:307:4","nodes":[],"body":{"id":1620,"nodeType":"Block","src":"3275:194:4","nodes":[],"statements":[{"AST":{"nativeSrc":"3290:175:4","nodeType":"YulBlock","src":"3290:175:4","statements":[{"nativeSrc":"3298:51:4","nodeType":"YulVariableDeclaration","src":"3298:51:4","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"3327:6:4","nodeType":"YulIdentifier","src":"3327:6:4"},{"name":"_data.offset","nativeSrc":"3335:12:4","nodeType":"YulIdentifier","src":"3335:12:4"}],"functionName":{"name":"add","nativeSrc":"3323:3:4","nodeType":"YulIdentifier","src":"3323:3:4"},"nativeSrc":"3323:25:4","nodeType":"YulFunctionCall","src":"3323:25:4"}],"functionName":{"name":"calldataload","nativeSrc":"3310:12:4","nodeType":"YulIdentifier","src":"3310:12:4"},"nativeSrc":"3310:39:4","nodeType":"YulFunctionCall","src":"3310:39:4"},"variables":[{"name":"word","nativeSrc":"3302:4:4","nodeType":"YulTypedName","src":"3302:4:4","type":""}]},{"nativeSrc":"3356:67:4","nodeType":"YulAssignment","src":"3356:67:4","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3369:2:4","nodeType":"YulLiteral","src":"3369:2:4","type":"","value":"96"},{"name":"word","nativeSrc":"3373:4:4","nodeType":"YulIdentifier","src":"3373:4:4"}],"functionName":{"name":"shr","nativeSrc":"3365:3:4","nodeType":"YulIdentifier","src":"3365:3:4"},"nativeSrc":"3365:13:4","nodeType":"YulFunctionCall","src":"3365:13:4"},{"kind":"number","nativeSrc":"3380:42:4","nodeType":"YulLiteral","src":"3380:42:4","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"3361:3:4","nodeType":"YulIdentifier","src":"3361:3:4"},"nativeSrc":"3361:62:4","nodeType":"YulFunctionCall","src":"3361:62:4"},"variableNames":[{"name":"a","nativeSrc":"3356:1:4","nodeType":"YulIdentifier","src":"3356:1:4"}]},{"nativeSrc":"3430:29:4","nodeType":"YulAssignment","src":"3430:29:4","value":{"arguments":[{"name":"_index","nativeSrc":"3448:6:4","nodeType":"YulIdentifier","src":"3448:6:4"},{"kind":"number","nativeSrc":"3456:2:4","nodeType":"YulLiteral","src":"3456:2:4","type":"","value":"20"}],"functionName":{"name":"add","nativeSrc":"3444:3:4","nodeType":"YulIdentifier","src":"3444:3:4"},"nativeSrc":"3444:15:4","nodeType":"YulFunctionCall","src":"3444:15:4"},"variableNames":[{"name":"newPointer","nativeSrc":"3430:10:4","nodeType":"YulIdentifier","src":"3430:10:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1610,"isOffset":true,"isSlot":false,"src":"3335:12:4","suffix":"offset","valueSize":1},{"declaration":1612,"isOffset":false,"isSlot":false,"src":"3327:6:4","valueSize":1},{"declaration":1612,"isOffset":false,"isSlot":false,"src":"3448:6:4","valueSize":1},{"declaration":1615,"isOffset":false,"isSlot":false,"src":"3356:1:4","valueSize":1},{"declaration":1617,"isOffset":false,"isSlot":false,"src":"3430:10:4","valueSize":1}],"id":1619,"nodeType":"InlineAssembly","src":"3281:184:4"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readAddress","nameLocation":"3171:11:4","parameters":{"id":1613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1610,"mutability":"mutable","name":"_data","nameLocation":"3198:5:4","nodeType":"VariableDeclaration","scope":1621,"src":"3183:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1609,"name":"bytes","nodeType":"ElementaryTypeName","src":"3183:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1612,"mutability":"mutable","name":"_index","nameLocation":"3213:6:4","nodeType":"VariableDeclaration","scope":1621,"src":"3205:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1611,"name":"uint256","nodeType":"ElementaryTypeName","src":"3205:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3182:38:4"},"returnParameters":{"id":1618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1615,"mutability":"mutable","name":"a","nameLocation":"3252:1:4","nodeType":"VariableDeclaration","scope":1621,"src":"3244:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1614,"name":"address","nodeType":"ElementaryTypeName","src":"3244:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1617,"mutability":"mutable","name":"newPointer","nameLocation":"3263:10:4","nodeType":"VariableDeclaration","scope":1621,"src":"3255:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1616,"name":"uint256","nodeType":"ElementaryTypeName","src":"3255:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3243:31:4"},"scope":1679,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1678,"nodeType":"FunctionDefinition","src":"3511:494:4","nodes":[],"body":{"id":1677,"nodeType":"Block","src":"3659:346:4","nodes":[],"statements":[{"assignments":[1638],"declarations":[{"constant":false,"id":1638,"mutability":"mutable","name":"yParityAndS","nameLocation":"3673:11:4","nodeType":"VariableDeclaration","scope":1677,"src":"3665:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1637,"name":"uint256","nodeType":"ElementaryTypeName","src":"3665:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1639,"nodeType":"VariableDeclarationStatement","src":"3665:19:4"},{"AST":{"nativeSrc":"3699:164:4","nodeType":"YulBlock","src":"3699:164:4","statements":[{"nativeSrc":"3707:44:4","nodeType":"YulAssignment","src":"3707:44:4","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"3729:6:4","nodeType":"YulIdentifier","src":"3729:6:4"},{"name":"_data.offset","nativeSrc":"3737:12:4","nodeType":"YulIdentifier","src":"3737:12:4"}],"functionName":{"name":"add","nativeSrc":"3725:3:4","nodeType":"YulIdentifier","src":"3725:3:4"},"nativeSrc":"3725:25:4","nodeType":"YulFunctionCall","src":"3725:25:4"}],"functionName":{"name":"calldataload","nativeSrc":"3712:12:4","nodeType":"YulIdentifier","src":"3712:12:4"},"nativeSrc":"3712:39:4","nodeType":"YulFunctionCall","src":"3712:39:4"},"variableNames":[{"name":"r","nativeSrc":"3707:1:4","nodeType":"YulIdentifier","src":"3707:1:4"}]},{"nativeSrc":"3758:63:4","nodeType":"YulAssignment","src":"3758:63:4","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"3790:6:4","nodeType":"YulIdentifier","src":"3790:6:4"},{"arguments":[{"name":"_data.offset","nativeSrc":"3802:12:4","nodeType":"YulIdentifier","src":"3802:12:4"},{"kind":"number","nativeSrc":"3816:2:4","nodeType":"YulLiteral","src":"3816:2:4","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3798:3:4","nodeType":"YulIdentifier","src":"3798:3:4"},"nativeSrc":"3798:21:4","nodeType":"YulFunctionCall","src":"3798:21:4"}],"functionName":{"name":"add","nativeSrc":"3786:3:4","nodeType":"YulIdentifier","src":"3786:3:4"},"nativeSrc":"3786:34:4","nodeType":"YulFunctionCall","src":"3786:34:4"}],"functionName":{"name":"calldataload","nativeSrc":"3773:12:4","nodeType":"YulIdentifier","src":"3773:12:4"},"nativeSrc":"3773:48:4","nodeType":"YulFunctionCall","src":"3773:48:4"},"variableNames":[{"name":"yParityAndS","nativeSrc":"3758:11:4","nodeType":"YulIdentifier","src":"3758:11:4"}]},{"nativeSrc":"3828:29:4","nodeType":"YulAssignment","src":"3828:29:4","value":{"arguments":[{"name":"_index","nativeSrc":"3846:6:4","nodeType":"YulIdentifier","src":"3846:6:4"},{"kind":"number","nativeSrc":"3854:2:4","nodeType":"YulLiteral","src":"3854:2:4","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3842:3:4","nodeType":"YulIdentifier","src":"3842:3:4"},"nativeSrc":"3842:15:4","nodeType":"YulFunctionCall","src":"3842:15:4"},"variableNames":[{"name":"newPointer","nativeSrc":"3828:10:4","nodeType":"YulIdentifier","src":"3828:10:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1624,"isOffset":true,"isSlot":false,"src":"3737:12:4","suffix":"offset","valueSize":1},{"declaration":1624,"isOffset":true,"isSlot":false,"src":"3802:12:4","suffix":"offset","valueSize":1},{"declaration":1626,"isOffset":false,"isSlot":false,"src":"3729:6:4","valueSize":1},{"declaration":1626,"isOffset":false,"isSlot":false,"src":"3790:6:4","valueSize":1},{"declaration":1626,"isOffset":false,"isSlot":false,"src":"3846:6:4","valueSize":1},{"declaration":1635,"isOffset":false,"isSlot":false,"src":"3828:10:4","valueSize":1},{"declaration":1629,"isOffset":false,"isSlot":false,"src":"3707:1:4","valueSize":1},{"declaration":1638,"isOffset":false,"isSlot":false,"src":"3758:11:4","valueSize":1}],"id":1640,"nodeType":"InlineAssembly","src":"3690:173:4"},{"assignments":[1642],"declarations":[{"constant":false,"id":1642,"mutability":"mutable","name":"yParity","nameLocation":"3876:7:4","nodeType":"VariableDeclaration","scope":1677,"src":"3868:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1641,"name":"uint256","nodeType":"ElementaryTypeName","src":"3868:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1649,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1645,"name":"yParityAndS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"3894:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":1646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3909:3:4","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"3894:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3886:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1643,"name":"uint256","nodeType":"ElementaryTypeName","src":"3886:7:4","typeDescriptions":{}}},"id":1648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3886:27:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3868:45:4"},{"expression":{"id":1666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1650,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"3919:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1655,"name":"yParityAndS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"3939:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3931:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1653,"name":"uint256","nodeType":"ElementaryTypeName","src":"3931:7:4","typeDescriptions":{}}},"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3931:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"id":1662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"id":1659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3956:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"323535","id":1658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3961:3:4","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"3956:8:4","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}}],"id":1660,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3955:10:4","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3968:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3955:14:4","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}}],"id":1663,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3954:16:4","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}},"src":"3931:39:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3923:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1651,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3923:7:4","typeDescriptions":{}}},"id":1665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3923:48:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3919:52:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1667,"nodeType":"ExpressionStatement","src":"3919:52:4"},{"expression":{"id":1675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1668,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1633,"src":"3977:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1671,"name":"yParity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1642,"src":"3987:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3981:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1669,"name":"uint8","nodeType":"ElementaryTypeName","src":"3981:5:4","typeDescriptions":{}}},"id":1672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3981:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":1673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3998:2:4","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"3981:19:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3977:23:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1676,"nodeType":"ExpressionStatement","src":"3977:23:4"}]},"documentation":{"id":1622,"nodeType":"StructuredDocumentation","src":"3473:35:4","text":"@dev ERC-2098 Compact Signature"},"implemented":true,"kind":"function","modifiers":[],"name":"readRSVCompact","nameLocation":"3520:14:4","parameters":{"id":1627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1624,"mutability":"mutable","name":"_data","nameLocation":"3555:5:4","nodeType":"VariableDeclaration","scope":1678,"src":"3540:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1623,"name":"bytes","nodeType":"ElementaryTypeName","src":"3540:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1626,"mutability":"mutable","name":"_index","nameLocation":"3574:6:4","nodeType":"VariableDeclaration","scope":1678,"src":"3566:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1625,"name":"uint256","nodeType":"ElementaryTypeName","src":"3566:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3534:50:4"},"returnParameters":{"id":1636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1629,"mutability":"mutable","name":"r","nameLocation":"3616:1:4","nodeType":"VariableDeclaration","scope":1678,"src":"3608:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1628,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3608:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1631,"mutability":"mutable","name":"s","nameLocation":"3627:1:4","nodeType":"VariableDeclaration","scope":1678,"src":"3619:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1630,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3619:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1633,"mutability":"mutable","name":"v","nameLocation":"3636:1:4","nodeType":"VariableDeclaration","scope":1678,"src":"3630:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1632,"name":"uint8","nodeType":"ElementaryTypeName","src":"3630:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1635,"mutability":"mutable","name":"newPointer","nameLocation":"3647:10:4","nodeType":"VariableDeclaration","scope":1678,"src":"3639:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1634,"name":"uint256","nodeType":"ElementaryTypeName","src":"3639:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3607:51:4"},"scope":1679,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"LibBytes","contractDependencies":[],"contractKind":"library","documentation":{"id":1478,"nodeType":"StructuredDocumentation","src":"65:367:4","text":"@title Library for reading data from bytes arrays\n @author Agustin Aguilar (aa@horizon.io), Michael Standen (mstan@horizon.io)\n @notice This library contains functions for reading data from bytes arrays.\n @dev These functions do not check if the input index is within the bounds of the data array.\n @dev Reading out of bounds may return dirty values."},"fullyImplemented":true,"linearizedBaseContracts":[1679],"name":"LibBytes","nameLocation":"440:8:4","scope":1680,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/utils/LibOptim.sol":{"id":5,"ast":{"absolutePath":"src/utils/LibOptim.sol","id":1734,"exportedSymbols":{"LibOptim":[1733]},"nodeType":"SourceUnit","src":"39:2154:5","nodes":[{"id":1681,"nodeType":"PragmaDirective","src":"39:24:5","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":1733,"nodeType":"ContractDefinition","src":"162:2030:5","nodes":[{"id":1694,"nodeType":"FunctionDefinition","src":"461:173:5","nodes":[],"body":{"id":1693,"nodeType":"Block","src":"539:95:5","nodes":[],"statements":[{"AST":{"nativeSrc":"554:76:5","nodeType":"YulBlock","src":"554:76:5","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"569:1:5","nodeType":"YulLiteral","src":"569:1:5","type":"","value":"0"},{"name":"_a","nativeSrc":"572:2:5","nodeType":"YulIdentifier","src":"572:2:5"}],"functionName":{"name":"mstore","nativeSrc":"562:6:5","nodeType":"YulIdentifier","src":"562:6:5"},"nativeSrc":"562:13:5","nodeType":"YulFunctionCall","src":"562:13:5"},"nativeSrc":"562:13:5","nodeType":"YulExpressionStatement","src":"562:13:5"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"589:2:5","nodeType":"YulLiteral","src":"589:2:5","type":"","value":"32"},{"name":"_b","nativeSrc":"593:2:5","nodeType":"YulIdentifier","src":"593:2:5"}],"functionName":{"name":"mstore","nativeSrc":"582:6:5","nodeType":"YulIdentifier","src":"582:6:5"},"nativeSrc":"582:14:5","nodeType":"YulFunctionCall","src":"582:14:5"},"nativeSrc":"582:14:5","nodeType":"YulExpressionStatement","src":"582:14:5"},{"nativeSrc":"603:21:5","nodeType":"YulAssignment","src":"603:21:5","value":{"arguments":[{"kind":"number","nativeSrc":"618:1:5","nodeType":"YulLiteral","src":"618:1:5","type":"","value":"0"},{"kind":"number","nativeSrc":"621:2:5","nodeType":"YulLiteral","src":"621:2:5","type":"","value":"64"}],"functionName":{"name":"keccak256","nativeSrc":"608:9:5","nodeType":"YulIdentifier","src":"608:9:5"},"nativeSrc":"608:16:5","nodeType":"YulFunctionCall","src":"608:16:5"},"variableNames":[{"name":"c","nativeSrc":"603:1:5","nodeType":"YulIdentifier","src":"603:1:5"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1685,"isOffset":false,"isSlot":false,"src":"572:2:5","valueSize":1},{"declaration":1687,"isOffset":false,"isSlot":false,"src":"593:2:5","valueSize":1},{"declaration":1690,"isOffset":false,"isSlot":false,"src":"603:1:5","valueSize":1}],"id":1692,"nodeType":"InlineAssembly","src":"545:85:5"}]},"documentation":{"id":1683,"nodeType":"StructuredDocumentation","src":"184:274:5","text":" @notice Computes the keccak256 hash of two 32-byte inputs.\n @dev It uses only scratch memory space.\n @param _a The first 32 bytes of the hash.\n @param _b The second 32 bytes of the hash.\n @return c The keccak256 hash of the two 32-byte inputs."},"implemented":true,"kind":"function","modifiers":[],"name":"fkeccak256","nameLocation":"470:10:5","parameters":{"id":1688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1685,"mutability":"mutable","name":"_a","nameLocation":"489:2:5","nodeType":"VariableDeclaration","scope":1694,"src":"481:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1684,"name":"bytes32","nodeType":"ElementaryTypeName","src":"481:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1687,"mutability":"mutable","name":"_b","nameLocation":"501:2:5","nodeType":"VariableDeclaration","scope":1694,"src":"493:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1686,"name":"bytes32","nodeType":"ElementaryTypeName","src":"493:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"480:24:5"},"returnParameters":{"id":1691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1690,"mutability":"mutable","name":"c","nameLocation":"536:1:5","nodeType":"VariableDeclaration","scope":1694,"src":"528:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1689,"name":"bytes32","nodeType":"ElementaryTypeName","src":"528:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"527:11:5"},"scope":1733,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1702,"nodeType":"FunctionDefinition","src":"758:271:5","nodes":[],"body":{"id":1701,"nodeType":"Block","src":"819:210:5","nodes":[],"statements":[{"AST":{"nativeSrc":"834:191:5","nodeType":"YulBlock","src":"834:191:5","statements":[{"nativeSrc":"842:28:5","nodeType":"YulVariableDeclaration","src":"842:28:5","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"854:14:5","nodeType":"YulIdentifier","src":"854:14:5"},"nativeSrc":"854:16:5","nodeType":"YulFunctionCall","src":"854:16:5"},"variables":[{"name":"size","nativeSrc":"846:4:5","nodeType":"YulTypedName","src":"846:4:5","type":""}]},{"nativeSrc":"877:16:5","nodeType":"YulAssignment","src":"877:16:5","value":{"arguments":[{"kind":"number","nativeSrc":"888:4:5","nodeType":"YulLiteral","src":"888:4:5","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"882:5:5","nodeType":"YulIdentifier","src":"882:5:5"},"nativeSrc":"882:11:5","nodeType":"YulFunctionCall","src":"882:11:5"},"variableNames":[{"name":"r","nativeSrc":"877:1:5","nodeType":"YulIdentifier","src":"877:1:5"}]},{"nativeSrc":"900:23:5","nodeType":"YulVariableDeclaration","src":"900:23:5","value":{"arguments":[{"name":"r","nativeSrc":"917:1:5","nodeType":"YulIdentifier","src":"917:1:5"},{"kind":"number","nativeSrc":"920:2:5","nodeType":"YulLiteral","src":"920:2:5","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"913:3:5","nodeType":"YulIdentifier","src":"913:3:5"},"nativeSrc":"913:10:5","nodeType":"YulFunctionCall","src":"913:10:5"},"variables":[{"name":"start","nativeSrc":"904:5:5","nodeType":"YulTypedName","src":"904:5:5","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"937:4:5","nodeType":"YulLiteral","src":"937:4:5","type":"","value":"0x40"},{"arguments":[{"name":"start","nativeSrc":"947:5:5","nodeType":"YulIdentifier","src":"947:5:5"},{"name":"size","nativeSrc":"954:4:5","nodeType":"YulIdentifier","src":"954:4:5"}],"functionName":{"name":"add","nativeSrc":"943:3:5","nodeType":"YulIdentifier","src":"943:3:5"},"nativeSrc":"943:16:5","nodeType":"YulFunctionCall","src":"943:16:5"}],"functionName":{"name":"mstore","nativeSrc":"930:6:5","nodeType":"YulIdentifier","src":"930:6:5"},"nativeSrc":"930:30:5","nodeType":"YulFunctionCall","src":"930:30:5"},"nativeSrc":"930:30:5","nodeType":"YulExpressionStatement","src":"930:30:5"},{"expression":{"arguments":[{"name":"r","nativeSrc":"974:1:5","nodeType":"YulIdentifier","src":"974:1:5"},{"name":"size","nativeSrc":"977:4:5","nodeType":"YulIdentifier","src":"977:4:5"}],"functionName":{"name":"mstore","nativeSrc":"967:6:5","nodeType":"YulIdentifier","src":"967:6:5"},"nativeSrc":"967:15:5","nodeType":"YulFunctionCall","src":"967:15:5"},"nativeSrc":"967:15:5","nodeType":"YulExpressionStatement","src":"967:15:5"},{"expression":{"arguments":[{"name":"start","nativeSrc":"1004:5:5","nodeType":"YulIdentifier","src":"1004:5:5"},{"kind":"number","nativeSrc":"1011:1:5","nodeType":"YulLiteral","src":"1011:1:5","type":"","value":"0"},{"name":"size","nativeSrc":"1014:4:5","nodeType":"YulIdentifier","src":"1014:4:5"}],"functionName":{"name":"returndatacopy","nativeSrc":"989:14:5","nodeType":"YulIdentifier","src":"989:14:5"},"nativeSrc":"989:30:5","nodeType":"YulFunctionCall","src":"989:30:5"},"nativeSrc":"989:30:5","nodeType":"YulExpressionStatement","src":"989:30:5"}]},"evmVersion":"paris","externalReferences":[{"declaration":1698,"isOffset":false,"isSlot":false,"src":"877:1:5","valueSize":1},{"declaration":1698,"isOffset":false,"isSlot":false,"src":"917:1:5","valueSize":1},{"declaration":1698,"isOffset":false,"isSlot":false,"src":"974:1:5","valueSize":1}],"id":1700,"nodeType":"InlineAssembly","src":"825:200:5"}]},"documentation":{"id":1695,"nodeType":"StructuredDocumentation","src":"638:117:5","text":" @notice Returns the return data from the last call.\n @return r The return data from the last call."},"implemented":true,"kind":"function","modifiers":[],"name":"returnData","nameLocation":"767:10:5","parameters":{"id":1696,"nodeType":"ParameterList","parameters":[],"src":"777:2:5"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1698,"mutability":"mutable","name":"r","nameLocation":"816:1:5","nodeType":"VariableDeclaration","scope":1702,"src":"803:14:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1697,"name":"bytes","nodeType":"ElementaryTypeName","src":"803:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"802:16:5"},"scope":1733,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1718,"nodeType":"FunctionDefinition","src":"1431:196:5","nodes":[],"body":{"id":1717,"nodeType":"Block","src":"1532:95:5","nodes":[],"statements":[{"AST":{"nativeSrc":"1547:76:5","nodeType":"YulBlock","src":"1547:76:5","statements":[{"nativeSrc":"1555:62:5","nodeType":"YulAssignment","src":"1555:62:5","value":{"arguments":[{"name":"_gas","nativeSrc":"1565:4:5","nodeType":"YulIdentifier","src":"1565:4:5"},{"name":"_to","nativeSrc":"1571:3:5","nodeType":"YulIdentifier","src":"1571:3:5"},{"name":"_val","nativeSrc":"1576:4:5","nodeType":"YulIdentifier","src":"1576:4:5"},{"arguments":[{"name":"_data","nativeSrc":"1586:5:5","nodeType":"YulIdentifier","src":"1586:5:5"},{"kind":"number","nativeSrc":"1593:2:5","nodeType":"YulLiteral","src":"1593:2:5","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1582:3:5","nodeType":"YulIdentifier","src":"1582:3:5"},"nativeSrc":"1582:14:5","nodeType":"YulFunctionCall","src":"1582:14:5"},{"arguments":[{"name":"_data","nativeSrc":"1604:5:5","nodeType":"YulIdentifier","src":"1604:5:5"}],"functionName":{"name":"mload","nativeSrc":"1598:5:5","nodeType":"YulIdentifier","src":"1598:5:5"},"nativeSrc":"1598:12:5","nodeType":"YulFunctionCall","src":"1598:12:5"},{"kind":"number","nativeSrc":"1612:1:5","nodeType":"YulLiteral","src":"1612:1:5","type":"","value":"0"},{"kind":"number","nativeSrc":"1615:1:5","nodeType":"YulLiteral","src":"1615:1:5","type":"","value":"0"}],"functionName":{"name":"call","nativeSrc":"1560:4:5","nodeType":"YulIdentifier","src":"1560:4:5"},"nativeSrc":"1560:57:5","nodeType":"YulFunctionCall","src":"1560:57:5"},"variableNames":[{"name":"r","nativeSrc":"1555:1:5","nodeType":"YulIdentifier","src":"1555:1:5"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1711,"isOffset":false,"isSlot":false,"src":"1586:5:5","valueSize":1},{"declaration":1711,"isOffset":false,"isSlot":false,"src":"1604:5:5","valueSize":1},{"declaration":1709,"isOffset":false,"isSlot":false,"src":"1565:4:5","valueSize":1},{"declaration":1705,"isOffset":false,"isSlot":false,"src":"1571:3:5","valueSize":1},{"declaration":1707,"isOffset":false,"isSlot":false,"src":"1576:4:5","valueSize":1},{"declaration":1714,"isOffset":false,"isSlot":false,"src":"1555:1:5","valueSize":1}],"id":1716,"nodeType":"InlineAssembly","src":"1538:85:5"}]},"documentation":{"id":1703,"nodeType":"StructuredDocumentation","src":"1033:395:5","text":" @notice Calls another contract with the given parameters.\n @dev This method doesn't increase the memory pointer.\n @param _to The address of the contract to call.\n @param _val The value to send to the contract.\n @param _gas The amount of gas to provide for the call.\n @param _data The data to send to the contract.\n @return r The success status of the call."},"implemented":true,"kind":"function","modifiers":[],"name":"call","nameLocation":"1440:4:5","parameters":{"id":1712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1705,"mutability":"mutable","name":"_to","nameLocation":"1453:3:5","nodeType":"VariableDeclaration","scope":1718,"src":"1445:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1704,"name":"address","nodeType":"ElementaryTypeName","src":"1445:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1707,"mutability":"mutable","name":"_val","nameLocation":"1466:4:5","nodeType":"VariableDeclaration","scope":1718,"src":"1458:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1706,"name":"uint256","nodeType":"ElementaryTypeName","src":"1458:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1709,"mutability":"mutable","name":"_gas","nameLocation":"1480:4:5","nodeType":"VariableDeclaration","scope":1718,"src":"1472:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1708,"name":"uint256","nodeType":"ElementaryTypeName","src":"1472:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1711,"mutability":"mutable","name":"_data","nameLocation":"1499:5:5","nodeType":"VariableDeclaration","scope":1718,"src":"1486:18:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1710,"name":"bytes","nodeType":"ElementaryTypeName","src":"1486:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1444:61:5"},"returnParameters":{"id":1715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1714,"mutability":"mutable","name":"r","nameLocation":"1529:1:5","nodeType":"VariableDeclaration","scope":1718,"src":"1524:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1713,"name":"bool","nodeType":"ElementaryTypeName","src":"1524:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1523:8:5"},"scope":1733,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1732,"nodeType":"FunctionDefinition","src":"1997:192:5","nodes":[],"body":{"id":1731,"nodeType":"Block","src":"2092:97:5","nodes":[],"statements":[{"AST":{"nativeSrc":"2107:78:5","nodeType":"YulBlock","src":"2107:78:5","statements":[{"nativeSrc":"2115:64:5","nodeType":"YulAssignment","src":"2115:64:5","value":{"arguments":[{"name":"_gas","nativeSrc":"2133:4:5","nodeType":"YulIdentifier","src":"2133:4:5"},{"name":"_to","nativeSrc":"2139:3:5","nodeType":"YulIdentifier","src":"2139:3:5"},{"arguments":[{"name":"_data","nativeSrc":"2148:5:5","nodeType":"YulIdentifier","src":"2148:5:5"},{"kind":"number","nativeSrc":"2155:2:5","nodeType":"YulLiteral","src":"2155:2:5","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2144:3:5","nodeType":"YulIdentifier","src":"2144:3:5"},"nativeSrc":"2144:14:5","nodeType":"YulFunctionCall","src":"2144:14:5"},{"arguments":[{"name":"_data","nativeSrc":"2166:5:5","nodeType":"YulIdentifier","src":"2166:5:5"}],"functionName":{"name":"mload","nativeSrc":"2160:5:5","nodeType":"YulIdentifier","src":"2160:5:5"},"nativeSrc":"2160:12:5","nodeType":"YulFunctionCall","src":"2160:12:5"},{"kind":"number","nativeSrc":"2174:1:5","nodeType":"YulLiteral","src":"2174:1:5","type":"","value":"0"},{"kind":"number","nativeSrc":"2177:1:5","nodeType":"YulLiteral","src":"2177:1:5","type":"","value":"0"}],"functionName":{"name":"delegatecall","nativeSrc":"2120:12:5","nodeType":"YulIdentifier","src":"2120:12:5"},"nativeSrc":"2120:59:5","nodeType":"YulFunctionCall","src":"2120:59:5"},"variableNames":[{"name":"r","nativeSrc":"2115:1:5","nodeType":"YulIdentifier","src":"2115:1:5"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1725,"isOffset":false,"isSlot":false,"src":"2148:5:5","valueSize":1},{"declaration":1725,"isOffset":false,"isSlot":false,"src":"2166:5:5","valueSize":1},{"declaration":1723,"isOffset":false,"isSlot":false,"src":"2133:4:5","valueSize":1},{"declaration":1721,"isOffset":false,"isSlot":false,"src":"2139:3:5","valueSize":1},{"declaration":1728,"isOffset":false,"isSlot":false,"src":"2115:1:5","valueSize":1}],"id":1730,"nodeType":"InlineAssembly","src":"2098:87:5"}]},"documentation":{"id":1719,"nodeType":"StructuredDocumentation","src":"1631:363:5","text":" @notice Calls another contract with the given parameters, using delegatecall.\n @dev This method doesn't increase the memory pointer.\n @param _to The address of the contract to call.\n @param _gas The amount of gas to provide for the call.\n @param _data The data to send to the contract.\n @return r The success status of the call."},"implemented":true,"kind":"function","modifiers":[],"name":"delegatecall","nameLocation":"2006:12:5","parameters":{"id":1726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1721,"mutability":"mutable","name":"_to","nameLocation":"2027:3:5","nodeType":"VariableDeclaration","scope":1732,"src":"2019:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1720,"name":"address","nodeType":"ElementaryTypeName","src":"2019:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1723,"mutability":"mutable","name":"_gas","nameLocation":"2040:4:5","nodeType":"VariableDeclaration","scope":1732,"src":"2032:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1722,"name":"uint256","nodeType":"ElementaryTypeName","src":"2032:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1725,"mutability":"mutable","name":"_data","nameLocation":"2059:5:5","nodeType":"VariableDeclaration","scope":1732,"src":"2046:18:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1724,"name":"bytes","nodeType":"ElementaryTypeName","src":"2046:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2018:47:5"},"returnParameters":{"id":1729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1728,"mutability":"mutable","name":"r","nameLocation":"2089:1:5","nodeType":"VariableDeclaration","scope":1732,"src":"2084:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1727,"name":"bool","nodeType":"ElementaryTypeName","src":"2084:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2083:8:5"},"scope":1733,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"LibOptim","contractDependencies":[],"contractKind":"library","documentation":{"id":1682,"nodeType":"StructuredDocumentation","src":"65:97:5","text":"@title LibOptim\n @author Agustin Aguilar\n @notice Library for optimized EVM operations"},"fullyImplemented":true,"linearizedBaseContracts":[1733],"name":"LibOptim","nameLocation":"170:8:5","scope":1734,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}}}},"solcLongVersion":"0.8.28","solcVersion":"0.8.28"} \ No newline at end of file diff --git a/jobs/sequence_v3/build-info/rc-5/stage1.json b/jobs/sequence_v3/build-info/rc-5/stage1.json new file mode 100644 index 0000000..ae24e59 --- /dev/null +++ b/jobs/sequence_v3/build-info/rc-5/stage1.json @@ -0,0 +1 @@ +{"id":"813f8981b8f435c5","source_id_to_path":{"0":"src/Stage1Module.sol","1":"src/Stage2Module.sol","2":"src/Wallet.sol","3":"src/modules/Calls.sol","4":"src/modules/ERC4337v07.sol","5":"src/modules/Hooks.sol","6":"src/modules/Implementation.sol","7":"src/modules/Nonce.sol","8":"src/modules/Payload.sol","9":"src/modules/ReentrancyGuard.sol","10":"src/modules/Storage.sol","11":"src/modules/auth/BaseAuth.sol","12":"src/modules/auth/BaseSig.sol","13":"src/modules/auth/SelfAuth.sol","14":"src/modules/auth/Stage1Auth.sol","15":"src/modules/auth/Stage2Auth.sol","16":"src/modules/interfaces/IAccount.sol","17":"src/modules/interfaces/IAuth.sol","18":"src/modules/interfaces/ICheckpointer.sol","19":"src/modules/interfaces/IDelegatedExtension.sol","20":"src/modules/interfaces/IERC1155Receiver.sol","21":"src/modules/interfaces/IERC1271.sol","22":"src/modules/interfaces/IERC223Receiver.sol","23":"src/modules/interfaces/IERC721Receiver.sol","24":"src/modules/interfaces/IERC777Receiver.sol","25":"src/modules/interfaces/IEntryPoint.sol","26":"src/modules/interfaces/IPartialAuth.sol","27":"src/modules/interfaces/ISapient.sol","28":"src/utils/LibBytes.sol","29":"src/utils/LibOptim.sol"},"language":"Solidity","_format":"ethers-rs-sol-build-info-1","input":{"version":"0.8.28","language":"Solidity","sources":{"src/Stage1Module.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Stage2Module } from \"./Stage2Module.sol\";\nimport { Calls } from \"./modules/Calls.sol\";\n\nimport { ERC4337v07 } from \"./modules/ERC4337v07.sol\";\nimport { Hooks } from \"./modules/Hooks.sol\";\nimport { Stage1Auth } from \"./modules/auth/Stage1Auth.sol\";\nimport { IAuth } from \"./modules/interfaces/IAuth.sol\";\n\n/// @title Stage1Module\n/// @author Agustin Aguilar\n/// @notice The initial stage of the wallet\ncontract Stage1Module is Calls, Stage1Auth, Hooks, ERC4337v07 {\n\n constructor(\n address _factory,\n address _entryPoint\n ) Stage1Auth(_factory, address(new Stage2Module(_entryPoint))) ERC4337v07(_entryPoint) { }\n\n /// @inheritdoc IAuth\n function _isValidImage(\n bytes32 _imageHash\n ) internal view virtual override(IAuth, Stage1Auth) returns (bool) {\n return super._isValidImage(_imageHash);\n }\n\n}\n"},"src/Stage2Module.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Calls } from \"./modules/Calls.sol\";\n\nimport { ERC4337v07 } from \"./modules/ERC4337v07.sol\";\nimport { Hooks } from \"./modules/Hooks.sol\";\nimport { Stage2Auth } from \"./modules/auth/Stage2Auth.sol\";\nimport { IAuth } from \"./modules/interfaces/IAuth.sol\";\n\n/// @title Stage2Module\n/// @author Agustin Aguilar\n/// @notice The second stage of the wallet\ncontract Stage2Module is Calls, Stage2Auth, Hooks, ERC4337v07 {\n\n constructor(\n address _entryPoint\n ) ERC4337v07(_entryPoint) { }\n\n /// @inheritdoc IAuth\n function _isValidImage(\n bytes32 _imageHash\n ) internal view virtual override(IAuth, Stage2Auth) returns (bool) {\n return super._isValidImage(_imageHash);\n }\n\n}\n"},"src/Wallet.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\n/*\n// Delegate Proxy in Huff\n// @title Delegate Proxy\n// @notice Implements a proxy using the contract's own address to store the delegate target.\n// Calls with calldata (with or without ETH value) are forwarded to the stored target.\n// Calls sending only ETH without calldata do nothing and return immediately without forwarding.\n// @author Agusx1211\n#define macro CONSTRUCTOR() = takes (0) returns (0) {\n 0x41 // [code + arg size] (code_size + 32)\n __codeoffset(MAIN) // [code_start, code + arg size]\n returndatasize // [0, code_start, code + arg size]\n codecopy // []\n\n __codesize(MAIN) // [code_size]\n dup1 // [code_size, code_size]\n mload // [arg1, code_size]\n address // [address, arg1, code_size]\n sstore // [code_size]\n\n returndatasize // [0, code_size]\n return\n}\n\n#define macro MAIN() = takes(0) returns(0) {\n returndatasize // [0]\n returndatasize // [0, 0]\n calldatasize // [cs, 0, 0]\n iszero // [cs == 0, 0, 0]\n callvalue // [cv, cs == 0, 0, 0]\n mul // [cv * cs == 0, 0, 0]\n success // [nr, cv * cs == 0, 0, 0]\n jumpi\n calldatasize // [cds, 0, 0]\n returndatasize // [0, cds, 0, 0]\n returndatasize // [0, 0, cds, 0, 0]\n calldatacopy // [0, 0]\n returndatasize // [0, 0, 0]\n calldatasize // [cds, 0, 0, 0]\n returndatasize // [0, cds, 0, 0, 0]\n address // [addr, 0, cds, 0, 0, 0]\n sload // [imp, 0, cds, 0, 0, 0]\n gas // [gas, imp, 0, cds, 0, 0, 0]\n delegatecall // [suc, 0]\n returndatasize // [rds, suc, 0]\n dup3 // [0, rds, suc, 0]\n dup1 // [0, 0, rds, suc, 0]\n returndatacopy // [suc, 0]\n swap1 // [0, suc]\n returndatasize // [rds, 0, suc]\n swap2 // [suc, 0, rds]\n success // [nr, suc, 0, rds]\n jumpi\n revert\n success:\n return\n}\n*/\n\nlibrary Wallet {\n\n bytes internal constant creationCode =\n hex\"6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3\";\n\n}\n"},"src/modules/Calls.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { LibOptim } from \"../utils/LibOptim.sol\";\nimport { Nonce } from \"./Nonce.sol\";\nimport { Payload } from \"./Payload.sol\";\n\nimport { ReentrancyGuard } from \"./ReentrancyGuard.sol\";\nimport { BaseAuth } from \"./auth/BaseAuth.sol\";\nimport { IDelegatedExtension } from \"./interfaces/IDelegatedExtension.sol\";\n\n/// @title Calls\n/// @author Agustin Aguilar, Michael Standen, William Hua\n/// @notice Contract for executing calls\nabstract contract Calls is ReentrancyGuard, BaseAuth, Nonce {\n\n /// @notice Emitted when a call succeeds\n event CallSucceeded(bytes32 indexed _opHash, uint256 _index);\n /// @notice Emitted when a call fails\n event CallFailed(bytes32 indexed _opHash, uint256 _index, bytes _returnData);\n /// @notice Emitted when a call is aborted\n event CallAborted(bytes32 indexed _opHash, uint256 _index, bytes _returnData);\n /// @notice Emitted when a call is skipped\n event CallSkipped(bytes32 indexed _opHash, uint256 _index);\n\n /// @notice Error thrown when a call reverts\n error Reverted(Payload.Decoded _payload, uint256 _index, bytes _returnData);\n /// @notice Error thrown when a signature is invalid\n error InvalidSignature(Payload.Decoded _payload, bytes _signature);\n /// @notice Error thrown when there is not enough gas\n error NotEnoughGas(Payload.Decoded _payload, uint256 _index, uint256 _gasLeft);\n\n /// @notice Execute a call\n /// @param _payload The payload\n /// @param _signature The signature\n function execute(\n bytes calldata _payload,\n bytes calldata _signature\n ) external payable virtual nonReentrant {\n uint256 startingGas = gasleft();\n Payload.Decoded memory decoded = Payload.fromPackedCalls(_payload);\n\n _consumeNonce(decoded.space, decoded.nonce);\n (bool isValid, bytes32 opHash) = signatureValidation(decoded, _signature);\n\n if (!isValid) {\n revert InvalidSignature(decoded, _signature);\n }\n\n _execute(startingGas, opHash, decoded);\n }\n\n /// @notice Execute a call\n /// @dev Callable only by the contract itself\n /// @param _payload The payload\n function selfExecute(\n bytes calldata _payload\n ) external payable virtual onlySelf {\n uint256 startingGas = gasleft();\n Payload.Decoded memory decoded = Payload.fromPackedCalls(_payload);\n bytes32 opHash = Payload.hash(decoded);\n _execute(startingGas, opHash, decoded);\n }\n\n function _execute(\n uint256 _startingGas,\n bytes32 _opHash,\n Payload.Decoded memory _decoded\n ) private {\n bool errorFlag = false;\n\n uint256 numCalls = _decoded.calls.length;\n for (uint256 i = 0; i < numCalls; i++) {\n Payload.Call memory call = _decoded.calls[i];\n\n // Skip onlyFallback calls if no error occurred\n if (call.onlyFallback && !errorFlag) {\n emit CallSkipped(_opHash, i);\n continue;\n }\n\n // Reset the error flag\n // onlyFallback calls only apply when the immediately preceding transaction fails\n errorFlag = false;\n\n uint256 gasLimit = call.gasLimit;\n if (gasLimit != 0 && gasleft() < gasLimit) {\n revert NotEnoughGas(_decoded, i, gasleft());\n }\n\n bool success;\n if (call.delegateCall) {\n (success) = LibOptim.delegatecall(\n call.to,\n gasLimit == 0 ? gasleft() : gasLimit,\n abi.encodeWithSelector(\n IDelegatedExtension.handleSequenceDelegateCall.selector,\n _opHash,\n _startingGas,\n i,\n numCalls,\n _decoded.space,\n call.data\n )\n );\n } else {\n (success) = LibOptim.call(call.to, call.value, gasLimit == 0 ? gasleft() : gasLimit, call.data);\n }\n\n if (!success) {\n if (call.behaviorOnError == Payload.BEHAVIOR_IGNORE_ERROR) {\n errorFlag = true;\n emit CallFailed(_opHash, i, LibOptim.returnData());\n continue;\n }\n\n if (call.behaviorOnError == Payload.BEHAVIOR_REVERT_ON_ERROR) {\n revert Reverted(_decoded, i, LibOptim.returnData());\n }\n\n if (call.behaviorOnError == Payload.BEHAVIOR_ABORT_ON_ERROR) {\n emit CallAborted(_opHash, i, LibOptim.returnData());\n break;\n }\n }\n\n emit CallSucceeded(_opHash, i);\n }\n }\n\n}\n"},"src/modules/ERC4337v07.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\nimport { Calls } from \"./Calls.sol\";\n\nimport { ReentrancyGuard } from \"./ReentrancyGuard.sol\";\nimport { IAccount, PackedUserOperation } from \"./interfaces/IAccount.sol\";\nimport { IERC1271_MAGIC_VALUE_HASH } from \"./interfaces/IERC1271.sol\";\nimport { IEntryPoint } from \"./interfaces/IEntryPoint.sol\";\n\n/// @title ERC4337v07\n/// @author Agustin Aguilar, Michael Standen\n/// @notice ERC4337 v7 support\nabstract contract ERC4337v07 is ReentrancyGuard, IAccount, Calls {\n\n uint256 internal constant SIG_VALIDATION_FAILED = 1;\n\n address public immutable entrypoint;\n\n error InvalidEntryPoint(address _entrypoint);\n error ERC4337Disabled();\n\n constructor(\n address _entrypoint\n ) {\n entrypoint = _entrypoint;\n }\n\n /// @inheritdoc IAccount\n function validateUserOp(\n PackedUserOperation calldata userOp,\n bytes32 userOpHash,\n uint256 missingAccountFunds\n ) external returns (uint256 validationData) {\n if (entrypoint == address(0)) {\n revert ERC4337Disabled();\n }\n\n if (msg.sender != entrypoint) {\n revert InvalidEntryPoint(msg.sender);\n }\n\n // userOp.nonce is validated by the entrypoint\n\n if (missingAccountFunds != 0) {\n IEntryPoint(entrypoint).depositTo{ value: missingAccountFunds }(address(this));\n }\n\n if (isValidSignature(userOpHash, userOp.signature) != IERC1271_MAGIC_VALUE_HASH) {\n return SIG_VALIDATION_FAILED;\n }\n\n return 0;\n }\n\n /// @notice Execute a user operation\n /// @param _payload The packed payload\n /// @dev This is the execute function for the EntryPoint to call.\n function executeUserOp(\n bytes calldata _payload\n ) external nonReentrant {\n if (entrypoint == address(0)) {\n revert ERC4337Disabled();\n }\n\n if (msg.sender != entrypoint) {\n revert InvalidEntryPoint(msg.sender);\n }\n\n this.selfExecute(_payload);\n }\n\n}\n"},"src/modules/Hooks.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Storage } from \"./Storage.sol\";\nimport { SelfAuth } from \"./auth/SelfAuth.sol\";\nimport { IERC1155Receiver } from \"./interfaces/IERC1155Receiver.sol\";\nimport { IERC223Receiver } from \"./interfaces/IERC223Receiver.sol\";\nimport { IERC721Receiver } from \"./interfaces/IERC721Receiver.sol\";\nimport { IERC777Receiver } from \"./interfaces/IERC777Receiver.sol\";\n\n/// @title Hooks\n/// @author Agustin Aguilar, Michael Standen\n/// @notice Enables extension of the wallet by adding hooks\ncontract Hooks is SelfAuth, IERC1155Receiver, IERC777Receiver, IERC721Receiver, IERC223Receiver {\n\n /// @dev keccak256(\"org.arcadeum.module.hooks.hooks\")\n bytes32 private constant HOOKS_KEY = bytes32(0xbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a120);\n\n /// @notice Emitted when a hook is defined\n event DefinedHook(bytes4 selector, address implementation);\n\n /// @notice Error thrown when a hook already exists\n error HookAlreadyExists(bytes4 selector);\n /// @notice Error thrown when a hook does not exist\n error HookDoesNotExist(bytes4 selector);\n\n /// @notice Read a hook\n /// @param selector The selector of the hook\n /// @return implementation The implementation address of the hook\n function readHook(\n bytes4 selector\n ) external view returns (address) {\n return _readHook(selector);\n }\n\n /// @notice Add a hook\n /// @param selector The selector of the hook\n /// @param implementation The implementation address of the hook\n /// @dev Callable only by the contract itself\n function addHook(bytes4 selector, address implementation) external payable onlySelf {\n if (_readHook(selector) != address(0)) {\n revert HookAlreadyExists(selector);\n }\n _writeHook(selector, implementation);\n }\n\n /// @notice Remove a hook\n /// @param selector The selector of the hook\n /// @dev Callable only by the contract itself\n function removeHook(\n bytes4 selector\n ) external payable onlySelf {\n if (_readHook(selector) == address(0)) {\n revert HookDoesNotExist(selector);\n }\n _writeHook(selector, address(0));\n }\n\n function _readHook(\n bytes4 selector\n ) private view returns (address) {\n return address(uint160(uint256(Storage.readBytes32Map(HOOKS_KEY, bytes32(selector)))));\n }\n\n function _writeHook(bytes4 selector, address implementation) private {\n Storage.writeBytes32Map(HOOKS_KEY, bytes32(selector), bytes32(uint256(uint160(implementation))));\n emit DefinedHook(selector, implementation);\n }\n\n /// @inheritdoc IERC1155Receiver\n function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) {\n return Hooks.onERC1155Received.selector;\n }\n\n /// @inheritdoc IERC1155Receiver\n function onERC1155BatchReceived(\n address,\n address,\n uint256[] calldata,\n uint256[] calldata,\n bytes calldata\n ) external pure returns (bytes4) {\n return Hooks.onERC1155BatchReceived.selector;\n }\n\n /// @inheritdoc IERC777Receiver\n function tokensReceived(\n address operator,\n address from,\n address to,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external { }\n\n /// @inheritdoc IERC721Receiver\n function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) {\n return Hooks.onERC721Received.selector;\n }\n\n /// @inheritdoc IERC223Receiver\n function tokenReceived(address, uint256, bytes calldata) external pure returns (bytes4) {\n return Hooks.tokenReceived.selector;\n }\n\n /// @notice Fallback function\n /// @dev Handles delegate calls to hooks\n fallback() external payable {\n if (msg.data.length >= 4) {\n address target = _readHook(bytes4(msg.data));\n if (target != address(0)) {\n (bool success, bytes memory result) = target.delegatecall(msg.data);\n assembly {\n if iszero(success) { revert(add(result, 32), mload(result)) }\n return(add(result, 32), mload(result))\n }\n }\n }\n }\n\n /// @notice Receive native tokens\n receive() external payable { }\n\n}\n"},"src/modules/Implementation.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { SelfAuth } from \"./auth/SelfAuth.sol\";\n\n/// @title Implementation\n/// @author Agustin Aguilar\n/// @notice Manages the implementation address of the proxy contract\ncontract Implementation is SelfAuth {\n\n /// @notice Emitted when the implementation is updated\n event ImplementationUpdated(address newImplementation);\n\n /// @notice Update the implementation\n /// @param _implementation The new implementation\n /// @dev Callable only by the contract itself\n function updateImplementation(\n address _implementation\n ) external payable virtual onlySelf {\n _updateImplementation(_implementation);\n }\n\n /// @notice Get the implementation\n /// @return implementation The implementation\n function getImplementation() external view virtual returns (address) {\n return _getImplementation();\n }\n\n function _updateImplementation(\n address _implementation\n ) internal virtual {\n _setImplementation(_implementation);\n emit ImplementationUpdated(_implementation);\n }\n\n function _setImplementation(\n address _imp\n ) internal {\n assembly {\n sstore(address(), _imp)\n }\n }\n\n function _getImplementation() internal view returns (address _imp) {\n assembly {\n _imp := sload(address())\n }\n }\n\n}\n"},"src/modules/Nonce.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Storage } from \"./Storage.sol\";\n\n/// @title Nonce\n/// @author Agustin Aguilar\n/// @notice Manages the nonce of the wallet\ncontract Nonce {\n\n /// @notice Emitted when the nonce is changed\n event NonceChange(uint256 _space, uint256 _newNonce);\n\n /// @notice Error thrown when the nonce is bad\n error BadNonce(uint256 _space, uint256 _provided, uint256 _current);\n\n /// @dev keccak256(\"org.arcadeum.module.calls.nonce\")\n bytes32 private constant NONCE_KEY = bytes32(0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e);\n\n /// @notice Read the nonce\n /// @param _space The space\n /// @return nonce The nonce\n function readNonce(\n uint256 _space\n ) public view virtual returns (uint256) {\n return uint256(Storage.readBytes32Map(NONCE_KEY, bytes32(_space)));\n }\n\n function _writeNonce(uint256 _space, uint256 _nonce) internal {\n Storage.writeBytes32Map(NONCE_KEY, bytes32(_space), bytes32(_nonce));\n }\n\n function _consumeNonce(uint256 _space, uint256 _nonce) internal {\n uint256 currentNonce = readNonce(_space);\n if (currentNonce != _nonce) {\n revert BadNonce(_space, _nonce, currentNonce);\n }\n\n unchecked {\n uint256 newNonce = _nonce + 1;\n\n _writeNonce(_space, newNonce);\n emit NonceChange(_space, newNonce);\n return;\n }\n }\n\n}\n"},"src/modules/Payload.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { LibBytes } from \"../utils/LibBytes.sol\";\n\nusing LibBytes for bytes;\n\n/// @title Payload\n/// @author Agustin Aguilar, Michael Standen, William Hua\n/// @notice Library for encoding and decoding payloads\nlibrary Payload {\n\n /// @notice Error thrown when the kind is invalid\n error InvalidKind(uint8 kind);\n\n /// @notice Error thrown when the encoding is invalid\n error InvalidPackedLength();\n\n /// @dev keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\")\n bytes32 private constant EIP712_DOMAIN_TYPEHASH = 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f;\n\n /// @dev keccak256(\"Sequence Wallet\")\n bytes32 private constant EIP712_DOMAIN_NAME_SEQUENCE =\n 0x4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c56318;\n\n /// @dev keccak256(\"3\")\n bytes32 private constant EIP712_DOMAIN_VERSION_SEQUENCE =\n 0x2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de;\n\n function domainSeparator(bool _noChainId, address _wallet) internal view returns (bytes32 _domainSeparator) {\n return keccak256(\n abi.encode(\n EIP712_DOMAIN_TYPEHASH,\n EIP712_DOMAIN_NAME_SEQUENCE,\n EIP712_DOMAIN_VERSION_SEQUENCE,\n _noChainId ? uint256(0) : uint256(block.chainid),\n _wallet\n )\n );\n }\n\n /// @dev keccak256(\"Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\")\n bytes32 private constant CALL_TYPEHASH = 0x0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437;\n\n /// @dev keccak256(\"Calls(Call[] calls,uint256 space,uint256 nonce,address[] wallets)Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\")\n bytes32 private constant CALLS_TYPEHASH = 0x11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a2;\n\n /// @dev keccak256(\"Message(bytes message,address[] wallets)\")\n bytes32 private constant MESSAGE_TYPEHASH = 0xe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466;\n\n /// @dev keccak256(\"ConfigUpdate(bytes32 imageHash,address[] wallets)\")\n bytes32 private constant CONFIG_UPDATE_TYPEHASH = 0x11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4;\n\n /// @notice Kind of transaction\n uint8 public constant KIND_TRANSACTIONS = 0x00;\n /// @notice Kind of digest\n uint8 public constant KIND_MESSAGE = 0x01;\n /// @notice Kind of config update\n uint8 public constant KIND_CONFIG_UPDATE = 0x02;\n /// @notice Kind of message\n uint8 public constant KIND_DIGEST = 0x03;\n\n /// @notice Behavior on error: ignore error\n uint8 public constant BEHAVIOR_IGNORE_ERROR = 0x00;\n /// @notice Behavior on error: revert on error\n uint8 public constant BEHAVIOR_REVERT_ON_ERROR = 0x01;\n /// @notice Behavior on error: abort on error\n uint8 public constant BEHAVIOR_ABORT_ON_ERROR = 0x02;\n\n /// @notice Payload call information\n /// @param to Address of the target contract\n /// @param value Value to send with the call\n /// @param data Data to send with the call\n /// @param gasLimit Gas limit for the call\n /// @param delegateCall If the call is a delegate call\n /// @param onlyFallback If the call should only be executed in an error scenario\n /// @param behaviorOnError Behavior on error\n struct Call {\n address to;\n uint256 value;\n bytes data;\n uint256 gasLimit;\n bool delegateCall;\n bool onlyFallback;\n uint256 behaviorOnError;\n }\n\n /// @notice Decoded payload\n /// @param kind Kind of payload\n /// @param noChainId If the chain ID should be omitted\n /// @param calls Array of calls (transaction kind)\n /// @param space Nonce space for the calls (transaction kind)\n /// @param nonce Nonce value for the calls (transaction kind)\n /// @param message Message to validate (message kind)\n /// @param imageHash Image hash to update to (config update kind)\n /// @param digest Digest to validate (digest kind)\n /// @param parentWallets Parent wallets\n struct Decoded {\n uint8 kind;\n bool noChainId;\n // Transaction kind\n Call[] calls;\n uint256 space;\n uint256 nonce;\n // Message kind\n bytes message;\n // Config update kind\n bytes32 imageHash;\n // Digest kind for 1271\n bytes32 digest;\n // Parent wallets\n address[] parentWallets;\n }\n\n function fromMessage(\n bytes memory message\n ) internal pure returns (Decoded memory _decoded) {\n _decoded.kind = KIND_MESSAGE;\n _decoded.message = message;\n }\n\n function fromConfigUpdate(\n bytes32 imageHash\n ) internal pure returns (Decoded memory _decoded) {\n _decoded.kind = KIND_CONFIG_UPDATE;\n _decoded.imageHash = imageHash;\n }\n\n function fromDigest(\n bytes32 digest\n ) internal pure returns (Decoded memory _decoded) {\n _decoded.kind = KIND_DIGEST;\n _decoded.digest = digest;\n }\n\n function fromPackedCalls(\n bytes calldata packed\n ) internal view returns (Decoded memory _decoded) {\n _decoded.kind = KIND_TRANSACTIONS;\n\n // Read the global flag\n (uint256 globalFlag, uint256 pointer) = packed.readFirstUint8();\n\n // First bit determines if space is zero or not\n if (globalFlag & 0x01 == 0x01) {\n _decoded.space = 0;\n } else {\n (_decoded.space, pointer) = packed.readUint160(pointer);\n }\n\n // Next 3 bits determine the size of the nonce\n uint256 nonceSize = (globalFlag >> 1) & 0x07;\n\n if (nonceSize > 0) {\n // Read the nonce\n (_decoded.nonce, pointer) = packed.readUintX(pointer, nonceSize);\n }\n\n uint256 numCalls;\n\n // Bit 5 determines if the batch contains a single call\n if (globalFlag & 0x10 == 0x10) {\n numCalls = 1;\n } else {\n // Bit 6 determines if the number of calls uses 1 byte or 2 bytes\n if (globalFlag & 0x20 == 0x20) {\n (numCalls, pointer) = packed.readUint16(pointer);\n } else {\n (numCalls, pointer) = packed.readUint8(pointer);\n }\n }\n\n // Read the calls\n _decoded.calls = new Call[](numCalls);\n\n for (uint256 i = 0; i < numCalls; i++) {\n uint8 flags;\n (flags, pointer) = packed.readUint8(pointer);\n\n // First bit determines if this is a call to self\n // or a call to another address\n if (flags & 0x01 == 0x01) {\n // Call to self\n _decoded.calls[i].to = address(this);\n } else {\n // Call to another address\n (_decoded.calls[i].to, pointer) = packed.readAddress(pointer);\n }\n\n // Second bit determines if the call has value or not\n if (flags & 0x02 == 0x02) {\n (_decoded.calls[i].value, pointer) = packed.readUint256(pointer);\n }\n\n // Third bit determines if the call has data or not\n if (flags & 0x04 == 0x04) {\n // 3 bytes determine the size of the calldata\n uint256 calldataSize;\n (calldataSize, pointer) = packed.readUint24(pointer);\n _decoded.calls[i].data = packed[pointer:pointer + calldataSize];\n pointer += calldataSize;\n }\n\n // Fourth bit determines if the call has a gas limit or not\n if (flags & 0x08 == 0x08) {\n (_decoded.calls[i].gasLimit, pointer) = packed.readUint256(pointer);\n }\n\n // Fifth bit determines if the call is a delegate call or not\n _decoded.calls[i].delegateCall = (flags & 0x10 == 0x10);\n\n // Sixth bit determines if the call is fallback only\n _decoded.calls[i].onlyFallback = (flags & 0x20 == 0x20);\n\n // Last 2 bits are directly mapped to the behavior on error\n _decoded.calls[i].behaviorOnError = (flags & 0xC0) >> 6;\n }\n\n if (pointer != packed.length) {\n revert InvalidPackedLength();\n }\n\n return _decoded;\n }\n\n function hashCall(\n Call memory c\n ) internal pure returns (bytes32) {\n return keccak256(\n abi.encode(\n CALL_TYPEHASH, c.to, c.value, keccak256(c.data), c.gasLimit, c.delegateCall, c.onlyFallback, c.behaviorOnError\n )\n );\n }\n\n function hashCalls(\n Call[] memory calls\n ) internal pure returns (bytes32) {\n // In EIP712, an array is often hashed as the keccak256 of the concatenated\n // hashes of each item. So we hash each Call, pack them, and hash again.\n bytes32[] memory callHashes = new bytes32[](calls.length);\n for (uint256 i = 0; i < calls.length; i++) {\n callHashes[i] = hashCall(calls[i]);\n }\n return keccak256(abi.encodePacked(callHashes));\n }\n\n function toEIP712(\n Decoded memory _decoded\n ) internal pure returns (bytes32) {\n bytes32 walletsHash = keccak256(abi.encodePacked(_decoded.parentWallets));\n\n if (_decoded.kind == KIND_TRANSACTIONS) {\n bytes32 callsHash = hashCalls(_decoded.calls);\n return keccak256(abi.encode(CALLS_TYPEHASH, callsHash, _decoded.space, _decoded.nonce, walletsHash));\n } else if (_decoded.kind == KIND_MESSAGE) {\n return keccak256(abi.encode(MESSAGE_TYPEHASH, keccak256(_decoded.message), walletsHash));\n } else if (_decoded.kind == KIND_CONFIG_UPDATE) {\n return keccak256(abi.encode(CONFIG_UPDATE_TYPEHASH, _decoded.imageHash, walletsHash));\n } else if (_decoded.kind == KIND_DIGEST) {\n // Top-level: Use MESSAGE_TYPEHASH but assume the digest is already the hashed message\n return keccak256(abi.encode(MESSAGE_TYPEHASH, _decoded.digest, walletsHash));\n } else {\n // Unknown kind\n revert InvalidKind(_decoded.kind);\n }\n }\n\n function hash(\n Decoded memory _decoded\n ) internal view returns (bytes32) {\n bytes32 domain = domainSeparator(_decoded.noChainId, address(this));\n bytes32 structHash = toEIP712(_decoded);\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domain, structHash));\n }\n\n function hashFor(Decoded memory _decoded, address _wallet) internal view returns (bytes32) {\n bytes32 domain = domainSeparator(_decoded.noChainId, _wallet);\n bytes32 structHash = toEIP712(_decoded);\n return keccak256(abi.encodePacked(\"\\x19\\x01\", domain, structHash));\n }\n\n}\n"},"src/modules/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport { Storage } from \"./Storage.sol\";\n\nabstract contract ReentrancyGuard {\n\n bytes32 private constant _INITIAL_VALUE = bytes32(0);\n bytes32 private constant _NOT_ENTERED = bytes32(uint256(1));\n bytes32 private constant _ENTERED = bytes32(uint256(2));\n\n /// @dev keccak256(\"org.sequence.module.reentrancyguard.status\")\n bytes32 private constant STATUS_KEY = bytes32(0xfc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde);\n\n /// @notice Error thrown when a reentrant call is detected\n error ReentrantCall();\n\n /// @notice Prevents a contract from calling itself, directly or indirectly\n modifier nonReentrant() {\n // On the first call to nonReentrant\n // _status will be _NOT_ENTERED or _INITIAL_VALUE\n if (Storage.readBytes32(STATUS_KEY) == _ENTERED) {\n revert ReentrantCall();\n }\n\n // Any calls to nonReentrant after this point will fail\n Storage.writeBytes32(STATUS_KEY, _ENTERED);\n\n _;\n\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n // Notice that because constructors are not available\n // we always start with _INITIAL_VALUE, not _NOT_ENTERED\n Storage.writeBytes32(STATUS_KEY, _NOT_ENTERED);\n }\n\n}\n"},"src/modules/Storage.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\n/// @title Storage\n/// @author Agustin Aguilar\n/// @notice Library for storing data at certain storage slots\nlibrary Storage {\n\n function writeBytes32(bytes32 _key, bytes32 _val) internal {\n assembly {\n sstore(_key, _val)\n }\n }\n\n function readBytes32(\n bytes32 _key\n ) internal view returns (bytes32 val) {\n assembly {\n val := sload(_key)\n }\n }\n\n function writeBytes32Map(bytes32 _key, bytes32 _subKey, bytes32 _val) internal {\n bytes32 key = keccak256(abi.encode(_key, _subKey));\n assembly {\n sstore(key, _val)\n }\n }\n\n function readBytes32Map(bytes32 _key, bytes32 _subKey) internal view returns (bytes32 val) {\n bytes32 key = keccak256(abi.encode(_key, _subKey));\n assembly {\n val := sload(key)\n }\n }\n\n}\n"},"src/modules/auth/BaseAuth.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Payload } from \"../Payload.sol\";\n\nimport { Storage } from \"../Storage.sol\";\nimport { IAuth } from \"../interfaces/IAuth.sol\";\nimport { IERC1271, IERC1271_MAGIC_VALUE_HASH } from \"../interfaces/IERC1271.sol\";\n\nimport { IPartialAuth } from \"../interfaces/IPartialAuth.sol\";\nimport { ISapient } from \"../interfaces/ISapient.sol\";\nimport { BaseSig } from \"./BaseSig.sol\";\n\nimport { SelfAuth } from \"./SelfAuth.sol\";\n\nusing Payload for Payload.Decoded;\n\n/// @title BaseAuth\n/// @author Agustin Aguilar, Michael Standen\n/// @notice Base contract for the auth module\nabstract contract BaseAuth is IAuth, IPartialAuth, ISapient, IERC1271, SelfAuth {\n\n /// @dev keccak256(\"org.sequence.module.auth.static\")\n bytes32 private constant STATIC_SIGNATURE_KEY =\n bytes32(0xc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e86);\n\n /// @notice Error thrown when the sapient signature is invalid\n error InvalidSapientSignature(Payload.Decoded _payload, bytes _signature);\n /// @notice Error thrown when the signature weight is invalid\n error InvalidSignatureWeight(uint256 _threshold, uint256 _weight);\n /// @notice Error thrown when the static signature has expired\n error InvalidStaticSignatureExpired(bytes32 _opHash, uint256 _expires);\n /// @notice Error thrown when the static signature has the wrong caller\n error InvalidStaticSignatureWrongCaller(bytes32 _opHash, address _caller, address _expectedCaller);\n\n /// @notice Event emitted when a static signature is set\n event StaticSignatureSet(bytes32 _hash, address _address, uint96 _timestamp);\n\n function _getStaticSignature(\n bytes32 _hash\n ) internal view returns (address, uint256) {\n uint256 word = uint256(Storage.readBytes32Map(STATIC_SIGNATURE_KEY, _hash));\n return (address(uint160(word >> 96)), uint256(uint96(word)));\n }\n\n function _setStaticSignature(bytes32 _hash, address _address, uint256 _timestamp) internal {\n Storage.writeBytes32Map(\n STATIC_SIGNATURE_KEY, _hash, bytes32(uint256(uint160(_address)) << 96 | (_timestamp & 0xffffffffffffffffffffffff))\n );\n }\n\n /// @notice Get the static signature for a specific hash\n /// @param _hash The hash to get the static signature for\n /// @return address The address associated with the static signature\n /// @return timestamp The timestamp of the static signature\n function getStaticSignature(\n bytes32 _hash\n ) external view returns (address, uint256) {\n return _getStaticSignature(_hash);\n }\n\n /// @notice Set the static signature for a specific hash\n /// @param _hash The hash to set the static signature for\n /// @param _address The address to associate with the static signature\n /// @param _timestamp The timestamp of the static signature\n /// @dev Only callable by the wallet itself\n function setStaticSignature(bytes32 _hash, address _address, uint96 _timestamp) external onlySelf {\n _setStaticSignature(_hash, _address, _timestamp);\n emit StaticSignatureSet(_hash, _address, _timestamp);\n }\n\n /// @notice Update the image hash\n /// @param _imageHash The new image hash\n /// @dev Only callable by the wallet itself\n function updateImageHash(\n bytes32 _imageHash\n ) external virtual onlySelf {\n _updateImageHash(_imageHash);\n }\n\n function signatureValidation(\n Payload.Decoded memory _payload,\n bytes calldata _signature\n ) internal view virtual returns (bool isValid, bytes32 opHash) {\n // Read first bit to determine if static signature is used\n bytes1 signatureFlag = _signature[0];\n\n if (signatureFlag & 0x80 == 0x80) {\n // Load the no chain id flag\n _payload.noChainId = signatureFlag & 0x02 == 0x02;\n opHash = _payload.hash();\n\n (address addr, uint256 timestamp) = _getStaticSignature(opHash);\n if (timestamp <= block.timestamp) {\n revert InvalidStaticSignatureExpired(opHash, timestamp);\n }\n\n if (addr != address(0) && addr != msg.sender) {\n revert InvalidStaticSignatureWrongCaller(opHash, msg.sender, addr);\n }\n\n return (true, opHash);\n }\n\n // Static signature is not used, recover and validate imageHash\n\n uint256 threshold;\n uint256 weight;\n bytes32 imageHash;\n\n (threshold, weight, imageHash,, opHash) =\n BaseSig.recover(_payload, _signature, BaseSig.RecoverMode.Initial, address(0));\n\n // Validate the weight\n if (weight < threshold) {\n revert InvalidSignatureWeight(threshold, weight);\n }\n\n isValid = _isValidImage(imageHash);\n }\n\n /// @inheritdoc ISapient\n function recoverSapientSignature(\n Payload.Decoded memory _payload,\n bytes calldata _signature\n ) external view returns (bytes32) {\n // Copy parent wallets + add caller at the end\n address[] memory parentWallets = new address[](_payload.parentWallets.length + 1);\n\n for (uint256 i = 0; i < _payload.parentWallets.length; i++) {\n parentWallets[i] = _payload.parentWallets[i];\n }\n\n parentWallets[_payload.parentWallets.length] = msg.sender;\n _payload.parentWallets = parentWallets;\n\n (bool isValid,) = signatureValidation(_payload, _signature);\n if (!isValid) {\n revert InvalidSapientSignature(_payload, _signature);\n }\n\n return bytes32(uint256(1));\n }\n\n /// @inheritdoc IERC1271\n function isValidSignature(bytes32 _hash, bytes calldata _signature) public view returns (bytes4) {\n Payload.Decoded memory payload = Payload.fromDigest(_hash);\n\n (bool isValid,) = signatureValidation(payload, _signature);\n if (!isValid) {\n return bytes4(0);\n }\n\n return IERC1271_MAGIC_VALUE_HASH;\n }\n\n /// @inheritdoc IPartialAuth\n function recoverPartialSignature(\n Payload.Decoded memory _payload,\n bytes calldata _signature\n )\n external\n view\n returns (\n uint256 threshold,\n uint256 weight,\n bool isValidImage,\n bytes32 imageHash,\n uint256 checkpoint,\n bytes32 opHash\n )\n {\n (threshold, weight, imageHash, checkpoint, opHash) =\n BaseSig.recover(_payload, _signature, BaseSig.RecoverMode.Initial, address(0));\n isValidImage = _isValidImage(imageHash);\n }\n\n}\n"},"src/modules/auth/BaseSig.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { LibBytes } from \"../../utils/LibBytes.sol\";\nimport { LibOptim } from \"../../utils/LibOptim.sol\";\nimport { Payload } from \"../Payload.sol\";\n\nimport { ICheckpointer, Snapshot } from \"../interfaces/ICheckpointer.sol\";\nimport { IERC1271, IERC1271_MAGIC_VALUE_HASH } from \"../interfaces/IERC1271.sol\";\nimport { ISapient, ISapientCompact } from \"../interfaces/ISapient.sol\";\n\nusing LibBytes for bytes;\nusing Payload for Payload.Decoded;\n\n/// @title BaseSig\n/// @author Agustin Aguilar, Michael Standen, William Hua, Shun Kakinoki\n/// @notice Library for recovering signatures from the base-auth payload\nlibrary BaseSig {\n\n uint256 internal constant FLAG_SIGNATURE_HASH = 0;\n uint256 internal constant FLAG_ADDRESS = 1;\n uint256 internal constant FLAG_SIGNATURE_ERC1271 = 2;\n uint256 internal constant FLAG_NODE = 3;\n uint256 internal constant FLAG_BRANCH = 4;\n uint256 internal constant FLAG_SUBDIGEST = 5;\n uint256 internal constant FLAG_NESTED = 6;\n uint256 internal constant FLAG_SIGNATURE_ETH_SIGN = 7;\n uint256 internal constant FLAG_SIGNATURE_ANY_ADDRESS_SUBDIGEST = 8;\n uint256 internal constant FLAG_SIGNATURE_SAPIENT = 9;\n uint256 internal constant FLAG_SIGNATURE_SAPIENT_COMPACT = 10;\n\n /// @notice Error thrown when the weight is too low for a chained signature\n error LowWeightChainedSignature(bytes _signature, uint256 _threshold, uint256 _weight);\n /// @notice Error thrown when the ERC1271 signature is invalid\n error InvalidERC1271Signature(bytes32 _opHash, address _signer, bytes _signature);\n /// @notice Error thrown when the checkpoint order is wrong\n error WrongChainedCheckpointOrder(uint256 _nextCheckpoint, uint256 _checkpoint);\n /// @notice Error thrown when the snapshot is unused\n error UnusedSnapshot(Snapshot _snapshot);\n /// @notice Error thrown when the signature flag is invalid\n error InvalidSignatureFlag(uint256 _flag);\n /// @notice Error thrown when a chained signature is nested inside another chained signature\n error ChainedSignatureNestedInChainedSignature();\n\n enum RecoverMode {\n Initial,\n UseProvidedCheckpointer,\n SkipSnapshotRead\n }\n\n function _leafForAddressAndWeight(address _addr, uint256 _weight) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"Sequence signer:\\n\", _addr, _weight));\n }\n\n function _leafForNested(bytes32 _node, uint256 _threshold, uint256 _weight) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"Sequence nested config:\\n\", _node, _threshold, _weight));\n }\n\n function _leafForSapient(address _addr, uint256 _weight, bytes32 _imageHash) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"Sequence sapient config:\\n\", _addr, _weight, _imageHash));\n }\n\n function _leafForHardcodedSubdigest(\n bytes32 _subdigest\n ) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"Sequence static digest:\\n\", _subdigest));\n }\n\n function _leafForAnyAddressSubdigest(\n bytes32 _anyAddressSubdigest\n ) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(\"Sequence any address subdigest:\\n\", _anyAddressSubdigest));\n }\n\n function recover(\n Payload.Decoded memory _payload,\n bytes calldata _signature,\n RecoverMode _recoverMode,\n address _checkpointer\n ) internal view returns (uint256 threshold, uint256 weight, bytes32 imageHash, uint256 checkpoint, bytes32 opHash) {\n // First byte is the signature flag\n (uint256 signatureFlag, uint256 rindex) = _signature.readFirstUint8();\n\n // The possible flags are:\n // - 0000 00XX (bits [1..0]): signature type (00 = normal, 01/11 = chained, 10 = no chain id)\n // - 000X XX00 (bits [4..2]): checkpoint size (000 = 0 bytes, 001 = 1 byte, 010 = 2 bytes...)\n // - 00X0 0000 (bit [5]): threshold size (0 = 1 byte, 1 = 2 bytes)\n // - 0X00 0000 (bit [6]): set if imageHash checkpointer is used\n // - X000 0000 (bit [7]): reserved by base-auth\n\n Snapshot memory snapshot;\n\n // Recover the imageHash checkpointer if any\n // but checkpointer passed as argument takes precedence\n // since it can be defined by the chained signatures\n if (_recoverMode != RecoverMode.UseProvidedCheckpointer) {\n // Clear the provided checkpointer because we will either\n // read our own, or it is zero\n _checkpointer = address(0);\n\n if (signatureFlag & 0x40 == 0x40) {\n (_checkpointer, rindex) = _signature.readAddress(rindex);\n\n if (_recoverMode != RecoverMode.SkipSnapshotRead) {\n // Next 3 bytes determine the checkpointer data size\n uint256 checkpointerDataSize;\n (checkpointerDataSize, rindex) = _signature.readUint24(rindex);\n\n // Read the checkpointer data\n bytes memory checkpointerData = _signature[rindex:rindex + checkpointerDataSize];\n\n // Call the middleware\n snapshot = ICheckpointer(_checkpointer).snapshotFor(address(this), checkpointerData);\n\n rindex += checkpointerDataSize;\n }\n }\n }\n\n // If signature type is 01 or 11 we do a chained signature\n if (signatureFlag & 0x01 == 0x01) {\n if (_recoverMode != RecoverMode.Initial) {\n revert ChainedSignatureNestedInChainedSignature();\n }\n return recoverChained(_payload, _checkpointer, snapshot, _signature[rindex:]);\n }\n\n // If the signature type is 10 we do a no chain id signature\n _payload.noChainId = signatureFlag & 0x02 == 0x02;\n\n {\n // Recover the checkpoint using the size defined by the flag\n uint256 checkpointSize = (signatureFlag & 0x1c) >> 2;\n (checkpoint, rindex) = _signature.readUintX(rindex, checkpointSize);\n }\n\n // Recover the threshold, using the flag for the size\n {\n uint256 thresholdSize = ((signatureFlag & 0x20) >> 5) + 1;\n (threshold, rindex) = _signature.readUintX(rindex, thresholdSize);\n }\n\n // Recover the tree\n opHash = _payload.hash();\n (weight, imageHash) = recoverBranch(_payload, opHash, _signature[rindex:]);\n\n imageHash = LibOptim.fkeccak256(imageHash, bytes32(threshold));\n imageHash = LibOptim.fkeccak256(imageHash, bytes32(checkpoint));\n imageHash = LibOptim.fkeccak256(imageHash, bytes32(uint256(uint160(_checkpointer))));\n\n // If the snapshot is used, either the imageHash must match\n // or the checkpoint must be greater than the snapshot checkpoint\n if (snapshot.imageHash != bytes32(0) && snapshot.imageHash != imageHash && checkpoint <= snapshot.checkpoint) {\n revert UnusedSnapshot(snapshot);\n }\n }\n\n function recoverChained(\n Payload.Decoded memory _payload,\n address _checkpointer,\n Snapshot memory _snapshot,\n bytes calldata _signature\n ) internal view returns (uint256 threshold, uint256 weight, bytes32 imageHash, uint256 checkpoint, bytes32 opHash) {\n Payload.Decoded memory linkedPayload;\n linkedPayload.kind = Payload.KIND_CONFIG_UPDATE;\n\n uint256 rindex;\n uint256 prevCheckpoint = type(uint256).max;\n\n while (rindex < _signature.length) {\n uint256 nrindex;\n\n {\n uint256 sigSize;\n (sigSize, rindex) = _signature.readUint24(rindex);\n nrindex = sigSize + rindex;\n }\n\n RecoverMode recoverMode =\n nrindex == _signature.length ? RecoverMode.UseProvidedCheckpointer : RecoverMode.SkipSnapshotRead;\n\n if (prevCheckpoint == type(uint256).max) {\n (threshold, weight, imageHash, checkpoint, opHash) =\n recover(_payload, _signature[rindex:nrindex], recoverMode, _checkpointer);\n } else {\n (threshold, weight, imageHash, checkpoint,) =\n recover(linkedPayload, _signature[rindex:nrindex], recoverMode, _checkpointer);\n }\n\n if (weight < threshold) {\n revert LowWeightChainedSignature(_signature[rindex:nrindex], threshold, weight);\n }\n rindex = nrindex;\n\n if (_snapshot.imageHash == imageHash) {\n _snapshot.imageHash = bytes32(0);\n }\n\n if (checkpoint >= prevCheckpoint) {\n revert WrongChainedCheckpointOrder(checkpoint, prevCheckpoint);\n }\n\n linkedPayload.imageHash = imageHash;\n prevCheckpoint = checkpoint;\n }\n\n if (_snapshot.imageHash != bytes32(0) && checkpoint <= _snapshot.checkpoint) {\n revert UnusedSnapshot(_snapshot);\n }\n }\n\n function recoverBranch(\n Payload.Decoded memory _payload,\n bytes32 _opHash,\n bytes calldata _signature\n ) internal view returns (uint256 weight, bytes32 root) {\n unchecked {\n uint256 rindex;\n\n // Iterate until the image is completed\n while (rindex < _signature.length) {\n // The first byte is half flag (the top nibble)\n // and the second set of 4 bits can freely be used by the part\n\n // Read next item type\n uint256 firstByte;\n (firstByte, rindex) = _signature.readUint8(rindex);\n\n // The top 4 bits are the flag\n uint256 flag = (firstByte & 0xf0) >> 4;\n\n // Signature hash (0x00)\n if (flag == FLAG_SIGNATURE_HASH) {\n // Free bits layout:\n // - bits [3..0]: Weight (0000 = dynamic, 0001 = 1, ..., 1111 = 15)\n // We read 64 bytes for an ERC-2098 compact signature (r, yParityAndS).\n // The top bit of yParityAndS is yParity, the remaining 255 bits are s.\n\n uint8 addrWeight = uint8(firstByte & 0x0f);\n if (addrWeight == 0) {\n (addrWeight, rindex) = _signature.readUint8(rindex);\n }\n\n bytes32 r;\n bytes32 s;\n uint8 v;\n (r, s, v, rindex) = _signature.readRSVCompact(rindex);\n\n address addr = ecrecover(_opHash, v, r, s);\n\n weight += addrWeight;\n bytes32 node = _leafForAddressAndWeight(addr, addrWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Address (0x01) (without signature)\n if (flag == FLAG_ADDRESS) {\n // Free bits layout:\n // - bits [3..0]: Weight (0000 = dynamic, 0001 = 1, 0010 = 2, ...)\n\n // Read weight\n uint8 addrWeight = uint8(firstByte & 0x0f);\n if (addrWeight == 0) {\n (addrWeight, rindex) = _signature.readUint8(rindex);\n }\n\n // Read address\n address addr;\n (addr, rindex) = _signature.readAddress(rindex);\n\n // Compute the merkle root WITHOUT adding the weight\n bytes32 node = _leafForAddressAndWeight(addr, addrWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Signature ERC1271 (0x02)\n if (flag == FLAG_SIGNATURE_ERC1271) {\n // Free bits layout:\n // - XX00 : Signature size size (00 = 0 byte, 01 = 1 byte, 10 = 2 bytes, 11 = 3 bytes)\n // - 00XX : Weight (00 = dynamic, 01 = 1, 10 = 2, 11 = 3)\n\n // Read weight\n uint8 addrWeight = uint8(firstByte & 0x03);\n if (addrWeight == 0) {\n (addrWeight, rindex) = _signature.readUint8(rindex);\n }\n\n // Read signer\n address addr;\n (addr, rindex) = _signature.readAddress(rindex);\n\n // Read signature size\n uint256 sizeSize = uint8(firstByte & 0x0c) >> 2;\n uint256 size;\n (size, rindex) = _signature.readUintX(rindex, sizeSize);\n\n // Read dynamic size signature\n uint256 nrindex = rindex + size;\n\n // Call the ERC1271 contract to check if the signature is valid\n if (IERC1271(addr).isValidSignature(_opHash, _signature[rindex:nrindex]) != IERC1271_MAGIC_VALUE_HASH) {\n revert InvalidERC1271Signature(_opHash, addr, _signature[rindex:nrindex]);\n }\n rindex = nrindex;\n // Add the weight and compute the merkle root\n weight += addrWeight;\n bytes32 node = _leafForAddressAndWeight(addr, addrWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Node (0x03)\n if (flag == FLAG_NODE) {\n // Free bits left unused\n\n // Read node hash\n bytes32 node;\n (node, rindex) = _signature.readBytes32(rindex);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Branch (0x04)\n if (flag == FLAG_BRANCH) {\n // Free bits layout:\n // - XXXX : Size size (0000 = 0 byte, 0001 = 1 byte, 0010 = 2 bytes, ...)\n\n // Read size\n uint256 sizeSize = uint8(firstByte & 0x0f);\n uint256 size;\n (size, rindex) = _signature.readUintX(rindex, sizeSize);\n\n // Enter a branch of the signature merkle tree\n uint256 nrindex = rindex + size;\n\n (uint256 nweight, bytes32 node) = recoverBranch(_payload, _opHash, _signature[rindex:nrindex]);\n rindex = nrindex;\n\n weight += nweight;\n root = LibOptim.fkeccak256(root, node);\n continue;\n }\n\n // Nested (0x06)\n if (flag == FLAG_NESTED) {\n // Unused free bits:\n // - XX00 : Weight (00 = dynamic, 01 = 1, 10 = 2, 11 = 3)\n // - 00XX : Threshold (00 = dynamic, 01 = 1, 10 = 2, 11 = 3)\n\n // Enter a branch of the signature merkle tree\n // but with an internal threshold and an external fixed weight\n uint256 externalWeight = uint8(firstByte & 0x0c) >> 2;\n if (externalWeight == 0) {\n (externalWeight, rindex) = _signature.readUint8(rindex);\n }\n\n uint256 internalThreshold = uint8(firstByte & 0x03);\n if (internalThreshold == 0) {\n (internalThreshold, rindex) = _signature.readUint16(rindex);\n }\n\n uint256 size;\n (size, rindex) = _signature.readUint24(rindex);\n uint256 nrindex = rindex + size;\n\n (uint256 internalWeight, bytes32 internalRoot) = recoverBranch(_payload, _opHash, _signature[rindex:nrindex]);\n rindex = nrindex;\n\n if (internalWeight >= internalThreshold) {\n weight += externalWeight;\n }\n\n bytes32 node = _leafForNested(internalRoot, internalThreshold, externalWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Subdigest (0x05)\n if (flag == FLAG_SUBDIGEST) {\n // Free bits left unused\n\n // A hardcoded always accepted digest\n // it pushes the weight to the maximum\n bytes32 hardcoded;\n (hardcoded, rindex) = _signature.readBytes32(rindex);\n if (hardcoded == _opHash) {\n weight = type(uint256).max;\n }\n\n bytes32 node = _leafForHardcodedSubdigest(hardcoded);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Signature ETH Sign (0x07)\n if (flag == FLAG_SIGNATURE_ETH_SIGN) {\n // Free bits layout:\n // - bits [3..0]: Weight (0000 = dynamic, 0001 = 1, ..., 1111 = 15)\n // We read 64 bytes for an ERC-2098 compact signature (r, yParityAndS).\n // The top bit of yParityAndS is yParity, the remaining 255 bits are s.\n\n uint8 addrWeight = uint8(firstByte & 0x0f);\n if (addrWeight == 0) {\n (addrWeight, rindex) = _signature.readUint8(rindex);\n }\n\n bytes32 r;\n bytes32 s;\n uint8 v;\n (r, s, v, rindex) = _signature.readRSVCompact(rindex);\n\n address addr = ecrecover(keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", _opHash)), v, r, s);\n\n weight += addrWeight;\n bytes32 node = _leafForAddressAndWeight(addr, addrWeight);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Signature Any address subdigest (0x08)\n // similar to subdigest, but allows for counter-factual payloads\n if (flag == FLAG_SIGNATURE_ANY_ADDRESS_SUBDIGEST) {\n // Free bits left unused\n\n // A hardcoded always accepted digest\n // it pushes the weight to the maximum\n bytes32 hardcoded;\n (hardcoded, rindex) = _signature.readBytes32(rindex);\n bytes32 anyAddressOpHash = _payload.hashFor(address(0));\n if (hardcoded == anyAddressOpHash) {\n weight = type(uint256).max;\n }\n\n bytes32 node = _leafForAnyAddressSubdigest(hardcoded);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Signature Sapient (0x09)\n if (flag == FLAG_SIGNATURE_SAPIENT) {\n // Free bits layout:\n // - XX00 : Signature size size (00 = 0 byte, 01 = 1 byte, 10 = 2 bytes, 11 = 3 bytes)\n // - 00XX : Weight (00 = dynamic, 01 = 1, 10 = 2, 11 = 3)\n\n // Read signer and weight\n uint8 addrWeight = uint8(firstByte & 0x03);\n if (addrWeight == 0) {\n (addrWeight, rindex) = _signature.readUint8(rindex);\n }\n\n address addr;\n (addr, rindex) = _signature.readAddress(rindex);\n\n // Read signature size\n uint256 size;\n {\n uint256 sizeSize = uint8(firstByte & 0x0c) >> 2;\n (size, rindex) = _signature.readUintX(rindex, sizeSize);\n }\n\n // Read dynamic size signature\n uint256 nrindex = rindex + size;\n\n // Call the ERC1271 contract to check if the signature is valid\n bytes32 sapientImageHash = ISapient(addr).recoverSapientSignature(_payload, _signature[rindex:nrindex]);\n rindex = nrindex;\n\n // Add the weight and compute the merkle root\n weight += addrWeight;\n bytes32 node = _leafForSapient(addr, addrWeight, sapientImageHash);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n // Signature Sapient Compact (0x0A)\n if (flag == FLAG_SIGNATURE_SAPIENT_COMPACT) {\n // Free bits layout:\n // - XX00 : Signature size size (00 = 0 byte, 01 = 1 byte, 10 = 2 bytes, 11 = 3 bytes)\n // - 00XX : Weight (00 = dynamic, 01 = 1, 10 = 2, 11 = 3)\n\n // Read signer and weight\n uint8 addrWeight = uint8(firstByte & 0x03);\n if (addrWeight == 0) {\n (addrWeight, rindex) = _signature.readUint8(rindex);\n }\n\n address addr;\n (addr, rindex) = _signature.readAddress(rindex);\n\n // Read signature size\n uint256 sizeSize = uint8(firstByte & 0x0c) >> 2;\n uint256 size;\n (size, rindex) = _signature.readUintX(rindex, sizeSize);\n\n // Read dynamic size signature\n uint256 nrindex = rindex + size;\n\n // Call the Sapient contract to check if the signature is valid\n bytes32 sapientImageHash =\n ISapientCompact(addr).recoverSapientSignatureCompact(_opHash, _signature[rindex:nrindex]);\n rindex = nrindex;\n // Add the weight and compute the merkle root\n weight += addrWeight;\n bytes32 node = _leafForSapient(addr, addrWeight, sapientImageHash);\n root = root != bytes32(0) ? LibOptim.fkeccak256(root, node) : node;\n continue;\n }\n\n revert InvalidSignatureFlag(flag);\n }\n }\n }\n\n}\n"},"src/modules/auth/SelfAuth.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\n/// @title SelfAuth\n/// @author Agustin Aguilar, Michael Standen\n/// @notice Modifier for checking if the caller is the same as the contract\nabstract contract SelfAuth {\n\n /// @notice Error thrown when the caller is not the same as the contract\n error OnlySelf(address _sender);\n\n modifier onlySelf() {\n if (msg.sender != address(this)) {\n revert OnlySelf(msg.sender);\n }\n _;\n }\n\n}\n"},"src/modules/auth/Stage1Auth.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Wallet } from \"../../Wallet.sol\";\nimport { Implementation } from \"../Implementation.sol\";\nimport { Storage } from \"../Storage.sol\";\nimport { BaseAuth } from \"./BaseAuth.sol\";\n\n/// @title Stage1Auth\n/// @author Agustin Aguilar\n/// @notice Stage 1 auth contract\ncontract Stage1Auth is BaseAuth, Implementation {\n\n /// @notice Error thrown when the image hash is zero\n error ImageHashIsZero();\n\n /// @notice Initialization code hash\n bytes32 public immutable INIT_CODE_HASH;\n /// @notice Factory address\n address public immutable FACTORY;\n /// @notice Stage 2 implementation address\n address public immutable STAGE_2_IMPLEMENTATION;\n\n /// @dev keccak256(\"org.arcadeum.module.auth.upgradable.image.hash\")\n bytes32 internal constant IMAGE_HASH_KEY = bytes32(0xea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8);\n\n /// @notice Emitted when the image hash is updated\n event ImageHashUpdated(bytes32 newImageHash);\n\n constructor(address _factory, address _stage2) {\n // Build init code hash of the deployed wallets using that module\n bytes32 initCodeHash = keccak256(abi.encodePacked(Wallet.creationCode, uint256(uint160(address(this)))));\n\n INIT_CODE_HASH = initCodeHash;\n FACTORY = _factory;\n STAGE_2_IMPLEMENTATION = _stage2;\n }\n\n function _updateImageHash(\n bytes32 _imageHash\n ) internal virtual override {\n // Update imageHash in storage\n if (_imageHash == bytes32(0)) {\n revert ImageHashIsZero();\n }\n Storage.writeBytes32(IMAGE_HASH_KEY, _imageHash);\n emit ImageHashUpdated(_imageHash);\n\n // Update wallet implementation to stage2 version\n _updateImplementation(STAGE_2_IMPLEMENTATION);\n }\n\n function _isValidImage(\n bytes32 _imageHash\n ) internal view virtual override returns (bool) {\n return address(uint160(uint256(keccak256(abi.encodePacked(hex\"ff\", FACTORY, _imageHash, INIT_CODE_HASH)))))\n == address(this);\n }\n\n}\n"},"src/modules/auth/Stage2Auth.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Implementation } from \"../Implementation.sol\";\nimport { Storage } from \"../Storage.sol\";\nimport { BaseAuth } from \"./BaseAuth.sol\";\n\n/// @title Stage2Auth\n/// @author Agustin Aguilar\n/// @notice Stage 2 auth contract\ncontract Stage2Auth is BaseAuth, Implementation {\n\n /// @dev keccak256(\"org.arcadeum.module.auth.upgradable.image.hash\")\n bytes32 internal constant IMAGE_HASH_KEY = bytes32(0xea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8);\n\n /// @notice Emitted when the image hash is updated\n event ImageHashUpdated(bytes32 newImageHash);\n\n /// @notice Error thrown when the image hash is zero\n error ImageHashIsZero();\n\n /// @notice Get the image hash\n /// @return imageHash The image hash\n function imageHash() external view virtual returns (bytes32) {\n return Storage.readBytes32(IMAGE_HASH_KEY);\n }\n\n function _isValidImage(\n bytes32 _imageHash\n ) internal view virtual override returns (bool) {\n return _imageHash != bytes32(0) && _imageHash == Storage.readBytes32(IMAGE_HASH_KEY);\n }\n\n function _updateImageHash(\n bytes32 _imageHash\n ) internal virtual override {\n if (_imageHash == bytes32(0)) {\n revert ImageHashIsZero();\n }\n Storage.writeBytes32(IMAGE_HASH_KEY, _imageHash);\n emit ImageHashUpdated(_imageHash);\n }\n\n}\n"},"src/modules/interfaces/IAccount.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\n\n/**\n * User Operation struct\n * @param sender - The sender account of this request.\n * @param nonce - Unique value the sender uses to verify it is not a replay.\n * @param initCode - If set, the account contract will be created by this constructor\n * @param callData - The method call to execute on this account.\n * @param accountGasLimits - Packed gas limits for validateUserOp and gas limit passed to the callData method call.\n * @param preVerificationGas - Gas not calculated by the handleOps method, but added to the gas paid.\n * Covers batch overhead.\n * @param gasFees - packed gas fields maxPriorityFeePerGas and maxFeePerGas - Same as EIP-1559 gas parameters.\n * @param paymasterAndData - If set, this field holds the paymaster address, verification gas limit, postOp gas limit and paymaster-specific extra data\n * The paymaster will pay for the transaction instead of the sender.\n * @param signature - Sender-verified signature over the entire request, the EntryPoint address and the chain ID.\n */\nstruct PackedUserOperation {\n address sender;\n uint256 nonce;\n bytes initCode;\n bytes callData;\n bytes32 accountGasLimits;\n uint256 preVerificationGas;\n bytes32 gasFees;\n bytes paymasterAndData;\n bytes signature;\n}\n\ninterface IAccount {\n\n /**\n * Validate user's signature and nonce\n * the entryPoint will make the call to the recipient only if this validation call returns successfully.\n * signature failure should be reported by returning SIG_VALIDATION_FAILED (1).\n * This allows making a \"simulation call\" without a valid signature\n * Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\n *\n * @dev Must validate caller is the entryPoint.\n * Must validate the signature and nonce\n * @param userOp - The operation that is about to be executed.\n * @param userOpHash - Hash of the user's request data. can be used as the basis for signature.\n * @param missingAccountFunds - Missing funds on the account's deposit in the entrypoint.\n * This is the minimum amount to transfer to the sender(entryPoint) to be\n * able to make the call. The excess is left as a deposit in the entrypoint\n * for future calls. Can be withdrawn anytime using \"entryPoint.withdrawTo()\".\n * In case there is a paymaster in the request (or the current deposit is high\n * enough), this value will be zero.\n * @return validationData - Packaged ValidationData structure. use `_packValidationData` and\n * `_unpackValidationData` to encode and decode.\n * <20-byte> aggregatorOrSigFail - 0 for valid signature, 1 to mark signature failure,\n * otherwise, an address of an \"aggregator\" contract.\n * <6-byte> validUntil - Last timestamp this operation is valid at, or 0 for \"indefinitely\"\n * <6-byte> validAfter - First timestamp this operation is valid\n * If an account doesn't use time-range, it is enough to\n * return SIG_VALIDATION_FAILED value (1) for signature failure.\n * Note that the validation code cannot use block.timestamp (or block.number) directly.\n */\n function validateUserOp(\n PackedUserOperation calldata userOp,\n bytes32 userOpHash,\n uint256 missingAccountFunds\n ) external returns (uint256 validationData);\n\n}\n"},"src/modules/interfaces/IAuth.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\n/// @title IAuth\n/// @author Agustin Aguilar, Michael Standen, William Hua\n/// @notice Internal interface for the auth modules\nabstract contract IAuth {\n\n function _isValidImage(\n bytes32 imageHash\n ) internal view virtual returns (bool isValid);\n\n function _updateImageHash(\n bytes32 imageHash\n ) internal virtual;\n\n}\n"},"src/modules/interfaces/ICheckpointer.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\n/// @notice Snapshot for a specific wallet\n/// @param imageHash Image hash of the wallet\n/// @param checkpoint Checkpoint identifier\nstruct Snapshot {\n bytes32 imageHash;\n uint256 checkpoint;\n}\n\n/// @title ICheckpointer\n/// @author Agustin Aguilar\n/// @notice Interface for the checkpointer module\ninterface ICheckpointer {\n\n /// @notice Get the snapshot for a specific wallet\n /// @param _wallet The wallet address\n /// @param _proof The proof\n /// @return snapshot The snapshot\n function snapshotFor(address _wallet, bytes calldata _proof) external view returns (Snapshot memory snapshot);\n\n}\n"},"src/modules/interfaces/IDelegatedExtension.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\n/// @title IDelegatedExtension\n/// @author Agustin Aguilar\n/// @notice Interface for the delegated extension module\ninterface IDelegatedExtension {\n\n /// @notice Handle a sequence delegate call\n /// @param _opHash The operation hash\n /// @param _startingGas The starting gas\n /// @param _index The index\n /// @param _numCalls The number of calls\n /// @param _space The space\n /// @param _data The data\n function handleSequenceDelegateCall(\n bytes32 _opHash,\n uint256 _startingGas,\n uint256 _index,\n uint256 _numCalls,\n uint256 _space,\n bytes calldata _data\n ) external;\n\n}\n"},"src/modules/interfaces/IERC1155Receiver.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\n/// @title IERC1155Receiver\n/// @notice Interface for the ERC1155 receiver module\ninterface IERC1155Receiver {\n\n /// @notice Called when a single ERC1155 token is transferred to this contract\n /// @param operator The address which initiated the transfer\n /// @param from The address which previously owned the token\n /// @param tokenId The ID of the token being transferred\n /// @param value The amount of token being transferred\n /// @param data Additional data with no specified format\n /// @return magicValue On a success, the selector of the function that was called\n function onERC1155Received(\n address operator,\n address from,\n uint256 tokenId,\n uint256 value,\n bytes calldata data\n ) external returns (bytes4 magicValue);\n\n /// @notice Called when multiple ERC1155 tokens are transferred to this contract\n /// @param operator The address which initiated the transfer\n /// @param from The address which previously owned the token\n /// @param ids The list of token IDs being transferred\n /// @param values The amounts of each token being transferred\n /// @param data Additional data with no specified format\n /// @return magicValue On a success, the selector of the function that was called\n function onERC1155BatchReceived(\n address operator,\n address from,\n uint256[] calldata ids,\n uint256[] calldata values,\n bytes calldata data\n ) external returns (bytes4 magicValue);\n\n}\n"},"src/modules/interfaces/IERC1271.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\nbytes4 constant IERC1271_MAGIC_VALUE_HASH = 0x1626ba7e;\nbytes4 constant IERC1271_MAGIC_VALUE_BYTES = 0x20c13b0b;\n\n/// @title IERC1271\n/// @notice Interface for ERC1271\ninterface IERC1271 {\n\n /// @notice Verifies whether the provided signature is valid with respect to the provided hash\n /// @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n /// > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\"isValidSignature(bytes32,bytes)\")\n /// > This function MAY modify Ethereum's state\n /// @param _hash keccak256 hash that was signed\n /// @param _signature Signature byte array associated with _data\n /// @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\n function isValidSignature(bytes32 _hash, bytes calldata _signature) external view returns (bytes4 magicValue);\n\n}\n\n/// @title IERC1271Data\n/// @notice Deprecated interface for ERC1271 using bytes instead of bytes32\ninterface IERC1271Data {\n\n /// @notice Verifies whether the provided signature is valid with respect to the provided hash\n /// @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n /// > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n /// > This function MAY modify Ethereum's state\n /// @param _data Data that was signed\n /// @param _signature Signature byte array associated with _data\n /// @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\n function isValidSignature(bytes calldata _data, bytes calldata _signature) external view returns (bytes4 magicValue);\n\n}\n"},"src/modules/interfaces/IERC223Receiver.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\n/// @title IERC223Receiver\n/// @notice Interface for the ERC223 receiver module\ninterface IERC223Receiver {\n\n /// @notice Called when ERC223 tokens are received by this contract\n /// @param from The address which previously owned the tokens\n /// @param value The amount of tokens being transferred\n /// @param data Transaction metadata\n /// @return signature The signature of the function to be called\n function tokenReceived(address from, uint256 value, bytes calldata data) external returns (bytes4 signature);\n\n}\n"},"src/modules/interfaces/IERC721Receiver.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\n/// @title IERC721Receiver\n/// @notice Interface for the ERC721 receiver module\ninterface IERC721Receiver {\n\n /// @notice Called when a single ERC721 token is transferred to this contract\n /// @param operator The address which initiated the transfer\n /// @param from The address which previously owned the token\n /// @param tokenId The ID of the token being transferred\n /// @param data Additional data with no specified format\n /// @return magicValue On a success, the selector of the function that was called\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4 magicValue);\n\n}\n"},"src/modules/interfaces/IERC777Receiver.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\n/// @title IERC777Receiver\n/// @notice Interface for the ERC777 receiver module\ninterface IERC777Receiver {\n\n /// @notice Called when tokens are received by this contract\n /// @param operator The address which initiated the transfer\n /// @param from The address which previously owned the tokens\n /// @param to The address which is receiving the tokens\n /// @param amount The amount of tokens being transferred\n /// @param data Additional data with no specified format\n /// @param operatorData Additional data with no specified format\n function tokensReceived(\n address operator,\n address from,\n address to,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external;\n\n}\n"},"src/modules/interfaces/IEntryPoint.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\n\ninterface IEntryPoint {\n\n function depositTo(\n address account\n ) external payable;\n\n}\n"},"src/modules/interfaces/IPartialAuth.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Payload } from \"../Payload.sol\";\n\n/// @title IPartialAuth\n/// @author Agustin Aguilar\n/// @notice Interface for the partial auth module\ninterface IPartialAuth {\n\n /// @notice Recover the partial signature\n /// @param _payload The payload\n /// @param _signature The signature to recover\n /// @return threshold The signature threshold\n /// @return weight The derived weight\n /// @return isValidImage Whether the image hash is valid\n /// @return imageHash The derived image hash\n /// @return checkpoint The checkpoint identifier\n /// @return opHash The hash of the payload\n function recoverPartialSignature(\n Payload.Decoded calldata _payload,\n bytes calldata _signature\n )\n external\n view\n returns (\n uint256 threshold,\n uint256 weight,\n bool isValidImage,\n bytes32 imageHash,\n uint256 checkpoint,\n bytes32 opHash\n );\n\n}\n"},"src/modules/interfaces/ISapient.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport { Payload } from \"../Payload.sol\";\n\n/// @title ISapient\n/// @author Agustin Aguilar, Michael Standen\n/// @notice Sapient signers take an explicit payload and return their own \"imageHash\" as result\n/// @dev The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration\ninterface ISapient {\n\n /// @notice Recovers the image hash of a given signature\n /// @param payload The payload to recover the signature from\n /// @param signature The signature to recover the image hash from\n /// @return imageHash The recovered image hash\n function recoverSapientSignature(\n Payload.Decoded calldata payload,\n bytes calldata signature\n ) external view returns (bytes32 imageHash);\n\n}\n\n/// @title ISapientCompact\n/// @author Agustin Aguilar, Michael Standen\n/// @notice Sapient signers take a compacted payload and return their own \"imageHash\" as result\n/// @dev The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration\ninterface ISapientCompact {\n\n /// @notice Recovers the image hash of a given signature, using a hashed payload\n /// @param digest The digest of the payload\n /// @param signature The signature to recover the image hash from\n /// @return imageHash The recovered image hash\n function recoverSapientSignatureCompact(\n bytes32 digest,\n bytes calldata signature\n ) external view returns (bytes32 imageHash);\n\n}\n"},"src/utils/LibBytes.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\n/// @title Library for reading data from bytes arrays\n/// @author Agustin Aguilar (aa@horizon.io), Michael Standen (mstan@horizon.io)\n/// @notice This library contains functions for reading data from bytes arrays.\n/// @dev These functions do not check if the input index is within the bounds of the data array.\n/// @dev Reading out of bounds may return dirty values.\nlibrary LibBytes {\n\n function readFirstUint8(\n bytes calldata _data\n ) internal pure returns (uint8 a, uint256 newPointer) {\n assembly {\n let word := calldataload(_data.offset)\n a := shr(248, word)\n newPointer := 1\n }\n }\n\n function readUint8(bytes calldata _data, uint256 _index) internal pure returns (uint8 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(248, word)\n newPointer := add(_index, 1)\n }\n }\n\n function readUint16(bytes calldata _data, uint256 _index) internal pure returns (uint16 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(240, word)\n newPointer := add(_index, 2)\n }\n }\n\n function readUint24(bytes calldata _data, uint256 _index) internal pure returns (uint24 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(232, word)\n newPointer := add(_index, 3)\n }\n }\n\n function readUint64(bytes calldata _data, uint256 _index) internal pure returns (uint64 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(192, word)\n newPointer := add(_index, 8)\n }\n }\n\n function readUint160(bytes calldata _data, uint256 _index) internal pure returns (uint160 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := shr(96, word)\n newPointer := add(_index, 20)\n }\n }\n\n function readUint256(bytes calldata _data, uint256 _index) internal pure returns (uint256 a, uint256 newPointer) {\n assembly {\n a := calldataload(add(_index, _data.offset))\n newPointer := add(_index, 32)\n }\n }\n\n function readUintX(\n bytes calldata _data,\n uint256 _index,\n uint256 _length\n ) internal pure returns (uint256 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n let shift := sub(256, mul(_length, 8))\n a := and(shr(shift, word), sub(shl(mul(8, _length), 1), 1))\n newPointer := add(_index, _length)\n }\n }\n\n function readBytes4(bytes calldata _data, uint256 _pointer) internal pure returns (bytes4 a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_pointer, _data.offset))\n a := and(word, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n newPointer := add(_pointer, 4)\n }\n }\n\n function readBytes32(bytes calldata _data, uint256 _pointer) internal pure returns (bytes32 a, uint256 newPointer) {\n assembly {\n a := calldataload(add(_pointer, _data.offset))\n newPointer := add(_pointer, 32)\n }\n }\n\n function readAddress(bytes calldata _data, uint256 _index) internal pure returns (address a, uint256 newPointer) {\n assembly {\n let word := calldataload(add(_index, _data.offset))\n a := and(shr(96, word), 0xffffffffffffffffffffffffffffffffffffffff)\n newPointer := add(_index, 20)\n }\n }\n\n /// @dev ERC-2098 Compact Signature\n function readRSVCompact(\n bytes calldata _data,\n uint256 _index\n ) internal pure returns (bytes32 r, bytes32 s, uint8 v, uint256 newPointer) {\n uint256 yParityAndS;\n assembly {\n r := calldataload(add(_index, _data.offset))\n yParityAndS := calldataload(add(_index, add(_data.offset, 32)))\n newPointer := add(_index, 64)\n }\n uint256 yParity = uint256(yParityAndS >> 255);\n s = bytes32(uint256(yParityAndS) & ((1 << 255) - 1));\n v = uint8(yParity) + 27;\n }\n\n}\n"},"src/utils/LibOptim.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.18;\n\n/// @title LibOptim\n/// @author Agustin Aguilar\n/// @notice Library for optimized EVM operations\nlibrary LibOptim {\n\n /**\n * @notice Computes the keccak256 hash of two 32-byte inputs.\n * @dev It uses only scratch memory space.\n * @param _a The first 32 bytes of the hash.\n * @param _b The second 32 bytes of the hash.\n * @return c The keccak256 hash of the two 32-byte inputs.\n */\n function fkeccak256(bytes32 _a, bytes32 _b) internal pure returns (bytes32 c) {\n assembly {\n mstore(0, _a)\n mstore(32, _b)\n c := keccak256(0, 64)\n }\n }\n\n /**\n * @notice Returns the return data from the last call.\n * @return r The return data from the last call.\n */\n function returnData() internal pure returns (bytes memory r) {\n assembly {\n let size := returndatasize()\n r := mload(0x40)\n let start := add(r, 32)\n mstore(0x40, add(start, size))\n mstore(r, size)\n returndatacopy(start, 0, size)\n }\n }\n\n /**\n * @notice Calls another contract with the given parameters.\n * @dev This method doesn't increase the memory pointer.\n * @param _to The address of the contract to call.\n * @param _val The value to send to the contract.\n * @param _gas The amount of gas to provide for the call.\n * @param _data The data to send to the contract.\n * @return r The success status of the call.\n */\n function call(address _to, uint256 _val, uint256 _gas, bytes memory _data) internal returns (bool r) {\n assembly {\n r := call(_gas, _to, _val, add(_data, 32), mload(_data), 0, 0)\n }\n }\n\n /**\n * @notice Calls another contract with the given parameters, using delegatecall.\n * @dev This method doesn't increase the memory pointer.\n * @param _to The address of the contract to call.\n * @param _gas The amount of gas to provide for the call.\n * @param _data The data to send to the contract.\n * @return r The success status of the call.\n */\n function delegatecall(address _to, uint256 _gas, bytes memory _data) internal returns (bool r) {\n assembly {\n r := delegatecall(_gas, _to, add(_data, 32), mload(_data), 0, 0)\n }\n }\n\n}\n"}},"settings":{"remappings":["account-abstraction/=lib/account-abstraction/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","erc2470-libs/=lib/erc2470-libs/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":4294967295},"metadata":{"useLiteralContent":false,"bytecodeHash":"ipfs","appendCBOR":true},"outputSelection":{"src/Stage1Module.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/Stage2Module.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/Wallet.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/Calls.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/ERC4337v07.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/Hooks.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/Implementation.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/Nonce.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/Payload.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/ReentrancyGuard.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/Storage.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/auth/BaseAuth.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/auth/BaseSig.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/auth/SelfAuth.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/auth/Stage1Auth.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/auth/Stage2Auth.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IAccount.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IAuth.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/ICheckpointer.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IDelegatedExtension.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IERC1155Receiver.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IERC1271.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IERC223Receiver.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IERC721Receiver.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IERC777Receiver.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IEntryPoint.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/IPartialAuth.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/modules/interfaces/ISapient.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/utils/LibBytes.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]},"src/utils/LibOptim.sol":{"":["ast"],"*":["abi","evm.bytecode.object","evm.bytecode.sourceMap","evm.bytecode.linkReferences","evm.deployedBytecode.object","evm.deployedBytecode.sourceMap","evm.deployedBytecode.linkReferences","evm.deployedBytecode.immutableReferences","evm.methodIdentifiers","metadata"]}},"evmVersion":"paris","viaIR":true,"libraries":{}},"allowPaths":["/home/agusx1211/workspaces/wallet-contracts-v3","/home/agusx1211/workspaces/wallet-contracts-v3/lib"],"basePath":"/home/agusx1211/workspaces/wallet-contracts-v3","includePaths":["/home/agusx1211/workspaces/wallet-contracts-v3"]},"output":{"contracts":{"src/Stage1Module.sol":{"Stage1Module":{"abi":[{"type":"constructor","inputs":[{"name":"_factory","type":"address","internalType":"address"},{"name":"_entryPoint","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"INIT_CODE_HASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"STAGE_2_IMPLEMENTATION","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"addHook","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"implementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"entrypoint","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"execute","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeUserOp","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getImplementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"onERC1155BatchReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC1155Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"readHook","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"readNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"recoverPartialSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"weight","type":"uint256","internalType":"uint256"},{"name":"isValidImage","type":"bool","internalType":"bool"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"},{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"recoverSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"removeHook","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"selfExecute","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_address","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tokenReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"tokensReceived","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operatorData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImageHash","inputs":[{"name":"_imageHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImplementation","inputs":[{"name":"_implementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"validateUserOp","inputs":[{"name":"userOp","type":"tuple","internalType":"struct PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"missingAccountFunds","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"validationData","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"event","name":"CallAborted","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_returnData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"CallFailed","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_returnData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"CallSkipped","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CallSucceeded","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DefinedHook","inputs":[{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"implementation","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ImageHashUpdated","inputs":[{"name":"newImageHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ImplementationUpdated","inputs":[{"name":"newImplementation","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"NonceChange","inputs":[{"name":"_space","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_newNonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StaticSignatureSet","inputs":[{"name":"_hash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"_address","type":"address","indexed":false,"internalType":"address"},{"name":"_timestamp","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"error","name":"BadNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"},{"name":"_provided","type":"uint256","internalType":"uint256"},{"name":"_current","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ChainedSignatureNestedInChainedSignature","inputs":[]},{"type":"error","name":"ERC4337Disabled","inputs":[]},{"type":"error","name":"HookAlreadyExists","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}]},{"type":"error","name":"HookDoesNotExist","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}]},{"type":"error","name":"ImageHashIsZero","inputs":[]},{"type":"error","name":"InvalidERC1271Signature","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidEntryPoint","inputs":[{"name":"_entrypoint","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidPackedLength","inputs":[]},{"type":"error","name":"InvalidSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignatureFlag","inputs":[{"name":"_flag","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidSignatureWeight","inputs":[{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureExpired","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_expires","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureWrongCaller","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_caller","type":"address","internalType":"address"},{"name":"_expectedCaller","type":"address","internalType":"address"}]},{"type":"error","name":"LowWeightChainedSignature","inputs":[{"name":"_signature","type":"bytes","internalType":"bytes"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotEnoughGas","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_gasLeft","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrantCall","inputs":[]},{"type":"error","name":"Reverted","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_returnData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"UnusedSnapshot","inputs":[{"name":"_snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"WrongChainedCheckpointOrder","inputs":[{"name":"_nextCheckpoint","type":"uint256","internalType":"uint256"},{"name":"_checkpoint","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_entryPoint\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"}],\"name\":\"BadNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainedSignatureNestedInChainedSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC4337Disabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"HookAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"HookDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ImageHashIsZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidERC1271Signature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_entrypoint\",\"type\":\"address\"}],\"name\":\"InvalidEntryPoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPackedLength\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSapientSignature\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_expires\",\"type\":\"uint256\"}],\"name\":\"InvalidStaticSignatureExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_expectedCaller\",\"type\":\"address\"}],\"name\":\"InvalidStaticSignatureWrongCaller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasLeft\",\"type\":\"uint256\"}],\"name\":\"NotEnoughGas\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"_snapshot\",\"type\":\"tuple\"}],\"name\":\"UnusedSnapshot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nextCheckpoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_checkpoint\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"CallAborted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"CallSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"DefinedHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newImageHash\",\"type\":\"bytes32\"}],\"name\":\"ImageHashUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"ImplementationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"StaticSignatureSet\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INIT_CODE_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAGE_2_IMPLEMENTATION\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"addHook\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"entrypoint\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"executeUserOp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"getStaticSignature\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"readHook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"}],\"name\":\"readNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverPartialSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValidImage\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"removeHook\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"selfExecute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"setStaticSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"tokenReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"tokensReceived\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"}],\"name\":\"updateImplementation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"missingAccountFunds\",\"type\":\"uint256\"}],\"name\":\"validateUserOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"addHook(bytes4,address)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"implementation\":\"The implementation address of the hook\",\"selector\":\"The selector of the hook\"}},\"execute(bytes,bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature\"}},\"executeUserOp(bytes)\":{\"details\":\"This is the execute function for the EntryPoint to call.\",\"params\":{\"_payload\":\"The packed payload\"}},\"getImplementation()\":{\"returns\":{\"_0\":\"implementation The implementation\"}},\"getStaticSignature(bytes32)\":{\"params\":{\"_hash\":\"The hash to get the static signature for\"},\"returns\":{\"_0\":\"address The address associated with the static signature\",\"_1\":\"timestamp The timestamp of the static signature\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"_0\":\"Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"The list of token IDs being transferred\",\"operator\":\"The address which initiated the transfer\",\"values\":\"The amounts of each token being transferred\"},\"returns\":{\"_0\":\"On a success, the selector of the function that was called\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"operator\":\"The address which initiated the transfer\",\"tokenId\":\"The ID of the token being transferred\",\"value\":\"The amount of token being transferred\"},\"returns\":{\"_0\":\"On a success, the selector of the function that was called\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"operator\":\"The address which initiated the transfer\",\"tokenId\":\"The ID of the token being transferred\"},\"returns\":{\"_0\":\"On a success, the selector of the function that was called\"}},\"readHook(bytes4)\":{\"params\":{\"selector\":\"The selector of the hook\"},\"returns\":{\"_0\":\"implementation The implementation address of the hook\"}},\"readNonce(uint256)\":{\"params\":{\"_space\":\"The space\"},\"returns\":{\"_0\":\"nonce The nonce\"}},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature to recover\"},\"returns\":{\"checkpoint\":\"The checkpoint identifier\",\"imageHash\":\"The derived image hash\",\"isValidImage\":\"Whether the image hash is valid\",\"opHash\":\"The hash of the payload\",\"threshold\":\"The signature threshold\",\"weight\":\"The derived weight\"}},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"payload\":\"The payload to recover the signature from\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"_0\":\"The recovered image hash\"}},\"removeHook(bytes4)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"selector\":\"The selector of the hook\"}},\"selfExecute(bytes)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"_payload\":\"The payload\"}},\"setStaticSignature(bytes32,address,uint96)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_address\":\"The address to associate with the static signature\",\"_hash\":\"The hash to set the static signature for\",\"_timestamp\":\"The timestamp of the static signature\"}},\"tokenReceived(address,uint256,bytes)\":{\"params\":{\"data\":\"Transaction metadata\",\"from\":\"The address which previously owned the tokens\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"The signature of the function to be called\"}},\"tokensReceived(address,address,address,uint256,bytes,bytes)\":{\"params\":{\"amount\":\"The amount of tokens being transferred\",\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the tokens\",\"operator\":\"The address which initiated the transfer\",\"operatorData\":\"Additional data with no specified format\",\"to\":\"The address which is receiving the tokens\"}},\"updateImageHash(bytes32)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_imageHash\":\"The new image hash\"}},\"updateImplementation(address)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"_implementation\":\"The new implementation\"}},\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"details\":\"Must validate caller is the entryPoint. Must validate the signature and nonce\",\"params\":{\"missingAccountFunds\":\"- Missing funds on the account's deposit in the entrypoint. This is the minimum amount to transfer to the sender(entryPoint) to be able to make the call. The excess is left as a deposit in the entrypoint for future calls. Can be withdrawn anytime using \\\"entryPoint.withdrawTo()\\\". In case there is a paymaster in the request (or the current deposit is high enough), this value will be zero.\",\"userOp\":\"- The operation that is about to be executed.\",\"userOpHash\":\"- Hash of the user's request data. can be used as the basis for signature.\"},\"returns\":{\"validationData\":\" - Packaged ValidationData structure. use `_packValidationData` and `_unpackValidationData` to encode and decode. <20-byte> aggregatorOrSigFail - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \\\"aggregator\\\" contract. <6-byte> validUntil - Last timestamp this operation is valid at, or 0 for \\\"indefinitely\\\" <6-byte> validAfter - First timestamp this operation is valid If an account doesn't use time-range, it is enough to return SIG_VALIDATION_FAILED value (1) for signature failure. Note that the validation code cannot use block.timestamp (or block.number) directly.\"}}},\"title\":\"Stage1Module\",\"version\":1},\"userdoc\":{\"errors\":{\"BadNonce(uint256,uint256,uint256)\":[{\"notice\":\"Error thrown when the nonce is bad\"}],\"ChainedSignatureNestedInChainedSignature()\":[{\"notice\":\"Error thrown when a chained signature is nested inside another chained signature\"}],\"HookAlreadyExists(bytes4)\":[{\"notice\":\"Error thrown when a hook already exists\"}],\"HookDoesNotExist(bytes4)\":[{\"notice\":\"Error thrown when a hook does not exist\"}],\"ImageHashIsZero()\":[{\"notice\":\"Error thrown when the image hash is zero\"}],\"InvalidERC1271Signature(bytes32,address,bytes)\":[{\"notice\":\"Error thrown when the ERC1271 signature is invalid\"}],\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidPackedLength()\":[{\"notice\":\"Error thrown when the encoding is invalid\"}],\"InvalidSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when the sapient signature is invalid\"}],\"InvalidSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when a signature is invalid\"}],\"InvalidSignatureFlag(uint256)\":[{\"notice\":\"Error thrown when the signature flag is invalid\"}],\"InvalidSignatureWeight(uint256,uint256)\":[{\"notice\":\"Error thrown when the signature weight is invalid\"}],\"InvalidStaticSignatureExpired(bytes32,uint256)\":[{\"notice\":\"Error thrown when the static signature has expired\"}],\"InvalidStaticSignatureWrongCaller(bytes32,address,address)\":[{\"notice\":\"Error thrown when the static signature has the wrong caller\"}],\"LowWeightChainedSignature(bytes,uint256,uint256)\":[{\"notice\":\"Error thrown when the weight is too low for a chained signature\"}],\"NotEnoughGas((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),uint256,uint256)\":[{\"notice\":\"Error thrown when there is not enough gas\"}],\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}],\"ReentrantCall()\":[{\"notice\":\"Error thrown when a reentrant call is detected\"}],\"Reverted((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),uint256,bytes)\":[{\"notice\":\"Error thrown when a call reverts\"}],\"UnusedSnapshot((bytes32,uint256))\":[{\"notice\":\"Error thrown when the snapshot is unused\"}],\"WrongChainedCheckpointOrder(uint256,uint256)\":[{\"notice\":\"Error thrown when the checkpoint order is wrong\"}]},\"events\":{\"CallAborted(bytes32,uint256,bytes)\":{\"notice\":\"Emitted when a call is aborted\"},\"CallFailed(bytes32,uint256,bytes)\":{\"notice\":\"Emitted when a call fails\"},\"CallSkipped(bytes32,uint256)\":{\"notice\":\"Emitted when a call is skipped\"},\"CallSucceeded(bytes32,uint256)\":{\"notice\":\"Emitted when a call succeeds\"},\"DefinedHook(bytes4,address)\":{\"notice\":\"Emitted when a hook is defined\"},\"ImageHashUpdated(bytes32)\":{\"notice\":\"Emitted when the image hash is updated\"},\"ImplementationUpdated(address)\":{\"notice\":\"Emitted when the implementation is updated\"},\"NonceChange(uint256,uint256)\":{\"notice\":\"Emitted when the nonce is changed\"},\"StaticSignatureSet(bytes32,address,uint96)\":{\"notice\":\"Event emitted when a static signature is set\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Factory address\"},\"INIT_CODE_HASH()\":{\"notice\":\"Initialization code hash\"},\"STAGE_2_IMPLEMENTATION()\":{\"notice\":\"Stage 2 implementation address\"},\"addHook(bytes4,address)\":{\"notice\":\"Add a hook\"},\"execute(bytes,bytes)\":{\"notice\":\"Execute a call\"},\"executeUserOp(bytes)\":{\"notice\":\"Execute a user operation\"},\"getImplementation()\":{\"notice\":\"Get the implementation\"},\"getStaticSignature(bytes32)\":{\"notice\":\"Get the static signature for a specific hash\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Called when multiple ERC1155 tokens are transferred to this contract\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"notice\":\"Called when a single ERC1155 token is transferred to this contract\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Called when a single ERC721 token is transferred to this contract\"},\"readHook(bytes4)\":{\"notice\":\"Read a hook\"},\"readNonce(uint256)\":{\"notice\":\"Read the nonce\"},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recover the partial signature\"},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recovers the image hash of a given signature\"},\"removeHook(bytes4)\":{\"notice\":\"Remove a hook\"},\"selfExecute(bytes)\":{\"notice\":\"Execute a call\"},\"setStaticSignature(bytes32,address,uint96)\":{\"notice\":\"Set the static signature for a specific hash\"},\"tokenReceived(address,uint256,bytes)\":{\"notice\":\"Called when ERC223 tokens are received by this contract\"},\"tokensReceived(address,address,address,uint256,bytes,bytes)\":{\"notice\":\"Called when tokens are received by this contract\"},\"updateImageHash(bytes32)\":{\"notice\":\"Update the image hash\"},\"updateImplementation(address)\":{\"notice\":\"Update the implementation\"},\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"notice\":\"Validate user's signature and nonce the entryPoint will make the call to the recipient only if this validation call returns successfully. signature failure should be reported by returning SIG_VALIDATION_FAILED (1). This allows making a \\\"simulation call\\\" without a valid signature Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\"}},\"notice\":\"The initial stage of the wallet\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Stage1Module.sol\":\"Stage1Module\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/Stage1Module.sol\":{\"keccak256\":\"0x3e3be2778ac65aded03c15a73b4382a6a7dde0bcc69d1268255fd734e320d084\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c4d8846d35267bf7bc895c04e3d91b525274ae0677ec3b5529cba02577a2bb67\",\"dweb:/ipfs/QmaZq74rdyLUwRGCfacFXVS7kAL2FhTm3u356kHLtggfiW\"]},\"src/Stage2Module.sol\":{\"keccak256\":\"0xd0b2c2fead81d32a3f83f95bd1dd2d90677fdd1e0a7194a25710ffd0fdaee428\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8489e75346dbf462b0567da30c2e020cdde3975c38bdfee055284642a3bd2d19\",\"dweb:/ipfs/QmTDM2AkG8qLVjfn35UcXN89CdQS8p3Cm888EadYrMAYAR\"]},\"src/Wallet.sol\":{\"keccak256\":\"0xe01e9e937dd8d7572976ccc8ec3ec87e4a557069dafb05f85977a7b71f5c58d5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9ab78d33655f8e822258dff3f2d5ad01e84f6dc90174840d5a283b8e6413c1\",\"dweb:/ipfs/QmNMyYe3C1fs3cxKmUZ3S9VU5EE4WVWPVcwiGbgvbS1vrH\"]},\"src/modules/Calls.sol\":{\"keccak256\":\"0xa1341a9dc102ceec53bcdff123322e7ecb19cec6101086944c87552284969eeb\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36619e8abb171d9f812be49572fba6d64dd62c0d7a6fb674cde1a0cf28a5f919\",\"dweb:/ipfs/QmWR45P7Q4M44QfyNQvA3ThMyApz3snMJVRin8ujq2ouQK\"]},\"src/modules/ERC4337v07.sol\":{\"keccak256\":\"0x4c73f4de4d7652935731b539c8055b822b83c7c2d2220a5d54025e263f54b188\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c310e22792d3d057ae14abb22bd6979a240fb46bd2566efc78425c0b37f46c9b\",\"dweb:/ipfs/QmWAUctttbEEJnRHnRHtfGPT5YDzqo1Zw72z82LiusESKn\"]},\"src/modules/Hooks.sol\":{\"keccak256\":\"0xd1f9de45b83ae5f9f32a4d1c709d7a2b6543b1cddd09bf69d401dcdf1d154ab7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bf3161edf37479825588e07039752b79792666455cc0beb1ca0e873b3be31ad4\",\"dweb:/ipfs/QmYYpJeSsRgRx2oHcpvhqsNs7ZtDhVnxLmFpXz5eYcS8g4\"]},\"src/modules/Implementation.sol\":{\"keccak256\":\"0x16546d4be07865808890308750916b0a9a55e7a994a458c01edde4618f29b4e6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1b1f9785b08c9f29d6849ba2d3dee89fa3ea5f3c2feec4a59a6d1040e3fbe040\",\"dweb:/ipfs/QmU2Pm5C3Ztky7RQdCZggavyq7Eh1eS1HFqVz9jZKiMUML\"]},\"src/modules/Nonce.sol\":{\"keccak256\":\"0x56fbf6dc9b34ab60ae8a32ffb6f583c003bb8f4a5223ce704e982400fa403fab\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://492f53628633b862702cf8f9b726067a722c94028133a8a4c4fcf3d0e73ad803\",\"dweb:/ipfs/QmTHNy4XbH47YZaqKDpknb5aApjRH9HVAREHN7N5vEFWEV\"]},\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/ReentrancyGuard.sol\":{\"keccak256\":\"0x566e105b1a53f49cf099037f3cb4a9739522d72739dc65f1169b97e4fbe07b32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d811a16613746e5290eab76eb4055d98a1e64e1086632697d09b0a3759a6bac5\",\"dweb:/ipfs/QmPJ33JvAxwn1sTCNvYG2TWsFo991KND2ia8JcvZ26Dge9\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]},\"src/modules/auth/BaseAuth.sol\":{\"keccak256\":\"0x1aea32726fe1e8c204805a01fde5a7c832caa76960bf57bbaa2cf13e6804b9dc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://851b09d56bfc9b2f2025f1351ca2a4ae5e9c82e8fb26e58216cff849fc9f8320\",\"dweb:/ipfs/QmeHcagSWRPXR1ac1jEChoYTDzfhLyvfGKAgfu4nc3uctc\"]},\"src/modules/auth/BaseSig.sol\":{\"keccak256\":\"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46\",\"dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ\"]},\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]},\"src/modules/auth/Stage1Auth.sol\":{\"keccak256\":\"0x1d6cb4c5d83e590646455a3224127cda36f3b32c49a905e73ae6beacd8eca724\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://931d7a564a48fbea5ec6b106d1f360d3380944d3590ab68ec7d1738dc2d38232\",\"dweb:/ipfs/QmVAsitTWYphQ7auDUeoFXiav6NJJXQNjQDv8nrJJrHsrZ\"]},\"src/modules/auth/Stage2Auth.sol\":{\"keccak256\":\"0x1379c28123f916c31becaa5830844d4fe22bb714909d19192f3608c636545d9b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e21c5628ab474d6cc8a2967da2efb08c848cf2ccb56999ee1372d56d8d24dd7c\",\"dweb:/ipfs/QmYEC9i4Bbq5p3pK7q8QniNNURLh9du5iXWU613enRM7tf\"]},\"src/modules/interfaces/IAccount.sol\":{\"keccak256\":\"0x64ca3bb59ec4fc0a60d80402802365e2d5226afe7e7aabe3b21df936c84f2bcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccfd2381e1874cdec2f473a9a17799a3b57360c0593d68ee66fcea9c16eb39b4\",\"dweb:/ipfs/QmcjbJpGz3Exmu4fsj953Y2bG8rtQaVMEFUgT6W2dUXomr\"]},\"src/modules/interfaces/IAuth.sol\":{\"keccak256\":\"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353\",\"dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp\"]},\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]},\"src/modules/interfaces/IDelegatedExtension.sol\":{\"keccak256\":\"0xa2ae897e90fd70dd4a9e172bc04d019ba9c512e72c2df65fcb6daf87dd5ceb90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cdf4b7c3dfb0aef6c9dbe8b2a0542018dc756ef2252d7101bcb3186192da0a11\",\"dweb:/ipfs/QmPHCVu1DJ7fBrPBYA5y3hoF3a3XFEBwYCZ1ErGaxPhcYL\"]},\"src/modules/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0xa23d0bc29233a91085922ea8a7e2cbe8b5f3358d3f2c3cdc58adade9a171d9c1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2f06b8f3ae7a45441cc26da5b2ddd15ba76d1664178958f63f536e6c5e4fd0fb\",\"dweb:/ipfs/QmR1Rnk8ciSn5s5wNLGvpE1QNRDsBVDfDT1ZXhei2brmFj\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/IERC223Receiver.sol\":{\"keccak256\":\"0x426221c0d48b651ed692edfa5388d6e5304e94f48598a71748134b2659e3890d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9e1ed2fd5e390b5b943dc07c2e0ea9e524eb37263dc72c482365c159fc3659e5\",\"dweb:/ipfs/QmWRDBvb1cthVPm4BSzKX3J5GpGGSBuDokkpRK9x5aA7JR\"]},\"src/modules/interfaces/IERC721Receiver.sol\":{\"keccak256\":\"0xbe14c3b727f283a467dc2f2221d3322c5a69cd64a3aacad85acab05e94438f35\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://43ef086c509b8b88cae78f67c4bd979fd427736972cfe56f7423371ccc154e63\",\"dweb:/ipfs/Qmc7Yp7Z1dQ925gzEZYVNUXnWr3YomvWkXfaGYLZpoy8J3\"]},\"src/modules/interfaces/IERC777Receiver.sol\":{\"keccak256\":\"0xd9144d439a96b0c6439cd9a186701aa530f4f782ff09fdbf6c3ef16b78b0d4e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d1f17484eda7184db4a00106b4952f15c1517872cbfe19663d6fce4e042729b2\",\"dweb:/ipfs/QmWdhYmLNkUpgvPpSyGHstxrFwMfhRTVmxDpe4frkUu1Qh\"]},\"src/modules/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0xd19922ea7a8ae09072a721138dc93e175fa77ecaa3ac6f2d759d5e5e944fb665\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20ecea69ddd4d8787c0bdc4487dea03e90f63f4296674a12728e331a78e62620\",\"dweb:/ipfs/QmZUrX8zEqfHZEJQjNtDUXGS47bj2UuRCLfbkLPrXsot1c\"]},\"src/modules/interfaces/IPartialAuth.sol\":{\"keccak256\":\"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519\",\"dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"61010080604052346101ae576040816182bf803803809161002082856101b3565b8339810103126101ae5761003f6020610038836101d6565b92016101d6565b604051909190613fcf808201906001600160401b0382118383101761018c5760209183916142f083396001600160a01b03861681520301906000f09081156101a257604051606081016001600160401b0381118282101761018c576040908152602f82527f6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d305460208301526e5af43d82803e903d91601f57fd5bf360881b82820152519060005b602f811061017757505030604f820152604f8152610104606f826101b3565b805160209091012060805260a0526001600160a01b031660c05260e05260405161410590816101eb8239608051818181610c510152613d29015260a051818181610d9f0152613cfa015260c051818181610d060152611244015260e0518181816110dd015281816112b30152611b1a0152f35b806020809284010151828286010152016100e5565b634e487b7160e01b600052604160045260246000fd5b6040513d6000823e3d90fd5b600080fd5b601f909101601f19168101906001600160401b0382119082101761018c57604052565b51906001600160a01b03821682036101ae5756fe6080604052600436101561001e575b361561001c5761001c611da2565b005b60003560e01c806223de29146101ad578063025b22bc146101a857806313792a4a146101a3578063150b7a021461019e5780631626ba7e1461019957806319822f7c146101945780631a9b23371461018f5780631f6a1eb91461018a578063257671f51461018557806329561426146101805780632dd310001461017b5780634fcf3eca146101765780636ea44577146101715780638943ec021461016c5780638c3f55631461016757806392dcb3fc146101625780639c145aed1461015d5780639f69ef5414610158578063a65d69d414610153578063aaf10f421461014e578063ad55366b14610149578063b93ea7ad14610144578063bc197c811461013f578063f23a6e611461013a5763f727ef1c0361000e57611632565b6115a5565b6114d3565b611374565b611328565b6112d7565b611268565b6111f9565b61106a565b61100c565b610fd0565b610f4c565b610f1d565b610dc3565b610d54565b610c74565b610c1b565b610aff565b610a9c565b6109e7565b61095f565b6108d2565b6107d5565b6102fb565b61026f565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101d557565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101d557565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101d557565b359073ffffffffffffffffffffffffffffffffffffffff821682036101d557565b9181601f840112156101d55782359167ffffffffffffffff83116101d557602083818601950101116101d557565b346101d55760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576102a66101b2565b506102af6101da565b506102b86101fd565b5060843567ffffffffffffffff81116101d5576102d9903690600401610241565b505060a43567ffffffffffffffff81116101d55761001c903690600401610241565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55761032d6101b2565b30330361033d5761001c90611e6b565b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff8211176103b657604052565b61036b565b6040810190811067ffffffffffffffff8211176103b657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176103b657604052565b6040519061042760e0836103d7565b565b60405190610427610120836103d7565b359060ff821682036101d557565b359081151582036101d557565b67ffffffffffffffff81116103b65760051b60200190565b67ffffffffffffffff81116103b657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926104b28261046c565b916104c060405193846103d7565b8294818452818301116101d5578281602093846000960137010152565b9080601f830112156101d5578160206104f8933591016104a6565b90565b81601f820112156101d55780359061051282610454565b9261052060405194856103d7565b82845260208085019360051b830101918183116101d55760208101935b83851061054c57505050505090565b843567ffffffffffffffff81116101d557820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082860301126101d557610593610418565b916105a060208301610220565b83526040820135602084015260608201359267ffffffffffffffff84116101d55760e0836105d58860208098819801016104dd565b6040840152608081013560608401526105f060a08201610447565b608084015261060160c08201610447565b60a0840152013560c082015281520194019361053d565b9080601f830112156101d557813561062f81610454565b9261063d60405194856103d7565b81845260208085019260051b8201019283116101d557602001905b8282106106655750505090565b6020809161067284610220565b815201910190610658565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101d55760043567ffffffffffffffff81116101d5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82850301126101d5576106ef610429565b906106fc81600401610439565b825261070a60248201610447565b6020830152604481013567ffffffffffffffff81116101d557846004610732928401016104fb565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff81116101d55784600461076e928401016104dd565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116101d557600485916107ab930101610618565b610100820152916024359067ffffffffffffffff82116101d5576107d191600401610241565b9091565b346101d5576107e33661067d565b90916101008101926107fe6107f985515161173a565b61175a565b9160005b85518051821015610865579061085f61083a610820836001956117d8565b5173ffffffffffffffffffffffffffffffffffffffff1690565b61084483886117d8565b9073ffffffffffffffffffffffffffffffffffffffff169052565b01610802565b505083838661087a33610844835151856117d8565b52610886818484611eba565b50156108985760405160018152602090f35b6108ce906040519384937ff58cc8b500000000000000000000000000000000000000000000000000000000855260048501611a33565b0390fd5b346101d55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576109096101b2565b506109126101da565b5060643567ffffffffffffffff81116101d557610933903690600401610241565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b346101d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55760043560243567ffffffffffffffff81116101d5576020916109b76109bd923690600401610241565b91611a58565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346101d55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55760043567ffffffffffffffff81116101d5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126101d557610a6a60209160243560443591600401611b01565b604051908152f35b7fffffffff000000000000000000000000000000000000000000000000000000008116036101d557565b346101d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576020610ae1600435610adc81610a72565b6120ca565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55760043567ffffffffffffffff81116101d557610b49903690600401610241565b60243567ffffffffffffffff81116101d557610b69903690600401610241565b9160027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610be657610bc09360027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55611c6b565b60017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b7f37ed32e80000000000000000000000000000000000000000000000000000000060005260046000fd5b60009103126101d557565b346101d55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55760043530330361033d578015610d2a576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a161001c7f0000000000000000000000000000000000000000000000000000000000000000611e6b565b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b346101d55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557600435610df981610a72565b30330361033d5773ffffffffffffffffffffffffffffffffffffffff610e1e826120ca565b1615610e845760407fffffffff000000000000000000000000000000000000000000000000000000007f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19216610e75600082612ea4565b815190815260006020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f1c3812cc000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101d5576004359067ffffffffffffffff82116101d5576107d191600401610241565b610f2636610ed4565b9030330361033d57610f3c61001c925a926121ff565b90610f46826128a3565b9061257e565b346101d55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557610f836101b2565b5060443567ffffffffffffffff81116101d557610fa4903690600401610241565b505060206040517f8943ec02000000000000000000000000000000000000000000000000000000008152f35b346101d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576020610a6a600435612937565b346101d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557604061104860043561297d565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346101d55761107836610ed4565b9060027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610be65760027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156111cf5733036111a157303b156101d55761114b9160009160405193849283927f6ea4457700000000000000000000000000000000000000000000000000000000845260048401611d61565b038183305af1801561119c576111815760017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b806111906000611196936103d7565b80610c10565b38610bc0565b611aa4565b7f1d6ddbf4000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7fd13d78350000000000000000000000000000000000000000000000000000000060005260046000fd5b346101d55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101d55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101d55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576020305473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346101d55760c061134460008061133e3661067d565b91612a7e565b92611350839293613c96565b906040519586526020860152151560408501526060840152608083015260a0820152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576004356113aa81610a72565b6113b26101da565b9030330361033d5773ffffffffffffffffffffffffffffffffffffffff6113d8826120ca565b16611452577f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19173ffffffffffffffffffffffffffffffffffffffff7fffffffff000000000000000000000000000000000000000000000000000000006040931691166114458183612ea4565b82519182526020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f5b4d6d6a000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b9181601f840112156101d55782359167ffffffffffffffff83116101d5576020808501948460051b0101116101d557565b346101d55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55761150a6101b2565b506115136101da565b5060443567ffffffffffffffff81116101d5576115349036906004016114a2565b505060643567ffffffffffffffff81116101d5576115569036906004016114a2565b505060843567ffffffffffffffff81116101d557611578903690600401610241565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346101d55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576115dc6101b2565b506115e56101da565b5060843567ffffffffffffffff81116101d557611606903690600401610241565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b346101d55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55760043561166c6101da565b604435916bffffffffffffffffffffffff83168093036101d55730330361033d578273ffffffffffffffffffffffffffffffffffffffff836116f77febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1967fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606097881b161785612e20565b6040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906001820180921161174857565b61170b565b9190820180921161174857565b9061176482610454565b61177160405191826103d7565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061179f8294610454565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156117ec5760209160051b010190565b6117a9565b919082519283825260005b84811061183b5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016117fc565b9080602083519182815201916020808360051b8301019401926000915b83831061187c57505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c0806118ef604085015160e0604086015260e08501906117f1565b936060810151606085015260808101511515608085015260a0810151151560a085015201519101529701930193019193929061186d565b906020808351928381520192019060005b8181106119445750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611937565b805160ff1682526104f8916020828101511515908201526101006119ce6119a860408501516101206040860152610120850190611850565b606085015160608501526080850151608085015260a085015184820360a08601526117f1565b9260c081015160c084015260e081015160e0840152015190610100818403910152611926565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b91611a4a6104f89492604085526040850190611970565b9260208185039101526119f4565b90611a759291611a6661206f565b906003825260e0820152611eba565b5015611a9f577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b6040513d6000823e3d90fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156101d5570180359067ffffffffffffffff82116101d5576020019181360383136101d557565b909173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169081156111cf578133036111a15780611bb5575b5050611ba57f1626ba7e00000000000000000000000000000000000000000000000000000000926109b7836101007fffffffff00000000000000000000000000000000000000000000000000000000950190611ab0565b1603611bb057600090565b600190565b813b156101d5576040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015291600091839160249183915af192831561119c576109b77fffffffff0000000000000000000000000000000000000000000000000000000093611ba5937f1626ba7e0000000000000000000000000000000000000000000000000000000096611c56575b5093505092611b4e565b806111906000611c65936103d7565b38611c4c565b91939290611c7a905a936121ff565b9160608301516080840151611c8e82612937565b818103611d2d57509060017f1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881920190611cc78282612e65565b604080519182526020820192909252a1611ce2828685611eba565b929015611cf5575061042793945061257e565b836108ce87926040519384937fa2b6d61b00000000000000000000000000000000000000000000000000000000855260048501611a33565b917f9b6514f40000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b9160206104f89381815201916119f4565b3d15611d9d573d90611d838261046c565b91611d9160405193846103d7565b82523d6000602084013e565b606090565b600436108015611daf5750565b611de5906000357fffffffff00000000000000000000000000000000000000000000000000000000811691611e37575b506120ca565b73ffffffffffffffffffffffffffffffffffffffff8116611e035750565b60008091604051368382378036810184815203915af4611e21611d72565b9015611e2f57602081519101f35b602081519101fd5b7fffffffff000000000000000000000000000000000000000000000000000000008092503660040360031b1b161638611ddf565b60207f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca039180305573ffffffffffffffffffffffffffffffffffffffff60405191168152a1565b90156117ec5790565b611eed611ec78484611eb1565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f800000000000000000000000000000000000000000000000000000000000000080821614611f705750611f25926000928392612a7e565b905091909192808210611f40575050611f3d90613c96565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f0200000000000000000000000000000000000000000000000000000000000000908116146020820152611fa6925090506128a3565b90611fb08261297d565b4281111561203d575073ffffffffffffffffffffffffffffffffffffffff81168015159081612032575b50611fe6575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b905033141538611fda565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff8211176103b6576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b73ffffffffffffffffffffffffffffffffffffffff906040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208452166040820152604081526121416060826103d7565b519020541690565b9061215382610454565b61216060405191826103d7565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061218e8294610454565b019060005b82811061219f57505050565b6020906040516121ae8161039a565b60008152600083820152606060408201526000606082015260006080820152600060a0820152600060c082015282828501015201612193565b909392938483116101d55784116101d5578101920390565b9061220861206f565b6000815291600190803560f81c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316016124d75750600060608601525b600761225760ff831660011c90565b1680612486575b50601081811603612458575060015b61227681612149565b604086019081526000925b8284106122be5750505050036122945790565b7f0bdf80380000000000000000000000000000000000000000000000000000000060005260046000fd5b9293919290918082013560f81c906001019490856001808316036124365750612308306122ec8487516117d8565b519073ffffffffffffffffffffffffffffffffffffffff169052565b600280821614612416575b6004808216146123c8575b600880821614612393575b9061237a61237460c0846123546010806001981614608061234b888c516117d8565b51019015159052565b61236a60208083161460a061234b888c516117d8565b1660061c60031690565b60ff1690565b60c06123878387516117d8565b51015201929190612281565b946001919061237a906123749060c0908681013590602001999060606123ba878b516117d8565b510152939450505050612329565b94612410908381013560e81c906003016124096123f06123e8848461174d565b838c896121e7565b919060406123ff888b516117d8565b51019236916104a6565b905261174d565b9461231e565b9482810135906020019590602061242e8487516117d8565b510152612313565b61245396508381013560601c9060140196906122ec8487516117d8565b612308565b60209081160361247557600282019181013560f01c905b9061226d565b600182019181013560f81c9061246f565b6124ca919383929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b929060808601523861225e565b80830135606090811c908701526014019250612248565b61250660409295949395606083526060830190611970565b9460208201520152565b926104f896959260c09592855260208501526040840152606083015260808201528160a082015201906117f1565b6040906104f89392815281602082015201906117f1565b61256b6104f89492606083526060830190611970565b92602082015260408184039101526117f1565b916000604082019384515190825b82811061259d575b50505050505050565b6125a88188516117d8565b51936125b760a0860151151590565b8061289b575b612861575060009360608101518015801580612858575b6128205784906125e76080850151151590565b156127da576126929261260e855173ffffffffffffffffffffffffffffffffffffffff1690565b91156127d457505a905b61268d8b61266160608d01516040890151908c8b604051998a967f4c4e814c00000000000000000000000000000000000000000000000000000000602089015260248801612510565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846103d7565b612df3565b156126db575b50600190867f5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a604051806126d185829190602083019252565b0390a25b0161258c565b60c00180511561278b57600181511461274c57516002146126fc5738612698565b93505050507fc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b91925061272d612e05565b9061273d6040519283928361253e565b0390a238808080808080612594565b50846108ce612759612e05565b6040519384937f7f6b0bb100000000000000000000000000000000000000000000000000000000855260048501612555565b50925060018093867f115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d6127cc6127bf612e05565b604051918291868361253e565b0390a26126d5565b90612618565b835161281593925073ffffffffffffffffffffffffffffffffffffffff169160208501519160001461281a57505a905b604085015192612de1565b612692565b9061280a565b83886108ce5a6040519384937f21395274000000000000000000000000000000000000000000000000000000008552600485016124ee565b50815a106125d4565b9350600190867f9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b604051806127cc85829190602083019252565b5080156125bd565b6129056129316128c36128bd602085015115153090612ee3565b93612fde565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826103d7565b51902090565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e83526040820152604081526129766060826103d7565b5190205490565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8683526040820152604081526129bc6060826103d7565b51902054906bffffffffffffffffffffffff8260601c921690565b604051906129e4826103bb565b60006020838281520152565b600311156129fa57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b908160409103126101d557602060405191612a43836103bb565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff6104f8949316815281602082015201906117f1565b909491939291853560f81c600190938190612a976129d7565b92612aa1826129f0565b60018203612cab575b50600180871614612c4a575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908096918196602016612b199060051c90565b612b229061173a565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a81612b6e846128a3565b988993612b7a936121e7565b91612b8493613420565b9098612b9891600052602052604060002090565b90612bab91600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16612bd491600052602052604060002090565b94815190868215159283612c3f575b505081612c30575b50612bf35750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b90506020820151101538612beb565b141591508638612be3565b909691939450612c5c819893986129f0565b612c8157612c769581612c6e936121e7565b9390926131d3565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06040881601612aaa578981013560601c9750601401915087878a84612cf4856129f0565b60028503612d05575b505050612aaa565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c92604092612d8a929091612d5591612d4e918a90612d48898361174d565b926121e7565b36916104a6565b83519586809481937fccce3bc80000000000000000000000000000000000000000000000000000000083523060048401612a51565b0392165afa801561119c57612da892600091612db2575b509361174d565b9087388a81612cfd565b612dd4915060403d604011612dda575b612dcc81836103d7565b810190612a29565b38612da1565b503d612dc2565b9160009391849360208451940192f190565b9160009291839260208351930191f490565b3d90604051916020818401016040528083526000602084013e565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612e5f6060826103d7565b51902055565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8352604082015260408152612e5f6060826103d7565b60405160208101917fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208352604082015260408152612e5f6060826103d7565b15612f93576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261293160c0826103d7565b4690612eec565b805160209091019060005b818110612fb25750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612fa5565b610100810151604051612ff981612905602082018095612f9a565b51902090613008815160ff1690565b60ff811680613081575050906129316130246040840151613d93565b9261290560806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b600181036130df57505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466938101938452908101919091526060810192909252906129318160808101612905565b6002810361313557505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4602082019081529181019290925260608201929092526129318160808101612905565b600303613189575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466602082019081529181019290925260608201929092526129318160808101612905565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b9061250690604093969594966060845260608401916119f4565b91949290926000956000956000956000956000956131ef61206f565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b82811061324657505050505050508051151580613238575b612bf35750565b506020810151841115613231565b600381019d50959b509399509197509290919061326a908b9085013560e81c61174d565b958287036133aa578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c0361337b57506132b7916132b0898c9387896121e7565b908b612a7e565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106133355750928b88511461332c575b808b10156132fa57508a60c08501528992959295949194939093613219565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b600088526132db565b8d8f6108ce61334685858c8e6121e7565b9390926040519485947fb006aba0000000000000000000000000000000000000000000000000000000008652600486016131b9565b979899809b926133908b61339794888a6121e7565b9086612a7e565b50929d919c909b929a9092918e8e6132cb565b8a600291613277565b908160209103126101d557516104f881610a72565b6040906104f89492815281602082015201916119f4565b73ffffffffffffffffffffffffffffffffffffffff6104f89593606093835216602082015281604082015201916119f4565b908160209103126101d5575190565b9391909360009460009460005b81811061343b575050505050565b8481013560f881901c9860019092019788979692909160fc1c988915613c2f575060018914613bef5760028914613a2257600389146139f3576004891461397257600689146138d2576005891461388457600789146137bd5760088914613767576009891461363e57600a89146134db577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b9091929394959697506003891697881561362d575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190810190816135539187876121e7565b6040517f898bd9210000000000000000000000000000000000000000000000000000000081529391849161358b918a600485016133c8565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa91821561119c576135ce936000936135fa575b5060ff909a168091019a61405f565b9080156135f457906135e891600052602052604060002090565b955b939291909361342d565b506135e8565b60ff91935061361f9060203d8111613626575b61361781836103d7565b810190613411565b92906135bf565b503d61360d565b8084013560f81c98506001016134f0565b90919293949596975060038916978815613756575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190810190816136b69187876121e7565b6040517f13792a4a000000000000000000000000000000000000000000000000000000008152939184916136ee918b60048501611a33565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa91821561119c57613730936000936135fa575060ff909a168091019a61405f565b908015613750579061374a91600052602052604060002090565b956135ea565b5061374a565b8084013560f81c9850600101613653565b98506020870197509495939492939192909182013561378586614006565b8114613795575b61373090614020565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff985061378c565b975090919293949597600f16968715613872575b602060006137e36138509a9b86613ece565b9c9092918a604051613826816129058a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa1561119c576137309060ff6000519a1680910199613f11565b600189019883013560f81c97506137d1565b9850602087019750949593949293919290918201358085146138aa575b61373090613fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98506138a1565b989091929394959662ffffff98506138f4612374600c8416603f9060021c1690565b91821561395e575b600316801561394d575b90819061393190613929908781013560e81c906003019c168c01809c89896121e7565b90898b613420565b911115613944575b906137309291613f7c565b99820199613939565b50600281019084013560f01c613906565b8482013560f81c92506001909101906138fc565b9750976139c86139d5929394959697600f6139dd93169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866121e7565b908688613420565b9061374a92980198600052602052604060002090565b985096509394929391929091908082013590602001968015613750579061374a91600052602052604060002090565b90919293949596975060038916978815613bde575b8084013560601c99613a969160140190613a569060021c600316612374565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b90810190613afa60208c613aac85858b8b6121e7565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e000000000000000000000000000000000000000000000000000000008552600485016133c8565b0392165afa90811561119c577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091613bb0575b501603613b6c57509060ff61373092991680910199613f11565b6108ce613b7d8c93899389896121e7565b906040519485947fb2fed7ae000000000000000000000000000000000000000000000000000000008652600486016133df565b613bd1915060203d8111613bd7575b613bc981836103d7565b8101906133b3565b38613b52565b503d613bbf565b8381013560f81c9850600101613a37565b98600f91929394959697985016968715613c1e575b60148101976137309160ff9091169084013560601c613f11565b8281013560f81c9750600101613c04565b98509091929394959698600f16978815613c81575b5060206000613c576138509a9b86613ece565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c97506020613c44565b73ffffffffffffffffffffffffffffffffffffffff9060405160208101917fff0000000000000000000000000000000000000000000000000000000000000083527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060601b16602183015260358201527f0000000000000000000000000000000000000000000000000000000000000000605582015260558152613d5c6075826103d7565b51902016301490565b805160209091019060005b818110613d7d5750505090565b8251845260209384019390920191600101613d70565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613dd9613dc383610454565b92613dd160405194856103d7565b808452610454565b0136602083013760005b8351811015613eb55780613df9600192866117d8565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152613ea1610120826103d7565b519020613eae82856117d8565b5201613de3565b5090915060405161293181612905602082018095613d65565b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff81116117485791565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b1660318301526045820152604581526129316065826103d7565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a00000000000000008552603884015260588301526078820152607881526129316098826103d7565b60405160208101917f53657175656e636520737461746963206469676573743a0a000000000000000083526038820152603881526129316058826103d7565b6129056129316128c36128bd600060208601511515612ee3565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a83526040820152604081526129316060826103d7565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d8152612931608d826103d756fea26469706673582212204aded9bebadf620767a8456d364bea5dce9e2213033e4904099efbbfaacb1aca64736f6c634300081c003360a034607457601f613fcf38819003918201601f19168301916001600160401b03831184841017607957808492602094604052833981010312607457516001600160a01b0381168103607457608052604051613f3f90816100908239608051818181611066015281816111cd0152611a340152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001e575b361561001c5761001c611cbc565b005b60003560e01c806223de291461018d578063025b22bc1461018857806313792a4a14610183578063150b7a021461017e5780631626ba7e1461017957806319822f7c146101745780631a9b23371461016f5780631f6a1eb91461016a57806329561426146101655780634fcf3eca1461016057806351605d801461015b5780636ea44577146101565780638943ec02146101515780638c3f55631461014c57806392dcb3fc146101475780639c145aed14610142578063a65d69d41461013d578063aaf10f4214610138578063ad55366b14610133578063b93ea7ad1461012e578063bc197c8114610129578063f23a6e61146101245763f727ef1c0361000e5761154c565b6114bf565b6113ed565b61128e565b611242565b6111f1565b611182565b610ff3565b610f95565b610f59565b610ed5565b610ea6565b610e02565b610ce6565b610c2d565b610b1c565b610ab9565b610a04565b61097c565b6108ef565b6107f2565b6102db565b61024f565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b9181601f840112156101b55782359167ffffffffffffffff83116101b557602083818601950101116101b557565b346101b55760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610286610192565b5061028f6101ba565b506102986101dd565b5060843567ffffffffffffffff81116101b5576102b9903690600401610221565b505060a43567ffffffffffffffff81116101b55761001c903690600401610221565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55761030d610192565b30330361035a576020817f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0392305573ffffffffffffffffffffffffffffffffffffffff60405191168152a1005b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff8211176103d357604052565b610388565b6040810190811067ffffffffffffffff8211176103d357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176103d357604052565b6040519061044460e0836103f4565b565b60405190610444610120836103f4565b359060ff821682036101b557565b359081151582036101b557565b67ffffffffffffffff81116103d35760051b60200190565b67ffffffffffffffff81116103d357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926104cf82610489565b916104dd60405193846103f4565b8294818452818301116101b5578281602093846000960137010152565b9080601f830112156101b557816020610515933591016104c3565b90565b81601f820112156101b55780359061052f82610471565b9261053d60405194856103f4565b82845260208085019360051b830101918183116101b55760208101935b83851061056957505050505090565b843567ffffffffffffffff81116101b557820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082860301126101b5576105b0610435565b916105bd60208301610200565b83526040820135602084015260608201359267ffffffffffffffff84116101b55760e0836105f28860208098819801016104fa565b60408401526080810135606084015261060d60a08201610464565b608084015261061e60c08201610464565b60a0840152013560c082015281520194019361055a565b9080601f830112156101b557813561064c81610471565b9261065a60405194856103f4565b81845260208085019260051b8201019283116101b557602001905b8282106106825750505090565b6020809161068f84610200565b815201910190610675565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82850301126101b55761070c610446565b9061071981600401610456565b825261072760248201610464565b6020830152604481013567ffffffffffffffff81116101b55784600461074f92840101610518565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff81116101b55784600461078b928401016104fa565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116101b557600485916107c8930101610635565b610100820152916024359067ffffffffffffffff82116101b5576107ee91600401610221565b9091565b346101b5576108003661069a565b909161010081019261081b610816855151611654565b611674565b9160005b85518051821015610882579061087c61085761083d836001956116f2565b5173ffffffffffffffffffffffffffffffffffffffff1690565b61086183886116f2565b9073ffffffffffffffffffffffffffffffffffffffff169052565b0161081f565b505083838661089733610861835151856116f2565b526108a3818484611d8e565b50156108b55760405160018152602090f35b6108eb906040519384937ff58cc8b50000000000000000000000000000000000000000000000000000000085526004850161194d565b0390fd5b346101b55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610926610192565b5061092f6101ba565b5060643567ffffffffffffffff81116101b557610950903690600401610221565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b346101b55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043560243567ffffffffffffffff81116101b5576020916109d46109da923690600401610221565b91611972565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126101b557610a8760209160243560443591600401611a1b565b604051908152f35b7fffffffff000000000000000000000000000000000000000000000000000000008116036101b557565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020610afe600435610af981610a8f565b611f9e565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b557610b66903690600401610221565b60243567ffffffffffffffff81116101b557610b86903690600401610221565b9160027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610c0357610bdd9360027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55611b85565b60017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b7f37ed32e80000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043530330361035a578015610cbc576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a1005b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557600435610d1c81610a8f565b30330361035a5773ffffffffffffffffffffffffffffffffffffffff610d4182611f9e565b1615610da75760407fffffffff000000000000000000000000000000000000000000000000000000007f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19216610d98600082612d78565b815190815260006020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f1c3812cc000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b60009103126101b557565b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760207fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf854604051908152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101b5576004359067ffffffffffffffff82116101b5576107ee91600401610221565b610eaf36610e5d565b9030330361035a57610ec561001c925a926120d3565b90610ecf82612777565b90612452565b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610f0c610192565b5060443567ffffffffffffffff81116101b557610f2d903690600401610221565b505060206040517f8943ec02000000000000000000000000000000000000000000000000000000008152f35b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020610a8760043561280b565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576040610fd1600435612851565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346101b55761100136610e5d565b9060027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610c035760027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561115857330361112a57303b156101b5576110d49160009160405193849283927f6ea4457700000000000000000000000000000000000000000000000000000000845260048401611c7b565b038183305af180156111255761110a5760017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b80611119600061111f936103f4565b80610df7565b38610bdd565b6119be565b7f1d6ddbf4000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7fd13d78350000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020305473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346101b55760c061125e6000806112583661069a565b91612952565b9261126a839293613b6a565b906040519586526020860152151560408501526060840152608083015260a0820152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576004356112c481610a8f565b6112cc6101ba565b9030330361035a5773ffffffffffffffffffffffffffffffffffffffff6112f282611f9e565b1661136c577f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19173ffffffffffffffffffffffffffffffffffffffff7fffffffff0000000000000000000000000000000000000000000000000000000060409316911661135f8183612d78565b82519182526020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f5b4d6d6a000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b9181601f840112156101b55782359167ffffffffffffffff83116101b5576020808501948460051b0101116101b557565b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557611424610192565b5061142d6101ba565b5060443567ffffffffffffffff81116101b55761144e9036906004016113bc565b505060643567ffffffffffffffff81116101b5576114709036906004016113bc565b505060843567ffffffffffffffff81116101b557611492903690600401610221565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576114f6610192565b506114ff6101ba565b5060843567ffffffffffffffff81116101b557611520903690600401610221565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576004356115866101ba565b604435916bffffffffffffffffffffffff83168093036101b55730330361035a578273ffffffffffffffffffffffffffffffffffffffff836116117febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1967fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606097881b161785612cf4565b6040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906001820180921161166257565b611625565b9190820180921161166257565b9061167e82610471565b61168b60405191826103f4565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06116b98294610471565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156117065760209160051b010190565b6116c3565b919082519283825260005b8481106117555750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201611716565b9080602083519182815201916020808360051b8301019401926000915b83831061179657505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c080611809604085015160e0604086015260e085019061170b565b936060810151606085015260808101511515608085015260a0810151151560a0850152015191015297019301930191939290611787565b906020808351928381520192019060005b81811061185e5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611851565b805160ff168252610515916020828101511515908201526101006118e86118c26040850151610120604086015261012085019061176a565b606085015160608501526080850151608085015260a085015184820360a086015261170b565b9260c081015160c084015260e081015160e0840152015190610100818403910152611840565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b91611964610515949260408552604085019061188a565b92602081850391015261190e565b9061198f9291611980611f43565b906003825260e0820152611d8e565b50156119b9577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b6040513d6000823e3d90fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156101b5570180359067ffffffffffffffff82116101b5576020019181360383136101b557565b909173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169081156111585781330361112a5780611acf575b5050611abf7f1626ba7e00000000000000000000000000000000000000000000000000000000926109d4836101007fffffffff000000000000000000000000000000000000000000000000000000009501906119ca565b1603611aca57600090565b600190565b813b156101b5576040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015291600091839160249183915af1928315611125576109d47fffffffff0000000000000000000000000000000000000000000000000000000093611abf937f1626ba7e0000000000000000000000000000000000000000000000000000000096611b70575b5093505092611a68565b806111196000611b7f936103f4565b38611b66565b91939290611b94905a936120d3565b9160608301516080840151611ba88261280b565b818103611c4757509060017f1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881920190611be18282612d39565b604080519182526020820192909252a1611bfc828685611d8e565b929015611c0f5750610444939450612452565b836108eb87926040519384937fa2b6d61b0000000000000000000000000000000000000000000000000000000085526004850161194d565b917f9b6514f40000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b91602061051593818152019161190e565b3d15611cb7573d90611c9d82610489565b91611cab60405193846103f4565b82523d6000602084013e565b606090565b600436108015611cc95750565b611cff906000357fffffffff00000000000000000000000000000000000000000000000000000000811691611d51575b50611f9e565b73ffffffffffffffffffffffffffffffffffffffff8116611d1d5750565b60008091604051368382378036810184815203915af4611d3b611c8c565b9015611d4957602081519101f35b602081519101fd5b7fffffffff000000000000000000000000000000000000000000000000000000008092503660040360031b1b161638611cf9565b90156117065790565b611dc1611d9b8484611d85565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f800000000000000000000000000000000000000000000000000000000000000080821614611e445750611df9926000928392612952565b905091909192808210611e14575050611e1190613b6a565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f0200000000000000000000000000000000000000000000000000000000000000908116146020820152611e7a92509050612777565b90611e8482612851565b42811115611f11575073ffffffffffffffffffffffffffffffffffffffff81168015159081611f06575b50611eba575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b905033141538611eae565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff8211176103d3576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b73ffffffffffffffffffffffffffffffffffffffff906040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208452166040820152604081526120156060826103f4565b519020541690565b9061202782610471565b61203460405191826103f4565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06120628294610471565b019060005b82811061207357505050565b602090604051612082816103b7565b60008152600083820152606060408201526000606082015260006080820152600060a0820152600060c082015282828501015201612067565b909392938483116101b55784116101b5578101920390565b906120dc611f43565b6000815291600190803560f81c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316016123ab5750600060608601525b600761212b60ff831660011c90565b168061235a575b5060108181160361232c575060015b61214a8161201d565b604086019081526000925b8284106121925750505050036121685790565b7f0bdf80380000000000000000000000000000000000000000000000000000000060005260046000fd5b9293919290918082013560f81c9060010194908560018083160361230a57506121dc306121c08487516116f2565b519073ffffffffffffffffffffffffffffffffffffffff169052565b6002808216146122ea575b60048082161461229c575b600880821614612267575b9061224e61224860c0846122286010806001981614608061221f888c516116f2565b51019015159052565b61223e60208083161460a061221f888c516116f2565b1660061c60031690565b60ff1690565b60c061225b8387516116f2565b51015201929190612155565b946001919061224e906122489060c09086810135906020019990606061228e878b516116f2565b5101529394505050506121fd565b946122e4908381013560e81c906003016122dd6122c46122bc8484611667565b838c896120bb565b919060406122d3888b516116f2565b51019236916104c3565b9052611667565b946121f2565b948281013590602001959060206123028487516116f2565b5101526121e7565b61232796508381013560601c9060140196906121c08487516116f2565b6121dc565b60209081160361234957600282019181013560f01c905b90612141565b600182019181013560f81c90612343565b61239e919383929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b9290608086015238612132565b80830135606090811c90870152601401925061211c565b6123da6040929594939560608352606083019061188a565b9460208201520152565b9261051596959260c09592855260208501526040840152606083015260808201528160a0820152019061170b565b60409061051593928152816020820152019061170b565b61243f610515949260608352606083019061188a565b926020820152604081840391015261170b565b916000604082019384515190825b828110612471575b50505050505050565b61247c8188516116f2565b519361248b60a0860151151590565b8061276f575b61273557506000936060810151801580158061272c575b6126f45784906124bb6080850151151590565b156126ae57612566926124e2855173ffffffffffffffffffffffffffffffffffffffff1690565b91156126a857505a905b6125618b61253560608d01516040890151908c8b604051998a967f4c4e814c000000000000000000000000000000000000000000000000000000006020890152602488016123e4565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846103f4565b612cc7565b156125af575b50600190867f5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a604051806125a585829190602083019252565b0390a25b01612460565b60c00180511561265f57600181511461262057516002146125d0573861256c565b93505050507fc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b919250612601612cd9565b9061261160405192839283612412565b0390a238808080808080612468565b50846108eb61262d612cd9565b6040519384937f7f6b0bb100000000000000000000000000000000000000000000000000000000855260048501612429565b50925060018093867f115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d6126a0612693612cd9565b6040519182918683612412565b0390a26125a9565b906124ec565b83516126e993925073ffffffffffffffffffffffffffffffffffffffff16916020850151916000146126ee57505a905b604085015192612cb5565b612566565b906126de565b83886108eb5a6040519384937f21395274000000000000000000000000000000000000000000000000000000008552600485016123c2565b50815a106124a8565b9350600190867f9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b604051806126a085829190602083019252565b508015612491565b6127d9612805612797612791602085015115153090612db7565b93612eb2565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826103f4565b51902090565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e835260408201526040815261284a6060826103f4565b5190205490565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8683526040820152604081526128906060826103f4565b51902054906bffffffffffffffffffffffff8260601c921690565b604051906128b8826103d8565b60006020838281520152565b600311156128ce57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b908160409103126101b557602060405191612917836103d8565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff6105159493168152816020820152019061170b565b909491939291853560f81c60019093819061296b6128ab565b92612975826128c4565b60018203612b7f575b50600180871614612b1e575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019080969181966020166129ed9060051c90565b6129f690611654565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a81612a4284612777565b988993612a4e936120bb565b91612a58936132f4565b9098612a6c91600052602052604060002090565b90612a7f91600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16612aa891600052602052604060002090565b94815190868215159283612b13575b505081612b04575b50612ac75750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b90506020820151101538612abf565b141591508638612ab7565b909691939450612b30819893986128c4565b612b5557612b4a9581612b42936120bb565b9390926130a7565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0604088160161297e578981013560601c9750601401915087878a84612bc8856128c4565b60028503612bd9575b50505061297e565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c92604092612c5e929091612c2991612c22918a90612c1c8983611667565b926120bb565b36916104c3565b83519586809481937fccce3bc80000000000000000000000000000000000000000000000000000000083523060048401612925565b0392165afa801561112557612c7c92600091612c86575b5093611667565b9087388a81612bd1565b612ca8915060403d604011612cae575b612ca081836103f4565b8101906128fd565b38612c75565b503d612c96565b9160009391849360208451940192f190565b9160009291839260208351930191f490565b3d90604051916020818401016040528083526000602084013e565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612d336060826103f4565b51902055565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8352604082015260408152612d336060826103f4565b60405160208101917fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208352604082015260408152612d336060826103f4565b15612e67576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261280560c0826103f4565b4690612dc0565b805160209091019060005b818110612e865750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612e79565b610100810151604051612ecd816127d9602082018095612e6e565b51902090612edc815160ff1690565b60ff811680612f5557505090612805612ef86040840151613bcd565b926127d960806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b60018103612fb357505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d4669381019384529081019190915260608101929092529061280581608081016127d9565b6002810361300957505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e46020820190815291810192909252606082019290925261280581608081016127d9565b60030361305d575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d4666020820190815291810192909252606082019290925261280581608081016127d9565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b906123da906040939695949660608452606084019161190e565b91949290926000956000956000956000956000956130c3611f43565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b82811061311a5750505050505050805115158061310c575b612ac75750565b506020810151841115613105565b600381019d50959b509399509197509290919061313e908b9085013560e81c611667565b9582870361327e578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c0361324f575061318b91613184898c9387896120bb565b908b612952565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106132095750928b885114613200575b808b10156131ce57508a60c085015289929592959491949390936130ed565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b600088526131af565b8d8f6108eb61321a85858c8e6120bb565b9390926040519485947fb006aba00000000000000000000000000000000000000000000000000000000086526004860161308d565b979899809b926132648b61326b94888a6120bb565b9086612952565b50929d919c909b929a9092918e8e61319f565b8a60029161314b565b908160209103126101b5575161051581610a8f565b60409061051594928152816020820152019161190e565b73ffffffffffffffffffffffffffffffffffffffff61051595936060938352166020820152816040820152019161190e565b908160209103126101b5575190565b9391909360009460009460005b81811061330f575050505050565b8481013560f881901c9860019092019788979692909160fc1c988915613b03575060018914613ac357600289146138f657600389146138c7576004891461384657600689146137a657600589146137585760078914613691576008891461363b576009891461351257600a89146133af577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b90919293949596975060038916978815613501575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190810190816134279187876120bb565b6040517f898bd9210000000000000000000000000000000000000000000000000000000081529391849161345f918a6004850161329c565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa918215611125576134a2936000936134ce575b5060ff909a168091019a613e99565b9080156134c857906134bc91600052602052604060002090565b955b9392919093613301565b506134bc565b60ff9193506134f39060203d81116134fa575b6134eb81836103f4565b8101906132e5565b9290613493565b503d6134e1565b8084013560f81c98506001016133c4565b9091929394959697506003891697881561362a575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908101908161358a9187876120bb565b6040517f13792a4a000000000000000000000000000000000000000000000000000000008152939184916135c2918b6004850161194d565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa91821561112557613604936000936134ce575060ff909a168091019a613e99565b908015613624579061361e91600052602052604060002090565b956134be565b5061361e565b8084013560f81c9850600101613527565b98506020870197509495939492939192909182013561365986613e40565b8114613669575b61360490613e5a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850613660565b975090919293949597600f16968715613746575b602060006136b76137249a9b86613d08565b9c9092918a6040516136fa816127d98a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa15611125576136049060ff6000519a1680910199613d4b565b600189019883013560f81c97506136a5565b98506020870197509495939492939192909182013580851461377e575b61360490613e01565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850613775565b989091929394959662ffffff98506137c8612248600c8416603f9060021c1690565b918215613832575b6003168015613821575b908190613805906137fd908781013560e81c906003019c168c01809c89896120bb565b90898b6132f4565b911115613818575b906136049291613db6565b9982019961380d565b50600281019084013560f01c6137da565b8482013560f81c92506001909101906137d0565b97509761389c6138a9929394959697600f6138b193169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866120bb565b9086886132f4565b9061361e92980198600052602052604060002090565b985096509394929391929091908082013590602001968015613624579061361e91600052602052604060002090565b90919293949596975060038916978815613ab2575b8084013560601c9961396a916014019061392a9060021c600316612248565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b908101906139ce60208c61398085858b8b6120bb565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e0000000000000000000000000000000000000000000000000000000085526004850161329c565b0392165afa908115611125577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091613a84575b501603613a4057509060ff61360492991680910199613d4b565b6108eb613a518c93899389896120bb565b906040519485947fb2fed7ae000000000000000000000000000000000000000000000000000000008652600486016132b3565b613aa5915060203d8111613aab575b613a9d81836103f4565b810190613287565b38613a26565b503d613a93565b8381013560f81c985060010161390b565b98600f91929394959697985016968715613af2575b60148101976136049160ff9091169084013560601c613d4b565b8281013560f81c9750600101613ad8565b98509091929394959698600f16978815613b55575b5060206000613b2b6137249a9b86613d08565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c97506020613b18565b8015159081613b77575090565b90507fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8541490565b805160209091019060005b818110613bb75750505090565b8251845260209384019390920191600101613baa565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613c13613bfd83610471565b92613c0b60405194856103f4565b808452610471565b0136602083013760005b8351811015613cef5780613c33600192866116f2565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152613cdb610120826103f4565b519020613ce882856116f2565b5201613c1d565b50909150604051612805816127d9602082018095613b9f565b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff81116116625791565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b1660318301526045820152604581526128056065826103f4565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a00000000000000008552603884015260588301526078820152607881526128056098826103f4565b60405160208101917f53657175656e636520737461746963206469676573743a0a000000000000000083526038820152603881526128056058826103f4565b6127d9612805612797612791600060208601511515612db7565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a83526040820152604081526128056060826103f4565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d8152612805608d826103f456fea2646970667358221220308ea34d0bfd77d22053db540aaaa0e7d8db926aa22e88cb2203a3329f56415764736f6c634300081c0033","sourceMap":"475:414:0:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;634:29;;;;;-1:-1:-1;;;;;634:29:0;;;;;;;;475:414;634:29;;;;;;-1:-1:-1;;;;;475:414:0;;;;634:29;;;-1:-1:-1;634:29:0;;;;;;475:414;;;;;-1:-1:-1;;;;;475:414:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;475:414:0;;;;;;-1:-1:-1;2177:99:2;475:414:0;2177:99:2;;;;1229:4:14;;;2177:99:2;;;;1167:70:14;;;;;;;:::i;:::-;2177:99:2;;475:414:0;1167:70:14;;;1157:81;1245:29;;1280:18;;-1:-1:-1;;;;;475:414:0;1304:32:14;;754:24:4;;475:414:0;;;;;;;;1245:29:14;475:414:0;;;;;;;;;;1280:18:14;475:414:0;;;;;;;;;;1304:32:14;475:414:0;;;;;;;;;;754:24:4;475:414:0;;;;;;;;;;;;;;;;2177:99:2;;475:414:0;2177:99:2;;;;;;;;;;;;;;;475:414:0;;;;-1:-1:-1;475:414:0;;;;;-1:-1:-1;475:414:0;634:29;475:414;;;-1:-1:-1;475:414:0;;;;;;-1:-1:-1;475:414:0;;;;;;;-1:-1:-1;;475:414:0;;;;-1:-1:-1;;;;;475:414:0;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;475:414:0;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"6080604052600436101561001e575b361561001c5761001c611da2565b005b60003560e01c806223de29146101ad578063025b22bc146101a857806313792a4a146101a3578063150b7a021461019e5780631626ba7e1461019957806319822f7c146101945780631a9b23371461018f5780631f6a1eb91461018a578063257671f51461018557806329561426146101805780632dd310001461017b5780634fcf3eca146101765780636ea44577146101715780638943ec021461016c5780638c3f55631461016757806392dcb3fc146101625780639c145aed1461015d5780639f69ef5414610158578063a65d69d414610153578063aaf10f421461014e578063ad55366b14610149578063b93ea7ad14610144578063bc197c811461013f578063f23a6e611461013a5763f727ef1c0361000e57611632565b6115a5565b6114d3565b611374565b611328565b6112d7565b611268565b6111f9565b61106a565b61100c565b610fd0565b610f4c565b610f1d565b610dc3565b610d54565b610c74565b610c1b565b610aff565b610a9c565b6109e7565b61095f565b6108d2565b6107d5565b6102fb565b61026f565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101d557565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101d557565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101d557565b359073ffffffffffffffffffffffffffffffffffffffff821682036101d557565b9181601f840112156101d55782359167ffffffffffffffff83116101d557602083818601950101116101d557565b346101d55760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576102a66101b2565b506102af6101da565b506102b86101fd565b5060843567ffffffffffffffff81116101d5576102d9903690600401610241565b505060a43567ffffffffffffffff81116101d55761001c903690600401610241565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55761032d6101b2565b30330361033d5761001c90611e6b565b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff8211176103b657604052565b61036b565b6040810190811067ffffffffffffffff8211176103b657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176103b657604052565b6040519061042760e0836103d7565b565b60405190610427610120836103d7565b359060ff821682036101d557565b359081151582036101d557565b67ffffffffffffffff81116103b65760051b60200190565b67ffffffffffffffff81116103b657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926104b28261046c565b916104c060405193846103d7565b8294818452818301116101d5578281602093846000960137010152565b9080601f830112156101d5578160206104f8933591016104a6565b90565b81601f820112156101d55780359061051282610454565b9261052060405194856103d7565b82845260208085019360051b830101918183116101d55760208101935b83851061054c57505050505090565b843567ffffffffffffffff81116101d557820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082860301126101d557610593610418565b916105a060208301610220565b83526040820135602084015260608201359267ffffffffffffffff84116101d55760e0836105d58860208098819801016104dd565b6040840152608081013560608401526105f060a08201610447565b608084015261060160c08201610447565b60a0840152013560c082015281520194019361053d565b9080601f830112156101d557813561062f81610454565b9261063d60405194856103d7565b81845260208085019260051b8201019283116101d557602001905b8282106106655750505090565b6020809161067284610220565b815201910190610658565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101d55760043567ffffffffffffffff81116101d5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82850301126101d5576106ef610429565b906106fc81600401610439565b825261070a60248201610447565b6020830152604481013567ffffffffffffffff81116101d557846004610732928401016104fb565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff81116101d55784600461076e928401016104dd565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116101d557600485916107ab930101610618565b610100820152916024359067ffffffffffffffff82116101d5576107d191600401610241565b9091565b346101d5576107e33661067d565b90916101008101926107fe6107f985515161173a565b61175a565b9160005b85518051821015610865579061085f61083a610820836001956117d8565b5173ffffffffffffffffffffffffffffffffffffffff1690565b61084483886117d8565b9073ffffffffffffffffffffffffffffffffffffffff169052565b01610802565b505083838661087a33610844835151856117d8565b52610886818484611eba565b50156108985760405160018152602090f35b6108ce906040519384937ff58cc8b500000000000000000000000000000000000000000000000000000000855260048501611a33565b0390fd5b346101d55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576109096101b2565b506109126101da565b5060643567ffffffffffffffff81116101d557610933903690600401610241565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b346101d55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55760043560243567ffffffffffffffff81116101d5576020916109b76109bd923690600401610241565b91611a58565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346101d55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55760043567ffffffffffffffff81116101d5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126101d557610a6a60209160243560443591600401611b01565b604051908152f35b7fffffffff000000000000000000000000000000000000000000000000000000008116036101d557565b346101d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576020610ae1600435610adc81610a72565b6120ca565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55760043567ffffffffffffffff81116101d557610b49903690600401610241565b60243567ffffffffffffffff81116101d557610b69903690600401610241565b9160027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610be657610bc09360027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55611c6b565b60017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b7f37ed32e80000000000000000000000000000000000000000000000000000000060005260046000fd5b60009103126101d557565b346101d55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346101d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55760043530330361033d578015610d2a576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a161001c7f0000000000000000000000000000000000000000000000000000000000000000611e6b565b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b346101d55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557600435610df981610a72565b30330361033d5773ffffffffffffffffffffffffffffffffffffffff610e1e826120ca565b1615610e845760407fffffffff000000000000000000000000000000000000000000000000000000007f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19216610e75600082612ea4565b815190815260006020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f1c3812cc000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101d5576004359067ffffffffffffffff82116101d5576107d191600401610241565b610f2636610ed4565b9030330361033d57610f3c61001c925a926121ff565b90610f46826128a3565b9061257e565b346101d55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557610f836101b2565b5060443567ffffffffffffffff81116101d557610fa4903690600401610241565b505060206040517f8943ec02000000000000000000000000000000000000000000000000000000008152f35b346101d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576020610a6a600435612937565b346101d55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557604061104860043561297d565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346101d55761107836610ed4565b9060027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610be65760027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156111cf5733036111a157303b156101d55761114b9160009160405193849283927f6ea4457700000000000000000000000000000000000000000000000000000000845260048401611d61565b038183305af1801561119c576111815760017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b806111906000611196936103d7565b80610c10565b38610bc0565b611aa4565b7f1d6ddbf4000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7fd13d78350000000000000000000000000000000000000000000000000000000060005260046000fd5b346101d55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101d55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101d55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576020305473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346101d55760c061134460008061133e3661067d565b91612a7e565b92611350839293613c96565b906040519586526020860152151560408501526060840152608083015260a0820152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576004356113aa81610a72565b6113b26101da565b9030330361033d5773ffffffffffffffffffffffffffffffffffffffff6113d8826120ca565b16611452577f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19173ffffffffffffffffffffffffffffffffffffffff7fffffffff000000000000000000000000000000000000000000000000000000006040931691166114458183612ea4565b82519182526020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f5b4d6d6a000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b9181601f840112156101d55782359167ffffffffffffffff83116101d5576020808501948460051b0101116101d557565b346101d55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55761150a6101b2565b506115136101da565b5060443567ffffffffffffffff81116101d5576115349036906004016114a2565b505060643567ffffffffffffffff81116101d5576115569036906004016114a2565b505060843567ffffffffffffffff81116101d557611578903690600401610241565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346101d55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d5576115dc6101b2565b506115e56101da565b5060843567ffffffffffffffff81116101d557611606903690600401610241565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b346101d55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101d55760043561166c6101da565b604435916bffffffffffffffffffffffff83168093036101d55730330361033d578273ffffffffffffffffffffffffffffffffffffffff836116f77febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1967fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606097881b161785612e20565b6040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906001820180921161174857565b61170b565b9190820180921161174857565b9061176482610454565b61177160405191826103d7565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061179f8294610454565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156117ec5760209160051b010190565b6117a9565b919082519283825260005b84811061183b5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b806020809284010151828286010152016117fc565b9080602083519182815201916020808360051b8301019401926000915b83831061187c57505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c0806118ef604085015160e0604086015260e08501906117f1565b936060810151606085015260808101511515608085015260a0810151151560a085015201519101529701930193019193929061186d565b906020808351928381520192019060005b8181106119445750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611937565b805160ff1682526104f8916020828101511515908201526101006119ce6119a860408501516101206040860152610120850190611850565b606085015160608501526080850151608085015260a085015184820360a08601526117f1565b9260c081015160c084015260e081015160e0840152015190610100818403910152611926565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b91611a4a6104f89492604085526040850190611970565b9260208185039101526119f4565b90611a759291611a6661206f565b906003825260e0820152611eba565b5015611a9f577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b6040513d6000823e3d90fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156101d5570180359067ffffffffffffffff82116101d5576020019181360383136101d557565b909173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169081156111cf578133036111a15780611bb5575b5050611ba57f1626ba7e00000000000000000000000000000000000000000000000000000000926109b7836101007fffffffff00000000000000000000000000000000000000000000000000000000950190611ab0565b1603611bb057600090565b600190565b813b156101d5576040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015291600091839160249183915af192831561119c576109b77fffffffff0000000000000000000000000000000000000000000000000000000093611ba5937f1626ba7e0000000000000000000000000000000000000000000000000000000096611c56575b5093505092611b4e565b806111906000611c65936103d7565b38611c4c565b91939290611c7a905a936121ff565b9160608301516080840151611c8e82612937565b818103611d2d57509060017f1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881920190611cc78282612e65565b604080519182526020820192909252a1611ce2828685611eba565b929015611cf5575061042793945061257e565b836108ce87926040519384937fa2b6d61b00000000000000000000000000000000000000000000000000000000855260048501611a33565b917f9b6514f40000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b9160206104f89381815201916119f4565b3d15611d9d573d90611d838261046c565b91611d9160405193846103d7565b82523d6000602084013e565b606090565b600436108015611daf5750565b611de5906000357fffffffff00000000000000000000000000000000000000000000000000000000811691611e37575b506120ca565b73ffffffffffffffffffffffffffffffffffffffff8116611e035750565b60008091604051368382378036810184815203915af4611e21611d72565b9015611e2f57602081519101f35b602081519101fd5b7fffffffff000000000000000000000000000000000000000000000000000000008092503660040360031b1b161638611ddf565b60207f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca039180305573ffffffffffffffffffffffffffffffffffffffff60405191168152a1565b90156117ec5790565b611eed611ec78484611eb1565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f800000000000000000000000000000000000000000000000000000000000000080821614611f705750611f25926000928392612a7e565b905091909192808210611f40575050611f3d90613c96565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f0200000000000000000000000000000000000000000000000000000000000000908116146020820152611fa6925090506128a3565b90611fb08261297d565b4281111561203d575073ffffffffffffffffffffffffffffffffffffffff81168015159081612032575b50611fe6575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b905033141538611fda565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff8211176103b6576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b73ffffffffffffffffffffffffffffffffffffffff906040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208452166040820152604081526121416060826103d7565b519020541690565b9061215382610454565b61216060405191826103d7565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061218e8294610454565b019060005b82811061219f57505050565b6020906040516121ae8161039a565b60008152600083820152606060408201526000606082015260006080820152600060a0820152600060c082015282828501015201612193565b909392938483116101d55784116101d5578101920390565b9061220861206f565b6000815291600190803560f81c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316016124d75750600060608601525b600761225760ff831660011c90565b1680612486575b50601081811603612458575060015b61227681612149565b604086019081526000925b8284106122be5750505050036122945790565b7f0bdf80380000000000000000000000000000000000000000000000000000000060005260046000fd5b9293919290918082013560f81c906001019490856001808316036124365750612308306122ec8487516117d8565b519073ffffffffffffffffffffffffffffffffffffffff169052565b600280821614612416575b6004808216146123c8575b600880821614612393575b9061237a61237460c0846123546010806001981614608061234b888c516117d8565b51019015159052565b61236a60208083161460a061234b888c516117d8565b1660061c60031690565b60ff1690565b60c06123878387516117d8565b51015201929190612281565b946001919061237a906123749060c0908681013590602001999060606123ba878b516117d8565b510152939450505050612329565b94612410908381013560e81c906003016124096123f06123e8848461174d565b838c896121e7565b919060406123ff888b516117d8565b51019236916104a6565b905261174d565b9461231e565b9482810135906020019590602061242e8487516117d8565b510152612313565b61245396508381013560601c9060140196906122ec8487516117d8565b612308565b60209081160361247557600282019181013560f01c905b9061226d565b600182019181013560f81c9061246f565b6124ca919383929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b929060808601523861225e565b80830135606090811c908701526014019250612248565b61250660409295949395606083526060830190611970565b9460208201520152565b926104f896959260c09592855260208501526040840152606083015260808201528160a082015201906117f1565b6040906104f89392815281602082015201906117f1565b61256b6104f89492606083526060830190611970565b92602082015260408184039101526117f1565b916000604082019384515190825b82811061259d575b50505050505050565b6125a88188516117d8565b51936125b760a0860151151590565b8061289b575b612861575060009360608101518015801580612858575b6128205784906125e76080850151151590565b156127da576126929261260e855173ffffffffffffffffffffffffffffffffffffffff1690565b91156127d457505a905b61268d8b61266160608d01516040890151908c8b604051998a967f4c4e814c00000000000000000000000000000000000000000000000000000000602089015260248801612510565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846103d7565b612df3565b156126db575b50600190867f5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a604051806126d185829190602083019252565b0390a25b0161258c565b60c00180511561278b57600181511461274c57516002146126fc5738612698565b93505050507fc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b91925061272d612e05565b9061273d6040519283928361253e565b0390a238808080808080612594565b50846108ce612759612e05565b6040519384937f7f6b0bb100000000000000000000000000000000000000000000000000000000855260048501612555565b50925060018093867f115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d6127cc6127bf612e05565b604051918291868361253e565b0390a26126d5565b90612618565b835161281593925073ffffffffffffffffffffffffffffffffffffffff169160208501519160001461281a57505a905b604085015192612de1565b612692565b9061280a565b83886108ce5a6040519384937f21395274000000000000000000000000000000000000000000000000000000008552600485016124ee565b50815a106125d4565b9350600190867f9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b604051806127cc85829190602083019252565b5080156125bd565b6129056129316128c36128bd602085015115153090612ee3565b93612fde565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826103d7565b51902090565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e83526040820152604081526129766060826103d7565b5190205490565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8683526040820152604081526129bc6060826103d7565b51902054906bffffffffffffffffffffffff8260601c921690565b604051906129e4826103bb565b60006020838281520152565b600311156129fa57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b908160409103126101d557602060405191612a43836103bb565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff6104f8949316815281602082015201906117f1565b909491939291853560f81c600190938190612a976129d7565b92612aa1826129f0565b60018203612cab575b50600180871614612c4a575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908096918196602016612b199060051c90565b612b229061173a565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a81612b6e846128a3565b988993612b7a936121e7565b91612b8493613420565b9098612b9891600052602052604060002090565b90612bab91600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16612bd491600052602052604060002090565b94815190868215159283612c3f575b505081612c30575b50612bf35750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b90506020820151101538612beb565b141591508638612be3565b909691939450612c5c819893986129f0565b612c8157612c769581612c6e936121e7565b9390926131d3565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06040881601612aaa578981013560601c9750601401915087878a84612cf4856129f0565b60028503612d05575b505050612aaa565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c92604092612d8a929091612d5591612d4e918a90612d48898361174d565b926121e7565b36916104a6565b83519586809481937fccce3bc80000000000000000000000000000000000000000000000000000000083523060048401612a51565b0392165afa801561119c57612da892600091612db2575b509361174d565b9087388a81612cfd565b612dd4915060403d604011612dda575b612dcc81836103d7565b810190612a29565b38612da1565b503d612dc2565b9160009391849360208451940192f190565b9160009291839260208351930191f490565b3d90604051916020818401016040528083526000602084013e565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612e5f6060826103d7565b51902055565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8352604082015260408152612e5f6060826103d7565b60405160208101917fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208352604082015260408152612e5f6060826103d7565b15612f93576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261293160c0826103d7565b4690612eec565b805160209091019060005b818110612fb25750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612fa5565b610100810151604051612ff981612905602082018095612f9a565b51902090613008815160ff1690565b60ff811680613081575050906129316130246040840151613d93565b9261290560806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b600181036130df57505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466938101938452908101919091526060810192909252906129318160808101612905565b6002810361313557505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4602082019081529181019290925260608201929092526129318160808101612905565b600303613189575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466602082019081529181019290925260608201929092526129318160808101612905565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b9061250690604093969594966060845260608401916119f4565b91949290926000956000956000956000956000956131ef61206f565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b82811061324657505050505050508051151580613238575b612bf35750565b506020810151841115613231565b600381019d50959b509399509197509290919061326a908b9085013560e81c61174d565b958287036133aa578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c0361337b57506132b7916132b0898c9387896121e7565b908b612a7e565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106133355750928b88511461332c575b808b10156132fa57508a60c08501528992959295949194939093613219565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b600088526132db565b8d8f6108ce61334685858c8e6121e7565b9390926040519485947fb006aba0000000000000000000000000000000000000000000000000000000008652600486016131b9565b979899809b926133908b61339794888a6121e7565b9086612a7e565b50929d919c909b929a9092918e8e6132cb565b8a600291613277565b908160209103126101d557516104f881610a72565b6040906104f89492815281602082015201916119f4565b73ffffffffffffffffffffffffffffffffffffffff6104f89593606093835216602082015281604082015201916119f4565b908160209103126101d5575190565b9391909360009460009460005b81811061343b575050505050565b8481013560f881901c9860019092019788979692909160fc1c988915613c2f575060018914613bef5760028914613a2257600389146139f3576004891461397257600689146138d2576005891461388457600789146137bd5760088914613767576009891461363e57600a89146134db577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b9091929394959697506003891697881561362d575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190810190816135539187876121e7565b6040517f898bd9210000000000000000000000000000000000000000000000000000000081529391849161358b918a600485016133c8565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa91821561119c576135ce936000936135fa575b5060ff909a168091019a61405f565b9080156135f457906135e891600052602052604060002090565b955b939291909361342d565b506135e8565b60ff91935061361f9060203d8111613626575b61361781836103d7565b810190613411565b92906135bf565b503d61360d565b8084013560f81c98506001016134f0565b90919293949596975060038916978815613756575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190810190816136b69187876121e7565b6040517f13792a4a000000000000000000000000000000000000000000000000000000008152939184916136ee918b60048501611a33565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa91821561119c57613730936000936135fa575060ff909a168091019a61405f565b908015613750579061374a91600052602052604060002090565b956135ea565b5061374a565b8084013560f81c9850600101613653565b98506020870197509495939492939192909182013561378586614006565b8114613795575b61373090614020565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff985061378c565b975090919293949597600f16968715613872575b602060006137e36138509a9b86613ece565b9c9092918a604051613826816129058a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa1561119c576137309060ff6000519a1680910199613f11565b600189019883013560f81c97506137d1565b9850602087019750949593949293919290918201358085146138aa575b61373090613fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98506138a1565b989091929394959662ffffff98506138f4612374600c8416603f9060021c1690565b91821561395e575b600316801561394d575b90819061393190613929908781013560e81c906003019c168c01809c89896121e7565b90898b613420565b911115613944575b906137309291613f7c565b99820199613939565b50600281019084013560f01c613906565b8482013560f81c92506001909101906138fc565b9750976139c86139d5929394959697600f6139dd93169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866121e7565b908688613420565b9061374a92980198600052602052604060002090565b985096509394929391929091908082013590602001968015613750579061374a91600052602052604060002090565b90919293949596975060038916978815613bde575b8084013560601c99613a969160140190613a569060021c600316612374565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b90810190613afa60208c613aac85858b8b6121e7565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e000000000000000000000000000000000000000000000000000000008552600485016133c8565b0392165afa90811561119c577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091613bb0575b501603613b6c57509060ff61373092991680910199613f11565b6108ce613b7d8c93899389896121e7565b906040519485947fb2fed7ae000000000000000000000000000000000000000000000000000000008652600486016133df565b613bd1915060203d8111613bd7575b613bc981836103d7565b8101906133b3565b38613b52565b503d613bbf565b8381013560f81c9850600101613a37565b98600f91929394959697985016968715613c1e575b60148101976137309160ff9091169084013560601c613f11565b8281013560f81c9750600101613c04565b98509091929394959698600f16978815613c81575b5060206000613c576138509a9b86613ece565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c97506020613c44565b73ffffffffffffffffffffffffffffffffffffffff9060405160208101917fff0000000000000000000000000000000000000000000000000000000000000083527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060601b16602183015260358201527f0000000000000000000000000000000000000000000000000000000000000000605582015260558152613d5c6075826103d7565b51902016301490565b805160209091019060005b818110613d7d5750505090565b8251845260209384019390920191600101613d70565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613dd9613dc383610454565b92613dd160405194856103d7565b808452610454565b0136602083013760005b8351811015613eb55780613df9600192866117d8565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152613ea1610120826103d7565b519020613eae82856117d8565b5201613de3565b5090915060405161293181612905602082018095613d65565b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff81116117485791565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b1660318301526045820152604581526129316065826103d7565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a00000000000000008552603884015260588301526078820152607881526129316098826103d7565b60405160208101917f53657175656e636520737461746963206469676573743a0a000000000000000083526038820152603881526129316058826103d7565b6129056129316128c36128bd600060208601511515612ee3565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a83526040820152604081526129316060826103d7565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d8152612931608d826103d756fea26469706673582212204aded9bebadf620767a8456d364bea5dce9e2213033e4904099efbbfaacb1aca64736f6c634300081c0033","sourceMap":"475:414:0:-:0;;;;;;;;;-1:-1:-1;475:414:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;401:4:13;379:10;:27;375:75;;659:15:6;;;:::i;375:75:13:-;423:20;-1:-1:-1;423:20:13;379:10;475:414:0;;;-1:-1:-1;423:20:13;475:414:0;;;;;;;;;;;2409:4:8;475:414:0;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;475:414:0;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;4802:22:11;;;;;;4788:48;4802:33;:22;;475:414:0;4802:33:11;:::i;:::-;4788:48;:::i;:::-;4848:13;-1:-1:-1;4898:3:11;4867:22;;475:414:0;;4863:33:11;;;;;4930:25;4911:44;4930:25;;;4834:1;4930:25;;:::i;:::-;475:414:0;;;;;4930:25:11;4911:44;;;;:::i;:::-;475:414:0;;;;;;4911:44:11;475:414:0;4848:13:11;;4863:33;;;;;;4968:57;5015:10;4968:57;4982:22;;475:414:0;4968:57:11;;:::i;:::-;5031:38;5094:41;;;;;:::i;:::-;5145:8;;5141:81;;475:414:0;;4834:1:11;475:414:0;;;;;5141:81:11;5170:45;475:414:0;;;5170:45:11;;;;;;475:414:0;5170:45:11;;;:::i;:::-;;;;475:414:0;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3351:31:5;475:414:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1358:19:5;475:414:0;;;;;:::i;:::-;1358:19:5;:::i;:::-;475:414:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;394:41:10;309:1:9;430:66;394:41:10;796:43:9;792:86;;993:1;260:41:10;309:1:9;430:66;260:41:10;993:1:9;:::i;:::-;250;430:66;260:41:10;475:414:0;792:86:9;856:15;-1:-1:-1;856:15:9;475:414:0;-1:-1:-1;856:15:9;475:414:0;;;;;;;:::o;:::-;;;;;;;;;;;;;;509:39:14;475:414:0;;;;;;;;;;;;;;;;401:4:13;379:10;:27;375:75;;1470:24:14;;1466:69;;475:414:0;260:41:10;1599:28:14;260:41:10;837:66:14;260:41:10;475:414:0;;;;;1599:28:14;1710:22;;;:::i;1466:69::-;1511:17;-1:-1:-1;1511:17:14;475:414:0;-1:-1:-1;1511:17:14;475:414:0;;;;;;;;;;;;;;;582:32:14;475:414:0;;;;;;;;;;;;;;;;;:::i;:::-;401:4:13;379:10;:27;375:75;;475:414:0;2005:19:5;;;:::i;:::-;475:414:0;2005:33:5;2001:87;;475:414:0;;2492:37:5;475:414:0;;2439:41:5;475:414:0;2439:41:5;;:::i;:::-;475:414:0;;;;;;;;;;2492:37:5;475:414:0;2001:87:5;475:414:0;2055:26:5;;-1:-1:-1;2055:26:5;475:414:0;;;;-1:-1:-1;2055:26:5;475:414:0;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;401:4:13;;379:10;:27;375:75;;2274:33:3;2387:7;2226:9;;2274:33;;:::i;:::-;2330:21;;;;:::i;:::-;2387:7;;:::i;475:414:0:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3526:28:5;475:414:0;;;;;;;;;;;;;;;806:50:7;475:414:0;;806:50:7;:::i;475:414:0:-;;;;;;;;;;;;2500:26:11;475:414:0;;2500:26:11;:::i;:::-;475:414:0;;;;;;;;;;;;;;;;;;;:::i;:::-;394:41:10;309:1:9;430:66;394:41:10;796:43:9;792:86;;309:1;430:66;260:41:10;475:414:0;1714:10:4;475:414:0;1714:24:4;;1710:69;;1789:10;:24;1785:81;;1872:4;:26;;;;;475:414:0;1736:1:4;475:414:0;;;1872:26:4;;;;;475:414:0;1872:26:4;;475:414:0;1872:26:4;;;:::i;:::-;;:4;;;:26;;;;;;;;250:1:9;430:66;260:41:10;475:414:0;1872:26:4;;;1736:1;1872:26;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;1785:81::-;1830:29;1736:1;1830:29;1789:10;475:414:0;;;1736:1:4;1830:29;1710:69;1755:17;1736:1;1755:17;475:414:0;1736:1:4;1755:17;475:414:0;;;;;;;;;;;;;;;663:47:14;475:414:0;;;;;;;;;;;;;;;;;;;591:35:4;475:414:0;;;;;;;;;;;;;;;;1252:47:6;;475:414:0;;;;;;;;;;;;;6003:78:11;-1:-1:-1;475:414:0;;;;:::i;:::-;6003:78:11;;:::i;:::-;850:31:0;;;;;;:::i;:::-;475:414;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;401:4:13;;379:10;:27;375:75;;475:414:0;1667:19:5;;;:::i;:::-;475:414:0;1663:88:5;;2492:37;475:414:0;;;;;;;;2439:41:5;;;;:::i;:::-;475:414:0;;;;;;;;;2492:37:5;475:414:0;1663:88:5;475:414:0;1717:27:5;;-1:-1:-1;1717:27:5;475:414:0;;;;-1:-1:-1;1717:27:5;475:414:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;475:414:0;;2946:37:5;475:414:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;2696:32:5;475:414:0;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;401:4:13;379:10;:27;375:75;;475:414:0;;;2043:85:11;2998:47;475:414:0;;;;;;;2051:76:11;2043:85;;:::i;:::-;475:414:0;;;;;;;;;;;;;;2998:47:11;475:414:0;;;;;;;;;;;;;4834:1:11;475:414:0;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;475:414:0;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;475:414:0;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;475:414:0;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;5290:320:11:-;;5476:40;5290:320;;475:414:0;;:::i;:::-;2644:4:8;;;;4882:15;;;2644:4;5476:40:11;:::i;:::-;5526:8;;5522:45;;475:414:0;5290:320:11;:::o;5522:45::-;475:414:0;5544:16:11;:::o;475:414:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;814:660:4:-;;;475:414:0;992:10:4;475:414:0;992:24:4;;;988:69;;1067:10;;:24;1063:81;;1206:24;1202:123;;814:660;1364:16;;1335:46;475:414:0;1364:16:4;;;;475:414:0;1364:16:4;;;;:::i;1335:46::-;475:414:0;1335:75:4;1331:124;;475:414:0;814:660:4;:::o;1331:124::-;585:1;1420:28;:::o;1202:123::-;1240:78;;;;;475:414:0;;;1240:78:4;;1312:4;1240:78;;;475:414:0;;-1:-1:-1;;475:414:0;;;;;;1240:78:4;;;;;;;1364:16;475:414:0;1240:78:4;1335:46;1240:78;475:414:0;1240:78:4;;;1202:123;;;;;;;;1240:78;;;475:414:0;1240:78:4;;;:::i;:::-;;;;1509:486:3;;;;;1704:33;1509:486;1656:9;1704:33;;:::i;:::-;1758:13;;;;475:414:0;1773:13:3;;;475:414:0;806:50:7;;;:::i;:::-;1131:22;;;1127:88;;475:414:0;;1267:1:7;1319:29;475:414:0;;986:15:7;;;;;:::i;:::-;475:414:0;;;;;;;;;;;;;1319:29:7;1826:40:3;;;;;:::i;:::-;1877:8;;;1873:73;;1982:7;;;;;;:::i;1873:73::-;475:414:0;1902:37:3;475:414:0;;;;1902:37:3;;;;;;;;;;:::i;1127:88:7:-;1170:38;;-1:-1:-1;1170:38:7;;475:414:0;;;;;;-1:-1:-1;1170:38:7;475:414:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;475:414:0;;;;:::o;:::-;;;:::o;3638:392:5:-;3695:1;3676:8;:20;;;3672:354;;3638:392;:::o;3672:354::-;3723:27;3733:16;3676:8;475:414:0;;;;;;;3672:354:5;3723:27;;:::i;:::-;475:414:0;;;3758:262:5;;3638:392;:::o;3758:262::-;3676:8;475:414:0;;;;3676:8:5;475:414:0;;;3676:8:5;;475:414:0;;;;;3832:29:5;;;;;;:::i;:::-;3871:141;;;;;;;;;;;;;;;;;475:414:0;;3676:8:5;;;;3695:1;475:414:0;;;;;;;;;880:176:6;475:414:0;1013:38:6;880:176;1125:46;;;475:414:0;;;;;;;1013:38:6;880:176::o;475:414:0:-;;;;;;:::o;3301:1229:11:-;3555:13;;;;;:::i;:::-;;475:414:0;;;;3555:13:11;475:414:0;3579:20:11;;;:28;3575:521;;4286:78;;;3566:1;4286:78;;;;:::i;:::-;4238:126;;;;;4402:18;;;;4398:87;;850:31:0;;;;;:::i;:::-;3301:1229:11;:::o;4398:87::-;4437:41;3566:1;4437:41;3864:48;475:414:0;;;;1736:1:4;1830:29;3575:521:11;475:414:0;3673:20:11;;;:28;3652:18;;;475:414:0;3718:15:11;;-1:-1:-1;3673:20:11;-1:-1:-1;3718:15:11;:::i;:::-;3778:27;;;;:::i;:::-;3830:15;3817:28;;;3813:108;;475:414:0;;;;3933:18:11;;;:40;;;;3575:521;3929:131;;;4068:21;4076:4;4068:21;;:::o;3929:131::-;3992:59;3566:1;3992:59;;475:414:0;;;4034:10:11;475:414:0;;;;;;;1736:1:4;1830:29;3933:40:11;3963:10;;;3955:18;;3933:40;;;3813:108;3864:48;3566:1;3864:48;;475:414:0;;;;;;1736:1:4;1830:29;475:414:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;475:414:0;;-1:-1:-1;475:414:0;;;;;;;;;-1:-1:-1;475:414:0;;;;-1:-1:-1;475:414:0;;;;;;;;;-1:-1:-1;475:414:0;;;;-1:-1:-1;475:414:0;;;;;;:::o;2134:172:5:-;475:414:0;2134:172:5;475:414:0;;;753:25:10;;;;:66:5;475:414:0;;;;;;;;753:25:10;;;;;;:::i;:::-;475:414:0;743:36:10;;785:40;475:414:0;2134:172:5;:::o;2409:4:8:-;;475:414:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;2409:4:8;;;;;:::i;:::-;;;-1:-1:-1;2409:4:8;;;;;;;;;:::o;:::-;;475:414:0;;;;;;:::i;:::-;-1:-1:-1;2409:4:8;;-1:-1:-1;2409:4:8;;;;475:414:0;;2409:4:8;;;-1:-1:-1;475:414:0;2409:4:8;;;-1:-1:-1;2409:4:8;;;;-1:-1:-1;2409:4:8;;;;-1:-1:-1;2409:4:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4915:2802::-;;475:414:0;;:::i;:::-;;2644:4:8;;;566:109:28;;;;;;;5219:25:8;:17;;;:25;5232:4;;5254:14;2409:4;5254:14;;;2644:4;5215:140;5452:4;5433:15;475:414:0;;;;2409:4:8;;;5433:15;5432:24;5467:13;5463:122;;5215:140;-1:-1:-1;5691:4:8;5678:17;;;:25;5691:4;;5713:12;5232:4;5674:320;6039:20;;;:::i;:::-;6022:14;;;:37;;;2409:4;6066:1546;6086:12;;;;;;7622:24;;;;;7618:73;;4915:2802;:::o;7618:73::-;7663:21;2409:4;7663:21;6760:4;2409;7663:21;6100:3;683:254:28;;;;;;798:135;;;;;;;;;6132:44:8;;;5232:4;6283:12;;;:20;5232:4;;6370;6339:36;6370:4;6339:17;:14;;;:17;:::i;:::-;;475:414:0;;;;;;6339:36:8;6585:4;6577:12;;;:20;6573:109;;6279:226;6760:4;6752:12;;;:20;6748:287;;6279:226;7121:4;7113:12;;;:20;7109:112;;6279:226;7331:12;7550:55;7586:19;7595:4;7331:12;7297:55;5691:4;7331:12;5232:4;7331:12;;:20;7297:30;:17;:14;;;:17;:::i;:::-;;:30;475:414:0;;;;;;7297:55:8;7420;7462:4;7454:12;;;:20;7420:30;:17;:14;;;:17;:::i;:55::-;7587:12;475:414:0;2409:4:8;;;;;7586:19;475:414:0;;;;7550:55:8;7595:4;7550:17;:14;;;:17;:::i;:::-;;:33;2644:4;475:414:0;6071:13:8;;;;;7109:112;1983:226:28;5232:4:8;;1983:226:28;7550:55:8;;7586:19;;7595:4;;2102:103:28;;;;;;;7146:14:8;;:26;:17;:14;;;:17;:::i;:::-;;:26;2644:4;7109:112;;;;;;;;6748:287;1201:256:28;7003:23:8;;1318:135:28;;;;;;;;;2409:4:8;6955:38;6970:22;1318:135:28;;6970:22:8;:::i;:::-;6955:38;;;;:::i;:::-;6930:14;;6022;6930:17;:14;;;:17;:::i;:::-;;:22;2409:4;;;;:::i;:::-;6930:63;;7003:23;:::i;:::-;6748:287;;;6573:109;1983:226:28;2102:103;;;;;;;6610:14:8;;7462:4;6610:17;:14;;;:17;:::i;:::-;;:23;2644:4;6573:109;;6279:226;6435:61;;-1:-1:-1;1840:135:28;;;;;;;;;6436:14:8;;:17;:14;;;:17;:::i;6435:61::-;6279:226;;5674:320;5835:4;5822:17;;;:25;5835:4;;1058:135:28;;;;;;;;;;5818:170:8;5674:320;;;5818:170;798:135:28;;;;;;;;;;5818:170:8;;5463:122;2213:380:28;;;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;5514:64:8;;5515:14;;;2644:4;5463:122;;;5215:140;1840:135:28;;;;;;;;5294:14:8;;;2644:4;1840:135:28;;;-1:-1:-1;5215:140:8;;475:414:0;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2745:4:8:-;;;;;;475:414:0;;2745:4:8;;;;;;;;:::i;2851:::-;;;;;;;;;;;;;:::i;:::-;;;;;475:414:0;2851:4:8;;;;;;;;:::i;2404:1875:3:-;;2541:5;2572:14;;;;;;475:414:0;2604:13:3;;2619:12;;;;;;2599:1676;2404:1875;;;;;;;:::o;2633:3::-;2673:17;:14;;;:17;:::i;:::-;;2757;475:414:0;2757:17:3;;;475:414:0;;;;;;2757:31:3;;;2633:3;2753:102;;2981:17;2541:5;3026:13;;;;475:414:0;3051:13:3;;;;:37;;;2633:3;3047:105;;3160:12;;475:414:0;3184:17:3;;;475:414:0;;;;;;3184:17:3;;;3225:348;475:414:0;;;;;;;;;3277:36:3;;;;3293:9;;3277:36;;3325:238;3514:14;3325:238;3026:13;3514:14;;475:414:0;2572:14:3;3542:9;;;475:414:0;;;2572:14:3;475:414:0;3325:238:3;;;3361:55;3325:238;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;3225:348;:::i;:::-;3714:8;3710:520;;3180:522;475:414:0;;;;4243:25:3;2572:14;475:414:0;4243:25:3;;;;475:414:0;;;;;;;;4243:25:3;;;;2604:13;475:414:0;2604:13:3;;3710:520;3738:20;;475:414:0;;3738:53:3;3734:180;;475:414:0;;;3928:56:3;3924:136;;475:414:0;2955:4:8;4074:55:3;4070:152;;3710:520;;;4070:152;4172:21;;;;;4148:46;4172:21;;;;;:::i;:::-;475:414:0;4148:46:3;2572:14;475:414:0;4148:46:3;;;;;:::i;:::-;;;;4206:5;;;;;;;;;3924:136;4027:21;;4005:44;4027:21;;:::i;:::-;2572:14;475:414:0;4005:44:3;;;;;;;;;;:::i;3734:180::-;3805:16;;;475:414:0;3805:16:3;3861:21;;3838:45;;3861:21;;:::i;:::-;2572:14;475:414:0;3838:45:3;;;;;;:::i;:::-;;;;3895:8;;3277:36;;;;3180:522;475:414:0;;3610:83:3;;475:414:0;-1:-1:-1;475:414:0;;3633:10:3;;;;475:414:0;3645:36:3;;;;;3661:9;;3645:36;;2572:14;3683:9;;;3610:83;;:::i;:::-;3180:522;;3645:36;;;;3047:105;3133:9;;3107:36;3133:9;2572:14;475:414:0;3107:36:3;;;;;;;;;;:::i;3051:37::-;3068:9;;;:20;3051:37;;2753:102;475:414:0;;;;;2805:23:3;2572:14;475:414:0;2805:23:3;;;;475:414:0;;;;;;;;2757:31:3;2778:10;;;2757:31;;9411:274:8;9631:48;;9590:18;9513:50;9529:18;;;475:414:0;;;9557:4:8;9513:50;;:::i;:::-;9590:18;;:::i;:::-;475:414:0;;9631:48:8;;;9529:18;9631:48;;;;475:414:0;;;;;;;;;;;;;;;;;;9631:48:8;;;;;;;;;:::i;:::-;475:414:0;9621:59:8;;9411:274;:::o;632:197:10:-;475:414:0;;753:25:10;;;;543:66:7;475:414:0;;;;;;;753:25:10;;;;;;:::i;:::-;475:414:0;743:36:10;;785:40;632:197;:::o;1637:245:11:-;475:414:0;;753:25:10;;;;834:66:11;475:414:0;;;;;;;753:25:10;;;;;;:::i;:::-;475:414:0;743:36:10;;785:40;2409:4:8;475:414:0;2409:4:8;753:25:10;2409:4:8;475:414:0;;1637:245:11;:::o;475:414:0:-;;;;;;;:::i;:::-;-1:-1:-1;475:414:0;;;;;;;:::o;:::-;;-1:-1:-1;475:414:0;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;3199:3386:12:-;;;;;;;566:109:28;;;;;3504:69:12;;;3999:24;475:414:0;;:::i;:::-;;;;;:::i;:::-;4216:35:12;4200:51;;4196:870;;3199:3386;5139:20;4216:35;5139:20;;;:28;5135:242;;-1:-1:-1;5485:4:12;5469:20;;;:28;5448:18;;;475:414:0;2409:4:8;475:414:0;2409:4:8;;;;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;5639:67:12;;;;;5811:20;5448:18;5811:20;5810:27;;475:414:0;2409:4:8;;;5810:27:12;5809:33;;;:::i;:::-;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;5850:65:12;;;;5961:15;;;;;:::i;:::-;6036:19;;;;;;:::i;:::-;6004:52;;;;:::i;:::-;5982:74;6075:50;;;545:85:29;;;;;;;461:173;;6075:50:12;6143:51;;;545:85:29;;;;;;;461:173;;6143:51:12;475:414:0;;;6212:72:12;;545:85:29;;;;;;;461:173;;6212:72:12;475:414:0;;;6429:32:12;;;;;:67;;;;3199:3386;6429:104;;;;;3199:3386;6425:156;;;3199:3386;:::o;6425:156::-;475:414:0;;6550:24:12;;;475:414:0;;6550:24:12;;;475:414:0;;;;;;;;;;;;5170:45:11;6429:104:12;6514:19;;5448:18;6514:19;;475:414:0;-1:-1:-1;6500:33:12;6429:104;;;:67;6465:31;;;-1:-1:-1;6429:67:12;;;;5135:242;475:414:0;;;;;;;;;;;;:::i;:::-;5177:109:12;;5300:70;5350:19;;;;;:::i;:::-;5300:70;;;;:::i;:::-;5293:77;;;;;;;;;:::o;5177:109::-;5235:42;-1:-1:-1;5235:42:12;;-1:-1:-1;5235:42:12;4196:870;-1:-1:-1;;;4401:28:12;4417:4;4401:20;;:28;4196:870;4397:663;1840:135:28;;;;;;;-1:-1:-1;1840:135:28;;;-1:-1:-1;4441:56:12;1840:135:28;;;475:414:0;3162:307:28;475:414:0;:::i;:::-;4528:28:12;4512:44;;4508:544;;4397:663;;;;4196:870;;4508:544;1318:135:28;;;;-1:-1:-1;1201:256:28;;-1:-1:-1;475:414:0;;1318:135:28;;;;;;4417:4:12;;4925:73;;4417:4;;2409::8;;4820:48:12;;1318:135:28;;4838:29:12;1318:135:28;;4838:29:12;:::i;:::-;4820:48;;:::i;:::-;2409:4:8;;;:::i;:::-;475:414:0;;4925:73:12;;;;;;475:414:0;4925:73:12;;4974:4;4925:73;;;;:::i;:::-;;475:414:0;;4925:73:12;;;;;;5011:30;4925:73;-1:-1:-1;4925:73:12;;;4508:544;4914:84;5011:30;;:::i;:::-;4508:544;;;;;;;4925:73;;;;4417:4;4925:73;4417:4;4925:73;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1431:196:29;;1538:85;1431:196;;;;1538:85;;;;;;;1431:196;:::o;1997:192::-;;2098:87;1997:192;;;;2098:87;;;;;;;1997:192;:::o;758:271::-;825:200;;;;;;;;;;;;;;;;;;;;758:271::o;443:185:10:-;475:414:0;;552:25:10;;;;834:66:11;475:414:0;;;;;;;552:25:10;;;;;;:::i;:::-;475:414:0;542:36:10;;584:40;443:185::o;:::-;475:414:0;;552:25:10;;;;543:66:7;475:414:0;;;;;;;552:25:10;;;;;;:::i;443:185::-;475:414:0;;552:25:10;;;;753:66:5;475:414:0;;;;;;;552:25:10;;;;;;:::i;1027:351:8:-;1294:48;;;-1:-1:-1;1294:48:8;;475:414:0;;;1165:202:8;;;;475:414:0;627:66:8;475:414:0;;797:66:8;475:414:0;956:66:8;;475:414:0;956:66:8;;;;475:414:0;956:66:8;;;475:414:0;;956:66:8;;;475:414:0;956:66:8;1165:202;;;;;;:::i;1294:48::-;1328:13;1294:48;;;475:414:0;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;8435:972:8;8573:22;;;;475:414:0;;8556:40:8;;475:414:0;8556:40:8;;;475:414:0;;;:::i;8556:40:8:-;475:414:0;8546:51:8;;475:414:0;;;;;;;;;;;;8608:34:8;475:414:0;;8682:14:8;;;8722:82;8672:25;475:414:0;8682:14:8;;;8672:25;:::i;:::-;8760:14;8722:82;8776:14;8760;;;475:414:0;8776:14:8;;475:414:0;;;;8722:82:8;;;8556:40;8722:82;;;;1887:66;;;;;;;;;475:414:0;1887:66:8;475:414:0;;1887:66:8;;;475:414:0;1887:66:8;;;475:414:0;1887:66:8;;;475:414:0;1887:66:8;475:414:0;1887:66:8;8604:799;2851:4;8822:29;;2851:4;;-1:-1:-1;;8917:16:8;;;475:414:0;;8556:40:8;475:414:0;;;8907:27:8;475:414:0;;;2067:66:8;8878:70;;;475:414:0;;;2067:66:8;;;475:414:0;;;;2067:66:8;;;475:414:0;;;;8878:70:8;;475:414:0;2067:66:8;;;8878:70;2067:66;8818:585;2955:4;8966:35;;2955:4;;-1:-1:-1;;9063:18:8;;475:414:0;;;;2262:66:8;8556:40;9028:67;;475:414:0;;;2067:66:8;;;475:414:0;;;;2067:66:8;;;475:414:0;;;;9028:67:8;475:414:0;2067:66:8;;;9028:67;2067:66;8962:441;2644:4;9113:28;2644:4;;-1:-1:-1;9290:15:8;;475:414:0;;;;2067:66:8;8556:40;9261:58;;475:414:0;;;2067:66:8;;;475:414:0;;;;2067:66:8;;;475:414:0;;;;9261:58:8;475:414:0;2067:66:8;;;9261:58;2067:66;9109:294;9370:26;475:414:0;9370:26:8;475:414:0;;9370:26:8;475:414:0;2570:4:8;1736:1:4;1830:29;475:414:0;;;;;;;;;;;;;;;;;;:::i;6589:1730:12:-;;;;;;475:414:0;6785:14:12;475:414:0;6801:17:12;475:414:0;6820:18:12;475:414:0;6840:14:12;475:414:0;;;;:::i;:::-;;2644:4:8;;6904:47:12;7003:17;;475:414:0;7034:26:12;;;;;;475:414:0;;;;;;;;;8195:33:12;;:71;;;7027:1158;8191:124;;6589:1730;:::o;8195:71::-;8246:20;;;;475:414:0;8232:34:12;;;8195:71;;7027:1158;1318:135:28;;;;-1:-1:-1;1201:256:28;;-1:-1:-1;1201:256:28;;-1:-1:-1;1201:256:28;;-1:-1:-1;1201:256:28;;;;7198:16:12;;1318:135:28;;;;;;;7198:16:12;:::i;:::-;7265:97;:28;;;;;:97;7296:35;7265:97;;7003:17;7375:35;;7003:17;;7503:26;7485:73;7503:26;;;;;;;;:::i;:::-;7485:73;;;:::i;:::-;7422:136;;;;;;;;;;;;;;;;7371:355;;;;7738:18;7734:122;;7863:16;475:414:0;;;;7892:32:12;7888:89;;7371:355;7989:28;;;;7985:115;;8108:23;;;;;2644:4:8;8151:27:12;7027:1158;;;;;;;;;;;;7985:115;8036:55;475:414:0;8036:55:12;3864:48:11;475:414:0;;;;;;1736:1:4;1830:29;7888:89:12;475:414:0;2644:4:8;;7888:89:12;;7734:122;7801:26;;7775:72;7801:26;;;;;;:::i;:::-;475:414:0;;;;;7775:72:12;;;;;;;;;;:::i;7371:355::-;7662:26;;;;;;;;7639:78;7662:26;;;;:::i;:::-;7639:78;;;:::i;:::-;-1:-1:-1;7583:134:12;;;;;;;;;;;;;7371:355;;7265:97;;2955:4:8;7265:97:12;;;842:1;;;;;;;;;;;;;:::i;:::-;;;;;;475:414:0;;842:1:12;;;;;;;;:::i;:::-;475:414:0;842:1:12;;;;;475:414:0;;;842:1:12;;;475:414:0;842:1:12;;;;;;;;:::i;1206:::-;;;;;;;;;475:414:0;1206:1:12;:::o;8323:11084::-;;;;;475:414:0;8478:12:12;475:414:0;8516:14:12;475:414:0;8592:26:12;;;;;;8323:11084;;;;;:::o;8585:10812::-;798:135:28;;;;;;;;;;;;;;;;683:254;;;;2409:4:8;;9002:27:12;;;8998:864;;9922:20;585:1:4;9922:20:12;;9918:676;;842:1;10644:30;;10640:1383;;885:1;12060:17;;12056:279;;8953:1;12374:19;;12370:656;;1023:1;13065:19;;13061:1278;;978:1;14381:22;;14377:518;;1080:1;14946:31;;14942:933;;1150:1;16012:44;;16008:617;;1206:1;16675:30;;16671:1308;;1270:2;18037:38;;18033:1312;;19362:26;475:414:0;19362:26:12;8953:1;475:414:0;;;;1736:1:4;1830:29;18033:1312:12;18347:16;;;;;;;;;885:1;18347:16;;18380:15;;;18376:99;;18033:1312;1840:135:28;;;;;;;;;18629:16:12;;475:414:0;2409:4:8;;;475:414:0;;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;475:414:0;;;19015:26:12;;;;;;;:::i;:::-;475:414:0;;;18953:89:12;;475:414:0;;;;18953:89:12;;475:414:0;8953:1:12;18953:89;;;:::i;:::-;;475:414:0;;;;18953:89:12;;;;;;;;;;;;19185:51;18953:89;475:414:0;18953:89:12;;;18033:1312;19054:16;475:414:0;19054:16:12;475:414:0;;;;;19185:51:12;;:::i;:::-;19255:59;:18;;;;19276:31;;;545:85:29;;;;;;;461:173;;19276:31:12;19326:8;8585:10812;;;;;;;;19255:59;;;;18953:89;475:414:0;18953:89:12;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;18376:99;798:135:28;;;;;;;-1:-1:-1;798:135:28;;18376:99:12;;16671:1308;16977:16;;;;;;;;;885:1;16977:16;;17010:15;;;17006:99;;16671:1308;1840:135:28;;;;;;;;;17297:16:12;;475:414:0;2409:4:8;;;475:414:0;;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;475:414:0;;;17648:26:12;;;;;;;:::i;:::-;475:414:0;;;17599:76:12;;475:414:0;;;;17599:76:12;;475:414:0;8953:1:12;17599:76;;;:::i;:::-;;475:414:0;;;;17599:76:12;;;;;;;;;;;;17819:51;17599:76;475:414:0;17599:76:12;;;17687:16;475:414:0;17687:16:12;475:414:0;;;;;17819:51:12;;:::i;:::-;17889:59;:18;;;;17910:31;;;545:85:29;;;;;;;461:173;;17910:31:12;17960:8;;;17889:59;;;;17006:99;798:135:28;;;;;;;-1:-1:-1;798:135:28;;17006:99:12;;16008:617;2926:232:28;-1:-1:-1;2102:103:28;;;;-1:-1:-1;2926:232:28;;;;;;;;;;2102:103;;;16323:28:12;2926:232:28;16323:28:12;:::i;:::-;16367:29;;16363:88;;16008:617;16478:38;;;:::i;16363:88::-;16421:17;;-1:-1:-1;16363:88:12;;14942:933;15290:16;;;;;;;;;15302:4;15290:16;15323:15;;;15319:99;;14942:933;15592:61;475:414:0;3511:494:28;15572:92:12;3511:494:28;;;;:::i;:::-;15491:53:12;;;;475:414:0;;;15592:61:12;;;;;;;;1080:1;;;;;;;;475:414:0;1080:1:12;;;15592:61;475:414:0;15582:72:12;;475:414:0;;;15572:92:12;;;;740:1;;;;475:414:0;740:1:12;;;;;475:414:0;;;;740:1:12;;;475:414:0;740:1:12;;;475:414:0;740:1:12;475:414:0;740:1:12;15572:92;;;;;;585:1:4;15572:92:12;;;;;15724:42;15572:92;475:414:0;;15572:92:12;475:414:0;;;;;15724:42:12;;:::i;15319:99::-;798:135:28;;;;;;;;;;-1:-1:-1;15319:99:12;;14377:518;2926:232:28;-1:-1:-1;2102:103:28;;;;-1:-1:-1;2926:232:28;;;;;;;;;;2102:103;;;14647:20:12;;;14643:79;;14377:518;14749:37;;;:::i;14643:79::-;14692:17;;-1:-1:-1;14643:79:12;;13061:1278;13430:16;;;;;;;;2409:4:8;13430:16:12;;13399:53;13424:28;13442:4;13430:16;;2409:4:8;;475:414:0;2409:4:8;;;;13399:53:12;13468:19;;;13464:107;;13061:1278;885:1;13617:16;13650:22;;13646:114;;13061:1278;1201:256:28;;;13947:60:12;;13980:26;;1318:135:28;;;;;;;;;2409:4:8;;475:414:0;;13980:26:12;;;;;:::i;:::-;13947:60;;;;:::i;:::-;14019:16;-1:-1:-1;14052:35:12;14048:92;;13061:1278;14167:63;;;;;:::i;14048:92::-;475:414:0;;;;14048:92:12;;13646:114;-1:-1:-1;1058:135:28;;;;;;;;;13646:114:12;;13464:107;798:135:28;;;;;;;-1:-1:-1;798:135:28;;;;;13464:107:12;;12370:656;12571:16;;;2213:380:28;12860:26:12;12571:16;;;;;;12583:4;12827:60;12571:16;;2213:380:28;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;475:414:0;;;;12860:26:12;;;;;:::i;:::-;12827:60;;;;:::i;:::-;;12964:31;12827:60;475:414:0;;12964:31:12;545:85:29;;;;;;;461:173;;12056:279:12;2926:232:28;-1:-1:-1;2926:232:28;-1:-1:-1;2926:232:28;;;;;;;;;2102:103;;;;;;;12245:59:12;:18;;;;12266:31;;;545:85:29;;;;;;;461:173;;10640:1383:12;10935:16;;;;;;;;;885:1;10935:16;;10968:15;;;10964:99;;10640:1383;1840:135:28;;;;;;;2213:380;;1840:135;;;11217:47:12;;475:414:0;2409:4:8;;;11236:28:12;2409:4:8;11217:47:12;2213:380:28;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;475:414:0;;;11572:26:12;11531:68;;11572:26;;;;;;;:::i;:::-;475:414:0;;;;;;11531:68:12;;;;;;;475:414:0;11531:68:12;;8953:1;11531:68;;;:::i;:::-;;475:414:0;;11531:68:12;;;;;;;475:414:0;11531:68:12;475:414:0;11531:68:12;475:414:0;11531:68:12;;;10640:1383;475:414:0;;11531:97:12;11527:203;;11741:16;;475:414:0;11872:42:12;11741:16;475:414:0;;;;;11872:42:12;;:::i;11527:203::-;11651:66;11690:26;;;;;;;;:::i;:::-;475:414:0;;;11651:66:12;;;;;;8953:1;11651:66;;;:::i;11531:68::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10964:99;798:135:28;;;;;;;-1:-1:-1;798:135:28;;10964:99:12;;9918:676;10115:16;10127:4;10115:16;;;;;;;;;;10148:15;;;10144:99;;9918:676;1840:135:28;;;;10443:42:12;;475:414:0;;;;;1840:135:28;;;;;10443:42:12;:::i;10144:99::-;798:135:28;;;;;;;-1:-1:-1;798:135:28;;10144:99:12;;8998:864;9342:16;;;;;;;;;;9354:4;9342:16;9375:15;;;9371:99;;8998:864;3511:494:28;9624:27:12;475:414:0;3511:494:28;9624:27:12;3511:494:28;;;;:::i;:::-;9543:53:12;;;475:414:0;;9624:27:12;;;;;740:1;;;;475:414:0;740:1:12;;;;;475:414:0;;;;740:1:12;;;475:414:0;740:1:12;;;475:414:0;740:1:12;475:414:0;740:1:12;9371:99;798:135:28;;;;-1:-1:-1;798:135:28;;;;;;-1:-1:-1;9624:27:12;9371:99;;1742:238:14;475:414:0;1742:238:14;475:414:0;;1886:62:14;;;475:414:0;;;;;1912:7:14;475:414:0;;;;;;;;;;;1933:14:14;475:414:0;;;;;1886:62:14;;;;;;:::i;:::-;475:414:0;1876:73:14;;475:414:0;1970:4:14;1852:123;1742:238;:::o;475:414:0:-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;7977:454:8;;475:414:0;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;-1:-1:-1;8321:3:8;475:414:0;;8303:16:8;;;;;8359:8;;475:414:0;8359:8:8;;;:::i;:::-;;475:414:0;;;;7865:7:8;475:414:0;7865:7:8;;475:414:0;7884:6:8;475:414:0;7884:6:8;;;475:414:0;;;;;7874:17:8;7893:10;;;;475:414:0;7905:14:8;;;475:414:0;;;7921:14:8;7937:17;7921:14;;;475:414:0;;;7937:17:8;;475:414:0;;;;7824:138:8;475:414:0;7824:138:8;;475:414:0;1566:66:8;475:414:0;;;1566:66:8;;475:414:0;7893:10:8;1566:66;;475:414:0;7905:14:8;1566:66;;475:414:0;7921:14:8;1566:66;;475:414:0;7937:17:8;1566:66;;475:414:0;1566:66:8;;;475:414:0;1566:66:8;;;475:414:0;1566:66:8;7824:138;;;;;;:::i;:::-;475:414:0;7807:161:8;;8334:34;;;;:::i;:::-;2644:4;475:414:0;8288:13:8;;8303:16;;;;;475:414:0;;8397:28:8;;475:414:0;;8397:28:8;;475:414:0;;;:::i;3511:494:28:-;3690:173;;;;;;;;;;;;3998:2;3955:14;3931:39;;2409:4:8;475:414:0;2409:4:8;475:414:0;;;;;;3511:494:28;:::o;2183:181:12:-;;475:414:0;;2304:54:12;475:414:0;2304:54:12;;;475:414:0;;;;;;;;;;;;;;;;2304:54:12;;;;;;:::i;2368:210::-;;475:414:0;;2499:73:12;;;;475:414:0;;;;;;;;;;;;;;;;;2499:73:12;;;;;;:::i;2798:182::-;475:414:0;;2917:57:12;;;475:414:0;;;;;;;;;2917:57:12;;;;;;:::i;9689:280:8:-;9915:48;;9874:18;9803:44;475:414:0;9819:18:8;;;475:414:0;;;9803:44:8;:::i;2984:211:12:-;475:414:0;;3114:75:12;;;475:414:0;;;;;;;;;3114:75:12;;;;;;:::i;2582:212::-;;475:414:0;;2714:74:12;475:414:0;2714:74:12;;;475:414:0;;;;;;;;;;;;;;;;;;;;2714:74:12;;;;;;:::i","linkReferences":{},"immutableReferences":{"4262":[{"start":3153,"length":32},{"start":15657,"length":32}],"4265":[{"start":3487,"length":32},{"start":15610,"length":32}],"4268":[{"start":3334,"length":32},{"start":4676,"length":32}],"517":[{"start":4317,"length":32},{"start":4787,"length":32},{"start":6938,"length":32}]}},"methodIdentifiers":{"FACTORY()":"2dd31000","INIT_CODE_HASH()":"257671f5","STAGE_2_IMPLEMENTATION()":"9f69ef54","addHook(bytes4,address)":"b93ea7ad","entrypoint()":"a65d69d4","execute(bytes,bytes)":"1f6a1eb9","executeUserOp(bytes)":"9c145aed","getImplementation()":"aaf10f42","getStaticSignature(bytes32)":"92dcb3fc","isValidSignature(bytes32,bytes)":"1626ba7e","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","readHook(bytes4)":"1a9b2337","readNonce(uint256)":"8c3f5563","recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"ad55366b","recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"13792a4a","removeHook(bytes4)":"4fcf3eca","selfExecute(bytes)":"6ea44577","setStaticSignature(bytes32,address,uint96)":"f727ef1c","tokenReceived(address,uint256,bytes)":"8943ec02","tokensReceived(address,address,address,uint256,bytes,bytes)":"0023de29","updateImageHash(bytes32)":"29561426","updateImplementation(address)":"025b22bc","validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)":"19822f7c"}}}},"src/Stage2Module.sol":{"Stage2Module":{"abi":[{"type":"constructor","inputs":[{"name":"_entryPoint","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"addHook","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"implementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"entrypoint","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"execute","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeUserOp","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getImplementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"imageHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"onERC1155BatchReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC1155Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"readHook","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"readNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"recoverPartialSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"weight","type":"uint256","internalType":"uint256"},{"name":"isValidImage","type":"bool","internalType":"bool"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"},{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"recoverSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"removeHook","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"selfExecute","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_address","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tokenReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"tokensReceived","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operatorData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImageHash","inputs":[{"name":"_imageHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImplementation","inputs":[{"name":"_implementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"validateUserOp","inputs":[{"name":"userOp","type":"tuple","internalType":"struct PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"missingAccountFunds","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"validationData","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"event","name":"CallAborted","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_returnData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"CallFailed","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_returnData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"CallSkipped","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CallSucceeded","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DefinedHook","inputs":[{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"implementation","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ImageHashUpdated","inputs":[{"name":"newImageHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ImplementationUpdated","inputs":[{"name":"newImplementation","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"NonceChange","inputs":[{"name":"_space","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_newNonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StaticSignatureSet","inputs":[{"name":"_hash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"_address","type":"address","indexed":false,"internalType":"address"},{"name":"_timestamp","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"error","name":"BadNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"},{"name":"_provided","type":"uint256","internalType":"uint256"},{"name":"_current","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ChainedSignatureNestedInChainedSignature","inputs":[]},{"type":"error","name":"ERC4337Disabled","inputs":[]},{"type":"error","name":"HookAlreadyExists","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}]},{"type":"error","name":"HookDoesNotExist","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}]},{"type":"error","name":"ImageHashIsZero","inputs":[]},{"type":"error","name":"InvalidERC1271Signature","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidEntryPoint","inputs":[{"name":"_entrypoint","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidPackedLength","inputs":[]},{"type":"error","name":"InvalidSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignatureFlag","inputs":[{"name":"_flag","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidSignatureWeight","inputs":[{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureExpired","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_expires","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureWrongCaller","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_caller","type":"address","internalType":"address"},{"name":"_expectedCaller","type":"address","internalType":"address"}]},{"type":"error","name":"LowWeightChainedSignature","inputs":[{"name":"_signature","type":"bytes","internalType":"bytes"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotEnoughGas","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_gasLeft","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrantCall","inputs":[]},{"type":"error","name":"Reverted","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_returnData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"UnusedSnapshot","inputs":[{"name":"_snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"WrongChainedCheckpointOrder","inputs":[{"name":"_nextCheckpoint","type":"uint256","internalType":"uint256"},{"name":"_checkpoint","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_entryPoint\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"}],\"name\":\"BadNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainedSignatureNestedInChainedSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC4337Disabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"HookAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"HookDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ImageHashIsZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidERC1271Signature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_entrypoint\",\"type\":\"address\"}],\"name\":\"InvalidEntryPoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPackedLength\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSapientSignature\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_expires\",\"type\":\"uint256\"}],\"name\":\"InvalidStaticSignatureExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_expectedCaller\",\"type\":\"address\"}],\"name\":\"InvalidStaticSignatureWrongCaller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasLeft\",\"type\":\"uint256\"}],\"name\":\"NotEnoughGas\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"_snapshot\",\"type\":\"tuple\"}],\"name\":\"UnusedSnapshot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nextCheckpoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_checkpoint\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"CallAborted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"CallSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"DefinedHook\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newImageHash\",\"type\":\"bytes32\"}],\"name\":\"ImageHashUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"ImplementationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"StaticSignatureSet\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"addHook\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"entrypoint\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"executeUserOp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"getStaticSignature\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"imageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"readHook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"}],\"name\":\"readNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverPartialSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValidImage\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"removeHook\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"selfExecute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"setStaticSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"tokenReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"tokensReceived\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"}],\"name\":\"updateImplementation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"missingAccountFunds\",\"type\":\"uint256\"}],\"name\":\"validateUserOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"addHook(bytes4,address)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"implementation\":\"The implementation address of the hook\",\"selector\":\"The selector of the hook\"}},\"execute(bytes,bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature\"}},\"executeUserOp(bytes)\":{\"details\":\"This is the execute function for the EntryPoint to call.\",\"params\":{\"_payload\":\"The packed payload\"}},\"getImplementation()\":{\"returns\":{\"_0\":\"implementation The implementation\"}},\"getStaticSignature(bytes32)\":{\"params\":{\"_hash\":\"The hash to get the static signature for\"},\"returns\":{\"_0\":\"address The address associated with the static signature\",\"_1\":\"timestamp The timestamp of the static signature\"}},\"imageHash()\":{\"returns\":{\"_0\":\"imageHash The image hash\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"_0\":\"Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"The list of token IDs being transferred\",\"operator\":\"The address which initiated the transfer\",\"values\":\"The amounts of each token being transferred\"},\"returns\":{\"_0\":\"On a success, the selector of the function that was called\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"operator\":\"The address which initiated the transfer\",\"tokenId\":\"The ID of the token being transferred\",\"value\":\"The amount of token being transferred\"},\"returns\":{\"_0\":\"On a success, the selector of the function that was called\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"operator\":\"The address which initiated the transfer\",\"tokenId\":\"The ID of the token being transferred\"},\"returns\":{\"_0\":\"On a success, the selector of the function that was called\"}},\"readHook(bytes4)\":{\"params\":{\"selector\":\"The selector of the hook\"},\"returns\":{\"_0\":\"implementation The implementation address of the hook\"}},\"readNonce(uint256)\":{\"params\":{\"_space\":\"The space\"},\"returns\":{\"_0\":\"nonce The nonce\"}},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature to recover\"},\"returns\":{\"checkpoint\":\"The checkpoint identifier\",\"imageHash\":\"The derived image hash\",\"isValidImage\":\"Whether the image hash is valid\",\"opHash\":\"The hash of the payload\",\"threshold\":\"The signature threshold\",\"weight\":\"The derived weight\"}},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"payload\":\"The payload to recover the signature from\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"_0\":\"The recovered image hash\"}},\"removeHook(bytes4)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"selector\":\"The selector of the hook\"}},\"selfExecute(bytes)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"_payload\":\"The payload\"}},\"setStaticSignature(bytes32,address,uint96)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_address\":\"The address to associate with the static signature\",\"_hash\":\"The hash to set the static signature for\",\"_timestamp\":\"The timestamp of the static signature\"}},\"tokenReceived(address,uint256,bytes)\":{\"params\":{\"data\":\"Transaction metadata\",\"from\":\"The address which previously owned the tokens\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"The signature of the function to be called\"}},\"tokensReceived(address,address,address,uint256,bytes,bytes)\":{\"params\":{\"amount\":\"The amount of tokens being transferred\",\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the tokens\",\"operator\":\"The address which initiated the transfer\",\"operatorData\":\"Additional data with no specified format\",\"to\":\"The address which is receiving the tokens\"}},\"updateImageHash(bytes32)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_imageHash\":\"The new image hash\"}},\"updateImplementation(address)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"_implementation\":\"The new implementation\"}},\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"details\":\"Must validate caller is the entryPoint. Must validate the signature and nonce\",\"params\":{\"missingAccountFunds\":\"- Missing funds on the account's deposit in the entrypoint. This is the minimum amount to transfer to the sender(entryPoint) to be able to make the call. The excess is left as a deposit in the entrypoint for future calls. Can be withdrawn anytime using \\\"entryPoint.withdrawTo()\\\". In case there is a paymaster in the request (or the current deposit is high enough), this value will be zero.\",\"userOp\":\"- The operation that is about to be executed.\",\"userOpHash\":\"- Hash of the user's request data. can be used as the basis for signature.\"},\"returns\":{\"validationData\":\" - Packaged ValidationData structure. use `_packValidationData` and `_unpackValidationData` to encode and decode. <20-byte> aggregatorOrSigFail - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \\\"aggregator\\\" contract. <6-byte> validUntil - Last timestamp this operation is valid at, or 0 for \\\"indefinitely\\\" <6-byte> validAfter - First timestamp this operation is valid If an account doesn't use time-range, it is enough to return SIG_VALIDATION_FAILED value (1) for signature failure. Note that the validation code cannot use block.timestamp (or block.number) directly.\"}}},\"title\":\"Stage2Module\",\"version\":1},\"userdoc\":{\"errors\":{\"BadNonce(uint256,uint256,uint256)\":[{\"notice\":\"Error thrown when the nonce is bad\"}],\"ChainedSignatureNestedInChainedSignature()\":[{\"notice\":\"Error thrown when a chained signature is nested inside another chained signature\"}],\"HookAlreadyExists(bytes4)\":[{\"notice\":\"Error thrown when a hook already exists\"}],\"HookDoesNotExist(bytes4)\":[{\"notice\":\"Error thrown when a hook does not exist\"}],\"ImageHashIsZero()\":[{\"notice\":\"Error thrown when the image hash is zero\"}],\"InvalidERC1271Signature(bytes32,address,bytes)\":[{\"notice\":\"Error thrown when the ERC1271 signature is invalid\"}],\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidPackedLength()\":[{\"notice\":\"Error thrown when the encoding is invalid\"}],\"InvalidSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when the sapient signature is invalid\"}],\"InvalidSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when a signature is invalid\"}],\"InvalidSignatureFlag(uint256)\":[{\"notice\":\"Error thrown when the signature flag is invalid\"}],\"InvalidSignatureWeight(uint256,uint256)\":[{\"notice\":\"Error thrown when the signature weight is invalid\"}],\"InvalidStaticSignatureExpired(bytes32,uint256)\":[{\"notice\":\"Error thrown when the static signature has expired\"}],\"InvalidStaticSignatureWrongCaller(bytes32,address,address)\":[{\"notice\":\"Error thrown when the static signature has the wrong caller\"}],\"LowWeightChainedSignature(bytes,uint256,uint256)\":[{\"notice\":\"Error thrown when the weight is too low for a chained signature\"}],\"NotEnoughGas((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),uint256,uint256)\":[{\"notice\":\"Error thrown when there is not enough gas\"}],\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}],\"ReentrantCall()\":[{\"notice\":\"Error thrown when a reentrant call is detected\"}],\"Reverted((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),uint256,bytes)\":[{\"notice\":\"Error thrown when a call reverts\"}],\"UnusedSnapshot((bytes32,uint256))\":[{\"notice\":\"Error thrown when the snapshot is unused\"}],\"WrongChainedCheckpointOrder(uint256,uint256)\":[{\"notice\":\"Error thrown when the checkpoint order is wrong\"}]},\"events\":{\"CallAborted(bytes32,uint256,bytes)\":{\"notice\":\"Emitted when a call is aborted\"},\"CallFailed(bytes32,uint256,bytes)\":{\"notice\":\"Emitted when a call fails\"},\"CallSkipped(bytes32,uint256)\":{\"notice\":\"Emitted when a call is skipped\"},\"CallSucceeded(bytes32,uint256)\":{\"notice\":\"Emitted when a call succeeds\"},\"DefinedHook(bytes4,address)\":{\"notice\":\"Emitted when a hook is defined\"},\"ImageHashUpdated(bytes32)\":{\"notice\":\"Emitted when the image hash is updated\"},\"ImplementationUpdated(address)\":{\"notice\":\"Emitted when the implementation is updated\"},\"NonceChange(uint256,uint256)\":{\"notice\":\"Emitted when the nonce is changed\"},\"StaticSignatureSet(bytes32,address,uint96)\":{\"notice\":\"Event emitted when a static signature is set\"}},\"kind\":\"user\",\"methods\":{\"addHook(bytes4,address)\":{\"notice\":\"Add a hook\"},\"execute(bytes,bytes)\":{\"notice\":\"Execute a call\"},\"executeUserOp(bytes)\":{\"notice\":\"Execute a user operation\"},\"getImplementation()\":{\"notice\":\"Get the implementation\"},\"getStaticSignature(bytes32)\":{\"notice\":\"Get the static signature for a specific hash\"},\"imageHash()\":{\"notice\":\"Get the image hash\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Called when multiple ERC1155 tokens are transferred to this contract\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"notice\":\"Called when a single ERC1155 token is transferred to this contract\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Called when a single ERC721 token is transferred to this contract\"},\"readHook(bytes4)\":{\"notice\":\"Read a hook\"},\"readNonce(uint256)\":{\"notice\":\"Read the nonce\"},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recover the partial signature\"},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recovers the image hash of a given signature\"},\"removeHook(bytes4)\":{\"notice\":\"Remove a hook\"},\"selfExecute(bytes)\":{\"notice\":\"Execute a call\"},\"setStaticSignature(bytes32,address,uint96)\":{\"notice\":\"Set the static signature for a specific hash\"},\"tokenReceived(address,uint256,bytes)\":{\"notice\":\"Called when ERC223 tokens are received by this contract\"},\"tokensReceived(address,address,address,uint256,bytes,bytes)\":{\"notice\":\"Called when tokens are received by this contract\"},\"updateImageHash(bytes32)\":{\"notice\":\"Update the image hash\"},\"updateImplementation(address)\":{\"notice\":\"Update the implementation\"},\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"notice\":\"Validate user's signature and nonce the entryPoint will make the call to the recipient only if this validation call returns successfully. signature failure should be reported by returning SIG_VALIDATION_FAILED (1). This allows making a \\\"simulation call\\\" without a valid signature Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\"}},\"notice\":\"The second stage of the wallet\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Stage2Module.sol\":\"Stage2Module\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/Stage2Module.sol\":{\"keccak256\":\"0xd0b2c2fead81d32a3f83f95bd1dd2d90677fdd1e0a7194a25710ffd0fdaee428\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8489e75346dbf462b0567da30c2e020cdde3975c38bdfee055284642a3bd2d19\",\"dweb:/ipfs/QmTDM2AkG8qLVjfn35UcXN89CdQS8p3Cm888EadYrMAYAR\"]},\"src/modules/Calls.sol\":{\"keccak256\":\"0xa1341a9dc102ceec53bcdff123322e7ecb19cec6101086944c87552284969eeb\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36619e8abb171d9f812be49572fba6d64dd62c0d7a6fb674cde1a0cf28a5f919\",\"dweb:/ipfs/QmWR45P7Q4M44QfyNQvA3ThMyApz3snMJVRin8ujq2ouQK\"]},\"src/modules/ERC4337v07.sol\":{\"keccak256\":\"0x4c73f4de4d7652935731b539c8055b822b83c7c2d2220a5d54025e263f54b188\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c310e22792d3d057ae14abb22bd6979a240fb46bd2566efc78425c0b37f46c9b\",\"dweb:/ipfs/QmWAUctttbEEJnRHnRHtfGPT5YDzqo1Zw72z82LiusESKn\"]},\"src/modules/Hooks.sol\":{\"keccak256\":\"0xd1f9de45b83ae5f9f32a4d1c709d7a2b6543b1cddd09bf69d401dcdf1d154ab7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bf3161edf37479825588e07039752b79792666455cc0beb1ca0e873b3be31ad4\",\"dweb:/ipfs/QmYYpJeSsRgRx2oHcpvhqsNs7ZtDhVnxLmFpXz5eYcS8g4\"]},\"src/modules/Implementation.sol\":{\"keccak256\":\"0x16546d4be07865808890308750916b0a9a55e7a994a458c01edde4618f29b4e6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1b1f9785b08c9f29d6849ba2d3dee89fa3ea5f3c2feec4a59a6d1040e3fbe040\",\"dweb:/ipfs/QmU2Pm5C3Ztky7RQdCZggavyq7Eh1eS1HFqVz9jZKiMUML\"]},\"src/modules/Nonce.sol\":{\"keccak256\":\"0x56fbf6dc9b34ab60ae8a32ffb6f583c003bb8f4a5223ce704e982400fa403fab\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://492f53628633b862702cf8f9b726067a722c94028133a8a4c4fcf3d0e73ad803\",\"dweb:/ipfs/QmTHNy4XbH47YZaqKDpknb5aApjRH9HVAREHN7N5vEFWEV\"]},\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/ReentrancyGuard.sol\":{\"keccak256\":\"0x566e105b1a53f49cf099037f3cb4a9739522d72739dc65f1169b97e4fbe07b32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d811a16613746e5290eab76eb4055d98a1e64e1086632697d09b0a3759a6bac5\",\"dweb:/ipfs/QmPJ33JvAxwn1sTCNvYG2TWsFo991KND2ia8JcvZ26Dge9\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]},\"src/modules/auth/BaseAuth.sol\":{\"keccak256\":\"0x1aea32726fe1e8c204805a01fde5a7c832caa76960bf57bbaa2cf13e6804b9dc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://851b09d56bfc9b2f2025f1351ca2a4ae5e9c82e8fb26e58216cff849fc9f8320\",\"dweb:/ipfs/QmeHcagSWRPXR1ac1jEChoYTDzfhLyvfGKAgfu4nc3uctc\"]},\"src/modules/auth/BaseSig.sol\":{\"keccak256\":\"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46\",\"dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ\"]},\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]},\"src/modules/auth/Stage2Auth.sol\":{\"keccak256\":\"0x1379c28123f916c31becaa5830844d4fe22bb714909d19192f3608c636545d9b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e21c5628ab474d6cc8a2967da2efb08c848cf2ccb56999ee1372d56d8d24dd7c\",\"dweb:/ipfs/QmYEC9i4Bbq5p3pK7q8QniNNURLh9du5iXWU613enRM7tf\"]},\"src/modules/interfaces/IAccount.sol\":{\"keccak256\":\"0x64ca3bb59ec4fc0a60d80402802365e2d5226afe7e7aabe3b21df936c84f2bcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccfd2381e1874cdec2f473a9a17799a3b57360c0593d68ee66fcea9c16eb39b4\",\"dweb:/ipfs/QmcjbJpGz3Exmu4fsj953Y2bG8rtQaVMEFUgT6W2dUXomr\"]},\"src/modules/interfaces/IAuth.sol\":{\"keccak256\":\"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353\",\"dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp\"]},\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]},\"src/modules/interfaces/IDelegatedExtension.sol\":{\"keccak256\":\"0xa2ae897e90fd70dd4a9e172bc04d019ba9c512e72c2df65fcb6daf87dd5ceb90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cdf4b7c3dfb0aef6c9dbe8b2a0542018dc756ef2252d7101bcb3186192da0a11\",\"dweb:/ipfs/QmPHCVu1DJ7fBrPBYA5y3hoF3a3XFEBwYCZ1ErGaxPhcYL\"]},\"src/modules/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0xa23d0bc29233a91085922ea8a7e2cbe8b5f3358d3f2c3cdc58adade9a171d9c1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2f06b8f3ae7a45441cc26da5b2ddd15ba76d1664178958f63f536e6c5e4fd0fb\",\"dweb:/ipfs/QmR1Rnk8ciSn5s5wNLGvpE1QNRDsBVDfDT1ZXhei2brmFj\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/IERC223Receiver.sol\":{\"keccak256\":\"0x426221c0d48b651ed692edfa5388d6e5304e94f48598a71748134b2659e3890d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9e1ed2fd5e390b5b943dc07c2e0ea9e524eb37263dc72c482365c159fc3659e5\",\"dweb:/ipfs/QmWRDBvb1cthVPm4BSzKX3J5GpGGSBuDokkpRK9x5aA7JR\"]},\"src/modules/interfaces/IERC721Receiver.sol\":{\"keccak256\":\"0xbe14c3b727f283a467dc2f2221d3322c5a69cd64a3aacad85acab05e94438f35\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://43ef086c509b8b88cae78f67c4bd979fd427736972cfe56f7423371ccc154e63\",\"dweb:/ipfs/Qmc7Yp7Z1dQ925gzEZYVNUXnWr3YomvWkXfaGYLZpoy8J3\"]},\"src/modules/interfaces/IERC777Receiver.sol\":{\"keccak256\":\"0xd9144d439a96b0c6439cd9a186701aa530f4f782ff09fdbf6c3ef16b78b0d4e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d1f17484eda7184db4a00106b4952f15c1517872cbfe19663d6fce4e042729b2\",\"dweb:/ipfs/QmWdhYmLNkUpgvPpSyGHstxrFwMfhRTVmxDpe4frkUu1Qh\"]},\"src/modules/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0xd19922ea7a8ae09072a721138dc93e175fa77ecaa3ac6f2d759d5e5e944fb665\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20ecea69ddd4d8787c0bdc4487dea03e90f63f4296674a12728e331a78e62620\",\"dweb:/ipfs/QmZUrX8zEqfHZEJQjNtDUXGS47bj2UuRCLfbkLPrXsot1c\"]},\"src/modules/interfaces/IPartialAuth.sol\":{\"keccak256\":\"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519\",\"dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60a034607457601f613fcf38819003918201601f19168301916001600160401b03831184841017607957808492602094604052833981010312607457516001600160a01b0381168103607457608052604051613f3f90816100908239608051818181611066015281816111cd0152611a340152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001e575b361561001c5761001c611cbc565b005b60003560e01c806223de291461018d578063025b22bc1461018857806313792a4a14610183578063150b7a021461017e5780631626ba7e1461017957806319822f7c146101745780631a9b23371461016f5780631f6a1eb91461016a57806329561426146101655780634fcf3eca1461016057806351605d801461015b5780636ea44577146101565780638943ec02146101515780638c3f55631461014c57806392dcb3fc146101475780639c145aed14610142578063a65d69d41461013d578063aaf10f4214610138578063ad55366b14610133578063b93ea7ad1461012e578063bc197c8114610129578063f23a6e61146101245763f727ef1c0361000e5761154c565b6114bf565b6113ed565b61128e565b611242565b6111f1565b611182565b610ff3565b610f95565b610f59565b610ed5565b610ea6565b610e02565b610ce6565b610c2d565b610b1c565b610ab9565b610a04565b61097c565b6108ef565b6107f2565b6102db565b61024f565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b9181601f840112156101b55782359167ffffffffffffffff83116101b557602083818601950101116101b557565b346101b55760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610286610192565b5061028f6101ba565b506102986101dd565b5060843567ffffffffffffffff81116101b5576102b9903690600401610221565b505060a43567ffffffffffffffff81116101b55761001c903690600401610221565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55761030d610192565b30330361035a576020817f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0392305573ffffffffffffffffffffffffffffffffffffffff60405191168152a1005b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff8211176103d357604052565b610388565b6040810190811067ffffffffffffffff8211176103d357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176103d357604052565b6040519061044460e0836103f4565b565b60405190610444610120836103f4565b359060ff821682036101b557565b359081151582036101b557565b67ffffffffffffffff81116103d35760051b60200190565b67ffffffffffffffff81116103d357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926104cf82610489565b916104dd60405193846103f4565b8294818452818301116101b5578281602093846000960137010152565b9080601f830112156101b557816020610515933591016104c3565b90565b81601f820112156101b55780359061052f82610471565b9261053d60405194856103f4565b82845260208085019360051b830101918183116101b55760208101935b83851061056957505050505090565b843567ffffffffffffffff81116101b557820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082860301126101b5576105b0610435565b916105bd60208301610200565b83526040820135602084015260608201359267ffffffffffffffff84116101b55760e0836105f28860208098819801016104fa565b60408401526080810135606084015261060d60a08201610464565b608084015261061e60c08201610464565b60a0840152013560c082015281520194019361055a565b9080601f830112156101b557813561064c81610471565b9261065a60405194856103f4565b81845260208085019260051b8201019283116101b557602001905b8282106106825750505090565b6020809161068f84610200565b815201910190610675565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82850301126101b55761070c610446565b9061071981600401610456565b825261072760248201610464565b6020830152604481013567ffffffffffffffff81116101b55784600461074f92840101610518565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff81116101b55784600461078b928401016104fa565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116101b557600485916107c8930101610635565b610100820152916024359067ffffffffffffffff82116101b5576107ee91600401610221565b9091565b346101b5576108003661069a565b909161010081019261081b610816855151611654565b611674565b9160005b85518051821015610882579061087c61085761083d836001956116f2565b5173ffffffffffffffffffffffffffffffffffffffff1690565b61086183886116f2565b9073ffffffffffffffffffffffffffffffffffffffff169052565b0161081f565b505083838661089733610861835151856116f2565b526108a3818484611d8e565b50156108b55760405160018152602090f35b6108eb906040519384937ff58cc8b50000000000000000000000000000000000000000000000000000000085526004850161194d565b0390fd5b346101b55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610926610192565b5061092f6101ba565b5060643567ffffffffffffffff81116101b557610950903690600401610221565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b346101b55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043560243567ffffffffffffffff81116101b5576020916109d46109da923690600401610221565b91611972565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126101b557610a8760209160243560443591600401611a1b565b604051908152f35b7fffffffff000000000000000000000000000000000000000000000000000000008116036101b557565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020610afe600435610af981610a8f565b611f9e565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b557610b66903690600401610221565b60243567ffffffffffffffff81116101b557610b86903690600401610221565b9160027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610c0357610bdd9360027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55611b85565b60017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b7f37ed32e80000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043530330361035a578015610cbc576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a1005b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557600435610d1c81610a8f565b30330361035a5773ffffffffffffffffffffffffffffffffffffffff610d4182611f9e565b1615610da75760407fffffffff000000000000000000000000000000000000000000000000000000007f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19216610d98600082612d78565b815190815260006020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f1c3812cc000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b60009103126101b557565b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760207fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf854604051908152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101b5576004359067ffffffffffffffff82116101b5576107ee91600401610221565b610eaf36610e5d565b9030330361035a57610ec561001c925a926120d3565b90610ecf82612777565b90612452565b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610f0c610192565b5060443567ffffffffffffffff81116101b557610f2d903690600401610221565b505060206040517f8943ec02000000000000000000000000000000000000000000000000000000008152f35b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020610a8760043561280b565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576040610fd1600435612851565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346101b55761100136610e5d565b9060027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610c035760027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561115857330361112a57303b156101b5576110d49160009160405193849283927f6ea4457700000000000000000000000000000000000000000000000000000000845260048401611c7b565b038183305af180156111255761110a5760017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b80611119600061111f936103f4565b80610df7565b38610bdd565b6119be565b7f1d6ddbf4000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7fd13d78350000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020305473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346101b55760c061125e6000806112583661069a565b91612952565b9261126a839293613b6a565b906040519586526020860152151560408501526060840152608083015260a0820152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576004356112c481610a8f565b6112cc6101ba565b9030330361035a5773ffffffffffffffffffffffffffffffffffffffff6112f282611f9e565b1661136c577f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19173ffffffffffffffffffffffffffffffffffffffff7fffffffff0000000000000000000000000000000000000000000000000000000060409316911661135f8183612d78565b82519182526020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f5b4d6d6a000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b9181601f840112156101b55782359167ffffffffffffffff83116101b5576020808501948460051b0101116101b557565b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557611424610192565b5061142d6101ba565b5060443567ffffffffffffffff81116101b55761144e9036906004016113bc565b505060643567ffffffffffffffff81116101b5576114709036906004016113bc565b505060843567ffffffffffffffff81116101b557611492903690600401610221565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576114f6610192565b506114ff6101ba565b5060843567ffffffffffffffff81116101b557611520903690600401610221565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576004356115866101ba565b604435916bffffffffffffffffffffffff83168093036101b55730330361035a578273ffffffffffffffffffffffffffffffffffffffff836116117febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1967fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606097881b161785612cf4565b6040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906001820180921161166257565b611625565b9190820180921161166257565b9061167e82610471565b61168b60405191826103f4565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06116b98294610471565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156117065760209160051b010190565b6116c3565b919082519283825260005b8481106117555750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201611716565b9080602083519182815201916020808360051b8301019401926000915b83831061179657505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c080611809604085015160e0604086015260e085019061170b565b936060810151606085015260808101511515608085015260a0810151151560a0850152015191015297019301930191939290611787565b906020808351928381520192019060005b81811061185e5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611851565b805160ff168252610515916020828101511515908201526101006118e86118c26040850151610120604086015261012085019061176a565b606085015160608501526080850151608085015260a085015184820360a086015261170b565b9260c081015160c084015260e081015160e0840152015190610100818403910152611840565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b91611964610515949260408552604085019061188a565b92602081850391015261190e565b9061198f9291611980611f43565b906003825260e0820152611d8e565b50156119b9577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b6040513d6000823e3d90fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156101b5570180359067ffffffffffffffff82116101b5576020019181360383136101b557565b909173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169081156111585781330361112a5780611acf575b5050611abf7f1626ba7e00000000000000000000000000000000000000000000000000000000926109d4836101007fffffffff000000000000000000000000000000000000000000000000000000009501906119ca565b1603611aca57600090565b600190565b813b156101b5576040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015291600091839160249183915af1928315611125576109d47fffffffff0000000000000000000000000000000000000000000000000000000093611abf937f1626ba7e0000000000000000000000000000000000000000000000000000000096611b70575b5093505092611a68565b806111196000611b7f936103f4565b38611b66565b91939290611b94905a936120d3565b9160608301516080840151611ba88261280b565b818103611c4757509060017f1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881920190611be18282612d39565b604080519182526020820192909252a1611bfc828685611d8e565b929015611c0f5750610444939450612452565b836108eb87926040519384937fa2b6d61b0000000000000000000000000000000000000000000000000000000085526004850161194d565b917f9b6514f40000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b91602061051593818152019161190e565b3d15611cb7573d90611c9d82610489565b91611cab60405193846103f4565b82523d6000602084013e565b606090565b600436108015611cc95750565b611cff906000357fffffffff00000000000000000000000000000000000000000000000000000000811691611d51575b50611f9e565b73ffffffffffffffffffffffffffffffffffffffff8116611d1d5750565b60008091604051368382378036810184815203915af4611d3b611c8c565b9015611d4957602081519101f35b602081519101fd5b7fffffffff000000000000000000000000000000000000000000000000000000008092503660040360031b1b161638611cf9565b90156117065790565b611dc1611d9b8484611d85565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f800000000000000000000000000000000000000000000000000000000000000080821614611e445750611df9926000928392612952565b905091909192808210611e14575050611e1190613b6a565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f0200000000000000000000000000000000000000000000000000000000000000908116146020820152611e7a92509050612777565b90611e8482612851565b42811115611f11575073ffffffffffffffffffffffffffffffffffffffff81168015159081611f06575b50611eba575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b905033141538611eae565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff8211176103d3576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b73ffffffffffffffffffffffffffffffffffffffff906040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208452166040820152604081526120156060826103f4565b519020541690565b9061202782610471565b61203460405191826103f4565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06120628294610471565b019060005b82811061207357505050565b602090604051612082816103b7565b60008152600083820152606060408201526000606082015260006080820152600060a0820152600060c082015282828501015201612067565b909392938483116101b55784116101b5578101920390565b906120dc611f43565b6000815291600190803560f81c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316016123ab5750600060608601525b600761212b60ff831660011c90565b168061235a575b5060108181160361232c575060015b61214a8161201d565b604086019081526000925b8284106121925750505050036121685790565b7f0bdf80380000000000000000000000000000000000000000000000000000000060005260046000fd5b9293919290918082013560f81c9060010194908560018083160361230a57506121dc306121c08487516116f2565b519073ffffffffffffffffffffffffffffffffffffffff169052565b6002808216146122ea575b60048082161461229c575b600880821614612267575b9061224e61224860c0846122286010806001981614608061221f888c516116f2565b51019015159052565b61223e60208083161460a061221f888c516116f2565b1660061c60031690565b60ff1690565b60c061225b8387516116f2565b51015201929190612155565b946001919061224e906122489060c09086810135906020019990606061228e878b516116f2565b5101529394505050506121fd565b946122e4908381013560e81c906003016122dd6122c46122bc8484611667565b838c896120bb565b919060406122d3888b516116f2565b51019236916104c3565b9052611667565b946121f2565b948281013590602001959060206123028487516116f2565b5101526121e7565b61232796508381013560601c9060140196906121c08487516116f2565b6121dc565b60209081160361234957600282019181013560f01c905b90612141565b600182019181013560f81c90612343565b61239e919383929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b9290608086015238612132565b80830135606090811c90870152601401925061211c565b6123da6040929594939560608352606083019061188a565b9460208201520152565b9261051596959260c09592855260208501526040840152606083015260808201528160a0820152019061170b565b60409061051593928152816020820152019061170b565b61243f610515949260608352606083019061188a565b926020820152604081840391015261170b565b916000604082019384515190825b828110612471575b50505050505050565b61247c8188516116f2565b519361248b60a0860151151590565b8061276f575b61273557506000936060810151801580158061272c575b6126f45784906124bb6080850151151590565b156126ae57612566926124e2855173ffffffffffffffffffffffffffffffffffffffff1690565b91156126a857505a905b6125618b61253560608d01516040890151908c8b604051998a967f4c4e814c000000000000000000000000000000000000000000000000000000006020890152602488016123e4565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846103f4565b612cc7565b156125af575b50600190867f5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a604051806125a585829190602083019252565b0390a25b01612460565b60c00180511561265f57600181511461262057516002146125d0573861256c565b93505050507fc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b919250612601612cd9565b9061261160405192839283612412565b0390a238808080808080612468565b50846108eb61262d612cd9565b6040519384937f7f6b0bb100000000000000000000000000000000000000000000000000000000855260048501612429565b50925060018093867f115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d6126a0612693612cd9565b6040519182918683612412565b0390a26125a9565b906124ec565b83516126e993925073ffffffffffffffffffffffffffffffffffffffff16916020850151916000146126ee57505a905b604085015192612cb5565b612566565b906126de565b83886108eb5a6040519384937f21395274000000000000000000000000000000000000000000000000000000008552600485016123c2565b50815a106124a8565b9350600190867f9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b604051806126a085829190602083019252565b508015612491565b6127d9612805612797612791602085015115153090612db7565b93612eb2565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826103f4565b51902090565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e835260408201526040815261284a6060826103f4565b5190205490565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8683526040820152604081526128906060826103f4565b51902054906bffffffffffffffffffffffff8260601c921690565b604051906128b8826103d8565b60006020838281520152565b600311156128ce57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b908160409103126101b557602060405191612917836103d8565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff6105159493168152816020820152019061170b565b909491939291853560f81c60019093819061296b6128ab565b92612975826128c4565b60018203612b7f575b50600180871614612b1e575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019080969181966020166129ed9060051c90565b6129f690611654565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a81612a4284612777565b988993612a4e936120bb565b91612a58936132f4565b9098612a6c91600052602052604060002090565b90612a7f91600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16612aa891600052602052604060002090565b94815190868215159283612b13575b505081612b04575b50612ac75750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b90506020820151101538612abf565b141591508638612ab7565b909691939450612b30819893986128c4565b612b5557612b4a9581612b42936120bb565b9390926130a7565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0604088160161297e578981013560601c9750601401915087878a84612bc8856128c4565b60028503612bd9575b50505061297e565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c92604092612c5e929091612c2991612c22918a90612c1c8983611667565b926120bb565b36916104c3565b83519586809481937fccce3bc80000000000000000000000000000000000000000000000000000000083523060048401612925565b0392165afa801561112557612c7c92600091612c86575b5093611667565b9087388a81612bd1565b612ca8915060403d604011612cae575b612ca081836103f4565b8101906128fd565b38612c75565b503d612c96565b9160009391849360208451940192f190565b9160009291839260208351930191f490565b3d90604051916020818401016040528083526000602084013e565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612d336060826103f4565b51902055565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8352604082015260408152612d336060826103f4565b60405160208101917fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208352604082015260408152612d336060826103f4565b15612e67576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261280560c0826103f4565b4690612dc0565b805160209091019060005b818110612e865750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612e79565b610100810151604051612ecd816127d9602082018095612e6e565b51902090612edc815160ff1690565b60ff811680612f5557505090612805612ef86040840151613bcd565b926127d960806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b60018103612fb357505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d4669381019384529081019190915260608101929092529061280581608081016127d9565b6002810361300957505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e46020820190815291810192909252606082019290925261280581608081016127d9565b60030361305d575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d4666020820190815291810192909252606082019290925261280581608081016127d9565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b906123da906040939695949660608452606084019161190e565b91949290926000956000956000956000956000956130c3611f43565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b82811061311a5750505050505050805115158061310c575b612ac75750565b506020810151841115613105565b600381019d50959b509399509197509290919061313e908b9085013560e81c611667565b9582870361327e578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c0361324f575061318b91613184898c9387896120bb565b908b612952565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106132095750928b885114613200575b808b10156131ce57508a60c085015289929592959491949390936130ed565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b600088526131af565b8d8f6108eb61321a85858c8e6120bb565b9390926040519485947fb006aba00000000000000000000000000000000000000000000000000000000086526004860161308d565b979899809b926132648b61326b94888a6120bb565b9086612952565b50929d919c909b929a9092918e8e61319f565b8a60029161314b565b908160209103126101b5575161051581610a8f565b60409061051594928152816020820152019161190e565b73ffffffffffffffffffffffffffffffffffffffff61051595936060938352166020820152816040820152019161190e565b908160209103126101b5575190565b9391909360009460009460005b81811061330f575050505050565b8481013560f881901c9860019092019788979692909160fc1c988915613b03575060018914613ac357600289146138f657600389146138c7576004891461384657600689146137a657600589146137585760078914613691576008891461363b576009891461351257600a89146133af577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b90919293949596975060038916978815613501575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190810190816134279187876120bb565b6040517f898bd9210000000000000000000000000000000000000000000000000000000081529391849161345f918a6004850161329c565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa918215611125576134a2936000936134ce575b5060ff909a168091019a613e99565b9080156134c857906134bc91600052602052604060002090565b955b9392919093613301565b506134bc565b60ff9193506134f39060203d81116134fa575b6134eb81836103f4565b8101906132e5565b9290613493565b503d6134e1565b8084013560f81c98506001016133c4565b9091929394959697506003891697881561362a575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908101908161358a9187876120bb565b6040517f13792a4a000000000000000000000000000000000000000000000000000000008152939184916135c2918b6004850161194d565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa91821561112557613604936000936134ce575060ff909a168091019a613e99565b908015613624579061361e91600052602052604060002090565b956134be565b5061361e565b8084013560f81c9850600101613527565b98506020870197509495939492939192909182013561365986613e40565b8114613669575b61360490613e5a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850613660565b975090919293949597600f16968715613746575b602060006136b76137249a9b86613d08565b9c9092918a6040516136fa816127d98a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa15611125576136049060ff6000519a1680910199613d4b565b600189019883013560f81c97506136a5565b98506020870197509495939492939192909182013580851461377e575b61360490613e01565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850613775565b989091929394959662ffffff98506137c8612248600c8416603f9060021c1690565b918215613832575b6003168015613821575b908190613805906137fd908781013560e81c906003019c168c01809c89896120bb565b90898b6132f4565b911115613818575b906136049291613db6565b9982019961380d565b50600281019084013560f01c6137da565b8482013560f81c92506001909101906137d0565b97509761389c6138a9929394959697600f6138b193169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866120bb565b9086886132f4565b9061361e92980198600052602052604060002090565b985096509394929391929091908082013590602001968015613624579061361e91600052602052604060002090565b90919293949596975060038916978815613ab2575b8084013560601c9961396a916014019061392a9060021c600316612248565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b908101906139ce60208c61398085858b8b6120bb565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e0000000000000000000000000000000000000000000000000000000085526004850161329c565b0392165afa908115611125577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091613a84575b501603613a4057509060ff61360492991680910199613d4b565b6108eb613a518c93899389896120bb565b906040519485947fb2fed7ae000000000000000000000000000000000000000000000000000000008652600486016132b3565b613aa5915060203d8111613aab575b613a9d81836103f4565b810190613287565b38613a26565b503d613a93565b8381013560f81c985060010161390b565b98600f91929394959697985016968715613af2575b60148101976136049160ff9091169084013560601c613d4b565b8281013560f81c9750600101613ad8565b98509091929394959698600f16978815613b55575b5060206000613b2b6137249a9b86613d08565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c97506020613b18565b8015159081613b77575090565b90507fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8541490565b805160209091019060005b818110613bb75750505090565b8251845260209384019390920191600101613baa565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613c13613bfd83610471565b92613c0b60405194856103f4565b808452610471565b0136602083013760005b8351811015613cef5780613c33600192866116f2565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152613cdb610120826103f4565b519020613ce882856116f2565b5201613c1d565b50909150604051612805816127d9602082018095613b9f565b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff81116116625791565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b1660318301526045820152604581526128056065826103f4565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a00000000000000008552603884015260588301526078820152607881526128056098826103f4565b60405160208101917f53657175656e636520737461746963206469676573743a0a000000000000000083526038820152603881526128056058826103f4565b6127d9612805612797612791600060208601511515612db7565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a83526040820152604081526128056060826103f4565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d8152612805608d826103f456fea2646970667358221220308ea34d0bfd77d22053db540aaaa0e7d8db926aa22e88cb2203a3329f56415764736f6c634300081c0033","sourceMap":"423:331:1:-:0;;;;;;;;;;;;;-1:-1:-1;;423:331:1;;;;-1:-1:-1;;;;;423:331:1;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;423:331:1;;;;;;754:24:4;;423:331:1;;;;;;;;754:24:4;423:331:1;;;;;;;;;;;;;;;;;-1:-1:-1;423:331:1;;;;;;-1:-1:-1;423:331:1;;;;;-1:-1:-1;423:331:1","linkReferences":{}},"deployedBytecode":{"object":"6080604052600436101561001e575b361561001c5761001c611cbc565b005b60003560e01c806223de291461018d578063025b22bc1461018857806313792a4a14610183578063150b7a021461017e5780631626ba7e1461017957806319822f7c146101745780631a9b23371461016f5780631f6a1eb91461016a57806329561426146101655780634fcf3eca1461016057806351605d801461015b5780636ea44577146101565780638943ec02146101515780638c3f55631461014c57806392dcb3fc146101475780639c145aed14610142578063a65d69d41461013d578063aaf10f4214610138578063ad55366b14610133578063b93ea7ad1461012e578063bc197c8114610129578063f23a6e61146101245763f727ef1c0361000e5761154c565b6114bf565b6113ed565b61128e565b611242565b6111f1565b611182565b610ff3565b610f95565b610f59565b610ed5565b610ea6565b610e02565b610ce6565b610c2d565b610b1c565b610ab9565b610a04565b61097c565b6108ef565b6107f2565b6102db565b61024f565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b9181601f840112156101b55782359167ffffffffffffffff83116101b557602083818601950101116101b557565b346101b55760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610286610192565b5061028f6101ba565b506102986101dd565b5060843567ffffffffffffffff81116101b5576102b9903690600401610221565b505060a43567ffffffffffffffff81116101b55761001c903690600401610221565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55761030d610192565b30330361035a576020817f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0392305573ffffffffffffffffffffffffffffffffffffffff60405191168152a1005b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff8211176103d357604052565b610388565b6040810190811067ffffffffffffffff8211176103d357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176103d357604052565b6040519061044460e0836103f4565b565b60405190610444610120836103f4565b359060ff821682036101b557565b359081151582036101b557565b67ffffffffffffffff81116103d35760051b60200190565b67ffffffffffffffff81116103d357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926104cf82610489565b916104dd60405193846103f4565b8294818452818301116101b5578281602093846000960137010152565b9080601f830112156101b557816020610515933591016104c3565b90565b81601f820112156101b55780359061052f82610471565b9261053d60405194856103f4565b82845260208085019360051b830101918183116101b55760208101935b83851061056957505050505090565b843567ffffffffffffffff81116101b557820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082860301126101b5576105b0610435565b916105bd60208301610200565b83526040820135602084015260608201359267ffffffffffffffff84116101b55760e0836105f28860208098819801016104fa565b60408401526080810135606084015261060d60a08201610464565b608084015261061e60c08201610464565b60a0840152013560c082015281520194019361055a565b9080601f830112156101b557813561064c81610471565b9261065a60405194856103f4565b81845260208085019260051b8201019283116101b557602001905b8282106106825750505090565b6020809161068f84610200565b815201910190610675565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82850301126101b55761070c610446565b9061071981600401610456565b825261072760248201610464565b6020830152604481013567ffffffffffffffff81116101b55784600461074f92840101610518565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff81116101b55784600461078b928401016104fa565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116101b557600485916107c8930101610635565b610100820152916024359067ffffffffffffffff82116101b5576107ee91600401610221565b9091565b346101b5576108003661069a565b909161010081019261081b610816855151611654565b611674565b9160005b85518051821015610882579061087c61085761083d836001956116f2565b5173ffffffffffffffffffffffffffffffffffffffff1690565b61086183886116f2565b9073ffffffffffffffffffffffffffffffffffffffff169052565b0161081f565b505083838661089733610861835151856116f2565b526108a3818484611d8e565b50156108b55760405160018152602090f35b6108eb906040519384937ff58cc8b50000000000000000000000000000000000000000000000000000000085526004850161194d565b0390fd5b346101b55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610926610192565b5061092f6101ba565b5060643567ffffffffffffffff81116101b557610950903690600401610221565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b346101b55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043560243567ffffffffffffffff81116101b5576020916109d46109da923690600401610221565b91611972565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126101b557610a8760209160243560443591600401611a1b565b604051908152f35b7fffffffff000000000000000000000000000000000000000000000000000000008116036101b557565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020610afe600435610af981610a8f565b611f9e565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b557610b66903690600401610221565b60243567ffffffffffffffff81116101b557610b86903690600401610221565b9160027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610c0357610bdd9360027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55611b85565b60017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b7f37ed32e80000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043530330361035a578015610cbc576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a1005b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557600435610d1c81610a8f565b30330361035a5773ffffffffffffffffffffffffffffffffffffffff610d4182611f9e565b1615610da75760407fffffffff000000000000000000000000000000000000000000000000000000007f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19216610d98600082612d78565b815190815260006020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f1c3812cc000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b60009103126101b557565b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760207fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf854604051908152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101b5576004359067ffffffffffffffff82116101b5576107ee91600401610221565b610eaf36610e5d565b9030330361035a57610ec561001c925a926120d3565b90610ecf82612777565b90612452565b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610f0c610192565b5060443567ffffffffffffffff81116101b557610f2d903690600401610221565b505060206040517f8943ec02000000000000000000000000000000000000000000000000000000008152f35b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020610a8760043561280b565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576040610fd1600435612851565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346101b55761100136610e5d565b9060027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610c035760027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561115857330361112a57303b156101b5576110d49160009160405193849283927f6ea4457700000000000000000000000000000000000000000000000000000000845260048401611c7b565b038183305af180156111255761110a5760017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b80611119600061111f936103f4565b80610df7565b38610bdd565b6119be565b7f1d6ddbf4000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7fd13d78350000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020305473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346101b55760c061125e6000806112583661069a565b91612952565b9261126a839293613b6a565b906040519586526020860152151560408501526060840152608083015260a0820152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576004356112c481610a8f565b6112cc6101ba565b9030330361035a5773ffffffffffffffffffffffffffffffffffffffff6112f282611f9e565b1661136c577f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19173ffffffffffffffffffffffffffffffffffffffff7fffffffff0000000000000000000000000000000000000000000000000000000060409316911661135f8183612d78565b82519182526020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f5b4d6d6a000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b9181601f840112156101b55782359167ffffffffffffffff83116101b5576020808501948460051b0101116101b557565b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557611424610192565b5061142d6101ba565b5060443567ffffffffffffffff81116101b55761144e9036906004016113bc565b505060643567ffffffffffffffff81116101b5576114709036906004016113bc565b505060843567ffffffffffffffff81116101b557611492903690600401610221565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576114f6610192565b506114ff6101ba565b5060843567ffffffffffffffff81116101b557611520903690600401610221565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576004356115866101ba565b604435916bffffffffffffffffffffffff83168093036101b55730330361035a578273ffffffffffffffffffffffffffffffffffffffff836116117febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1967fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606097881b161785612cf4565b6040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906001820180921161166257565b611625565b9190820180921161166257565b9061167e82610471565b61168b60405191826103f4565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06116b98294610471565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80518210156117065760209160051b010190565b6116c3565b919082519283825260005b8481106117555750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201611716565b9080602083519182815201916020808360051b8301019401926000915b83831061179657505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c080611809604085015160e0604086015260e085019061170b565b936060810151606085015260808101511515608085015260a0810151151560a0850152015191015297019301930191939290611787565b906020808351928381520192019060005b81811061185e5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611851565b805160ff168252610515916020828101511515908201526101006118e86118c26040850151610120604086015261012085019061176a565b606085015160608501526080850151608085015260a085015184820360a086015261170b565b9260c081015160c084015260e081015160e0840152015190610100818403910152611840565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b91611964610515949260408552604085019061188a565b92602081850391015261190e565b9061198f9291611980611f43565b906003825260e0820152611d8e565b50156119b9577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b6040513d6000823e3d90fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156101b5570180359067ffffffffffffffff82116101b5576020019181360383136101b557565b909173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169081156111585781330361112a5780611acf575b5050611abf7f1626ba7e00000000000000000000000000000000000000000000000000000000926109d4836101007fffffffff000000000000000000000000000000000000000000000000000000009501906119ca565b1603611aca57600090565b600190565b813b156101b5576040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015291600091839160249183915af1928315611125576109d47fffffffff0000000000000000000000000000000000000000000000000000000093611abf937f1626ba7e0000000000000000000000000000000000000000000000000000000096611b70575b5093505092611a68565b806111196000611b7f936103f4565b38611b66565b91939290611b94905a936120d3565b9160608301516080840151611ba88261280b565b818103611c4757509060017f1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881920190611be18282612d39565b604080519182526020820192909252a1611bfc828685611d8e565b929015611c0f5750610444939450612452565b836108eb87926040519384937fa2b6d61b0000000000000000000000000000000000000000000000000000000085526004850161194d565b917f9b6514f40000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b91602061051593818152019161190e565b3d15611cb7573d90611c9d82610489565b91611cab60405193846103f4565b82523d6000602084013e565b606090565b600436108015611cc95750565b611cff906000357fffffffff00000000000000000000000000000000000000000000000000000000811691611d51575b50611f9e565b73ffffffffffffffffffffffffffffffffffffffff8116611d1d5750565b60008091604051368382378036810184815203915af4611d3b611c8c565b9015611d4957602081519101f35b602081519101fd5b7fffffffff000000000000000000000000000000000000000000000000000000008092503660040360031b1b161638611cf9565b90156117065790565b611dc1611d9b8484611d85565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f800000000000000000000000000000000000000000000000000000000000000080821614611e445750611df9926000928392612952565b905091909192808210611e14575050611e1190613b6a565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f0200000000000000000000000000000000000000000000000000000000000000908116146020820152611e7a92509050612777565b90611e8482612851565b42811115611f11575073ffffffffffffffffffffffffffffffffffffffff81168015159081611f06575b50611eba575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b905033141538611eae565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff8211176103d3576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b73ffffffffffffffffffffffffffffffffffffffff906040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208452166040820152604081526120156060826103f4565b519020541690565b9061202782610471565b61203460405191826103f4565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06120628294610471565b019060005b82811061207357505050565b602090604051612082816103b7565b60008152600083820152606060408201526000606082015260006080820152600060a0820152600060c082015282828501015201612067565b909392938483116101b55784116101b5578101920390565b906120dc611f43565b6000815291600190803560f81c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316016123ab5750600060608601525b600761212b60ff831660011c90565b168061235a575b5060108181160361232c575060015b61214a8161201d565b604086019081526000925b8284106121925750505050036121685790565b7f0bdf80380000000000000000000000000000000000000000000000000000000060005260046000fd5b9293919290918082013560f81c9060010194908560018083160361230a57506121dc306121c08487516116f2565b519073ffffffffffffffffffffffffffffffffffffffff169052565b6002808216146122ea575b60048082161461229c575b600880821614612267575b9061224e61224860c0846122286010806001981614608061221f888c516116f2565b51019015159052565b61223e60208083161460a061221f888c516116f2565b1660061c60031690565b60ff1690565b60c061225b8387516116f2565b51015201929190612155565b946001919061224e906122489060c09086810135906020019990606061228e878b516116f2565b5101529394505050506121fd565b946122e4908381013560e81c906003016122dd6122c46122bc8484611667565b838c896120bb565b919060406122d3888b516116f2565b51019236916104c3565b9052611667565b946121f2565b948281013590602001959060206123028487516116f2565b5101526121e7565b61232796508381013560601c9060140196906121c08487516116f2565b6121dc565b60209081160361234957600282019181013560f01c905b90612141565b600182019181013560f81c90612343565b61239e919383929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b9290608086015238612132565b80830135606090811c90870152601401925061211c565b6123da6040929594939560608352606083019061188a565b9460208201520152565b9261051596959260c09592855260208501526040840152606083015260808201528160a0820152019061170b565b60409061051593928152816020820152019061170b565b61243f610515949260608352606083019061188a565b926020820152604081840391015261170b565b916000604082019384515190825b828110612471575b50505050505050565b61247c8188516116f2565b519361248b60a0860151151590565b8061276f575b61273557506000936060810151801580158061272c575b6126f45784906124bb6080850151151590565b156126ae57612566926124e2855173ffffffffffffffffffffffffffffffffffffffff1690565b91156126a857505a905b6125618b61253560608d01516040890151908c8b604051998a967f4c4e814c000000000000000000000000000000000000000000000000000000006020890152602488016123e4565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018552846103f4565b612cc7565b156125af575b50600190867f5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a604051806125a585829190602083019252565b0390a25b01612460565b60c00180511561265f57600181511461262057516002146125d0573861256c565b93505050507fc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b919250612601612cd9565b9061261160405192839283612412565b0390a238808080808080612468565b50846108eb61262d612cd9565b6040519384937f7f6b0bb100000000000000000000000000000000000000000000000000000000855260048501612429565b50925060018093867f115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d6126a0612693612cd9565b6040519182918683612412565b0390a26125a9565b906124ec565b83516126e993925073ffffffffffffffffffffffffffffffffffffffff16916020850151916000146126ee57505a905b604085015192612cb5565b612566565b906126de565b83886108eb5a6040519384937f21395274000000000000000000000000000000000000000000000000000000008552600485016123c2565b50815a106124a8565b9350600190867f9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b604051806126a085829190602083019252565b508015612491565b6127d9612805612797612791602085015115153090612db7565b93612eb2565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826103f4565b51902090565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e835260408201526040815261284a6060826103f4565b5190205490565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8683526040820152604081526128906060826103f4565b51902054906bffffffffffffffffffffffff8260601c921690565b604051906128b8826103d8565b60006020838281520152565b600311156128ce57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b908160409103126101b557602060405191612917836103d8565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff6105159493168152816020820152019061170b565b909491939291853560f81c60019093819061296b6128ab565b92612975826128c4565b60018203612b7f575b50600180871614612b1e575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019080969181966020166129ed9060051c90565b6129f690611654565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a81612a4284612777565b988993612a4e936120bb565b91612a58936132f4565b9098612a6c91600052602052604060002090565b90612a7f91600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16612aa891600052602052604060002090565b94815190868215159283612b13575b505081612b04575b50612ac75750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b90506020820151101538612abf565b141591508638612ab7565b909691939450612b30819893986128c4565b612b5557612b4a9581612b42936120bb565b9390926130a7565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0604088160161297e578981013560601c9750601401915087878a84612bc8856128c4565b60028503612bd9575b50505061297e565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c92604092612c5e929091612c2991612c22918a90612c1c8983611667565b926120bb565b36916104c3565b83519586809481937fccce3bc80000000000000000000000000000000000000000000000000000000083523060048401612925565b0392165afa801561112557612c7c92600091612c86575b5093611667565b9087388a81612bd1565b612ca8915060403d604011612cae575b612ca081836103f4565b8101906128fd565b38612c75565b503d612c96565b9160009391849360208451940192f190565b9160009291839260208351930191f490565b3d90604051916020818401016040528083526000602084013e565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612d336060826103f4565b51902055565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8352604082015260408152612d336060826103f4565b60405160208101917fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208352604082015260408152612d336060826103f4565b15612e67576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261280560c0826103f4565b4690612dc0565b805160209091019060005b818110612e865750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612e79565b610100810151604051612ecd816127d9602082018095612e6e565b51902090612edc815160ff1690565b60ff811680612f5557505090612805612ef86040840151613bcd565b926127d960806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b60018103612fb357505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d4669381019384529081019190915260608101929092529061280581608081016127d9565b6002810361300957505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e46020820190815291810192909252606082019290925261280581608081016127d9565b60030361305d575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d4666020820190815291810192909252606082019290925261280581608081016127d9565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b906123da906040939695949660608452606084019161190e565b91949290926000956000956000956000956000956130c3611f43565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b82811061311a5750505050505050805115158061310c575b612ac75750565b506020810151841115613105565b600381019d50959b509399509197509290919061313e908b9085013560e81c611667565b9582870361327e578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c0361324f575061318b91613184898c9387896120bb565b908b612952565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106132095750928b885114613200575b808b10156131ce57508a60c085015289929592959491949390936130ed565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b600088526131af565b8d8f6108eb61321a85858c8e6120bb565b9390926040519485947fb006aba00000000000000000000000000000000000000000000000000000000086526004860161308d565b979899809b926132648b61326b94888a6120bb565b9086612952565b50929d919c909b929a9092918e8e61319f565b8a60029161314b565b908160209103126101b5575161051581610a8f565b60409061051594928152816020820152019161190e565b73ffffffffffffffffffffffffffffffffffffffff61051595936060938352166020820152816040820152019161190e565b908160209103126101b5575190565b9391909360009460009460005b81811061330f575050505050565b8481013560f881901c9860019092019788979692909160fc1c988915613b03575060018914613ac357600289146138f657600389146138c7576004891461384657600689146137a657600589146137585760078914613691576008891461363b576009891461351257600a89146133af577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b90919293949596975060038916978815613501575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190810190816134279187876120bb565b6040517f898bd9210000000000000000000000000000000000000000000000000000000081529391849161345f918a6004850161329c565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa918215611125576134a2936000936134ce575b5060ff909a168091019a613e99565b9080156134c857906134bc91600052602052604060002090565b955b9392919093613301565b506134bc565b60ff9193506134f39060203d81116134fa575b6134eb81836103f4565b8101906132e5565b9290613493565b503d6134e1565b8084013560f81c98506001016133c4565b9091929394959697506003891697881561362a575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908101908161358a9187876120bb565b6040517f13792a4a000000000000000000000000000000000000000000000000000000008152939184916135c2918b6004850161194d565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa91821561112557613604936000936134ce575060ff909a168091019a613e99565b908015613624579061361e91600052602052604060002090565b956134be565b5061361e565b8084013560f81c9850600101613527565b98506020870197509495939492939192909182013561365986613e40565b8114613669575b61360490613e5a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850613660565b975090919293949597600f16968715613746575b602060006136b76137249a9b86613d08565b9c9092918a6040516136fa816127d98a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa15611125576136049060ff6000519a1680910199613d4b565b600189019883013560f81c97506136a5565b98506020870197509495939492939192909182013580851461377e575b61360490613e01565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850613775565b989091929394959662ffffff98506137c8612248600c8416603f9060021c1690565b918215613832575b6003168015613821575b908190613805906137fd908781013560e81c906003019c168c01809c89896120bb565b90898b6132f4565b911115613818575b906136049291613db6565b9982019961380d565b50600281019084013560f01c6137da565b8482013560f81c92506001909101906137d0565b97509761389c6138a9929394959697600f6138b193169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866120bb565b9086886132f4565b9061361e92980198600052602052604060002090565b985096509394929391929091908082013590602001968015613624579061361e91600052602052604060002090565b90919293949596975060038916978815613ab2575b8084013560601c9961396a916014019061392a9060021c600316612248565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b908101906139ce60208c61398085858b8b6120bb565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e0000000000000000000000000000000000000000000000000000000085526004850161329c565b0392165afa908115611125577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091613a84575b501603613a4057509060ff61360492991680910199613d4b565b6108eb613a518c93899389896120bb565b906040519485947fb2fed7ae000000000000000000000000000000000000000000000000000000008652600486016132b3565b613aa5915060203d8111613aab575b613a9d81836103f4565b810190613287565b38613a26565b503d613a93565b8381013560f81c985060010161390b565b98600f91929394959697985016968715613af2575b60148101976136049160ff9091169084013560601c613d4b565b8281013560f81c9750600101613ad8565b98509091929394959698600f16978815613b55575b5060206000613b2b6137249a9b86613d08565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c97506020613b18565b8015159081613b77575090565b90507fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8541490565b805160209091019060005b818110613bb75750505090565b8251845260209384019390920191600101613baa565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613c13613bfd83610471565b92613c0b60405194856103f4565b808452610471565b0136602083013760005b8351811015613cef5780613c33600192866116f2565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152613cdb610120826103f4565b519020613ce882856116f2565b5201613c1d565b50909150604051612805816127d9602082018095613b9f565b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff81116116625791565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b1660318301526045820152604581526128056065826103f4565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a00000000000000008552603884015260588301526078820152607881526128056098826103f4565b60405160208101917f53657175656e636520737461746963206469676573743a0a000000000000000083526038820152603881526128056058826103f4565b6127d9612805612797612791600060208601511515612db7565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a83526040820152604081526128056060826103f4565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d8152612805608d826103f456fea2646970667358221220308ea34d0bfd77d22053db540aaaa0e7d8db926aa22e88cb2203a3329f56415764736f6c634300081c0033","sourceMap":"423:331:1:-:0;;;;;;;;;-1:-1:-1;423:331:1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;401:4:13;379:10;:27;375:75;;423:331:1;401:4:13;1013:38:6;401:4:13;;1125:46:6;423:331:1;;;;;;;1013:38:6;423:331:1;375:75:13;423:20;-1:-1:-1;423:20:13;379:10;423:331:1;;;-1:-1:-1;423:20:13;:331:1;;;;;;;;;;;2409:4:8;423:331:1;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;423:331:1;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;4802:22:11;;;;;;4788:48;4802:33;:22;;423:331:1;4802:33:11;:::i;:::-;4788:48;:::i;:::-;4848:13;-1:-1:-1;4898:3:11;4867:22;;423:331:1;;4863:33:11;;;;;4930:25;4911:44;4930:25;;;4834:1;4930:25;;:::i;:::-;423:331:1;;;;;4930:25:11;4911:44;;;;:::i;:::-;423:331:1;;;;;;4911:44:11;423:331:1;4848:13:11;;4863:33;;;;;;4968:57;5015:10;4968:57;4982:22;;423:331:1;4968:57:11;;:::i;:::-;5031:38;5094:41;;;;;:::i;:::-;5145:8;;5141:81;;423:331:1;;4834:1:11;423:331:1;;;;;5141:81:11;5170:45;423:331:1;;;5170:45:11;;;;;;423:331:1;5170:45:11;;;:::i;:::-;;;;423:331:1;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3351:31:5;423:331:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1358:19:5;423:331:1;;;;;:::i;:::-;1358:19:5;:::i;:::-;423:331:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;394:41:10;309:1:9;430:66;394:41:10;796:43:9;792:86;;993:1;260:41:10;309:1:9;430:66;260:41:10;993:1:9;:::i;:::-;250;430:66;260:41:10;423:331:1;792:86:9;856:15;-1:-1:-1;856:15:9;423:331:1;-1:-1:-1;856:15:9;423:331:1;;;;;;;;;;;;;401:4:13;379:10;:27;375:75;;1199:24:15;;1195:69;;423:331:1;260:41:10;1328:28:15;260:41:10;466:66:15;260:41:10;423:331:1;;;;;1328:28:15;423:331:1;1195:69:15;1240:17;-1:-1:-1;1240:17:15;423:331:1;-1:-1:-1;1240:17:15;423:331:1;;;;;;;;;;;;;:::i;:::-;401:4:13;379:10;:27;375:75;;423:331:1;2005:19:5;;;:::i;:::-;423:331:1;2005:33:5;2001:87;;423:331:1;;2492:37:5;423:331:1;;2439:41:5;423:331:1;2439:41:5;;:::i;:::-;423:331:1;;;;;;;;;;2492:37:5;423:331:1;2001:87:5;423:331:1;2055:26:5;;-1:-1:-1;2055:26:5;423:331:1;;;;-1:-1:-1;2055:26:5;423:331:1;;;;;;;:::o;:::-;;;;;;;;;;;;466:66:15;394:41:10;423:331:1;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;401:4:13;;379:10;:27;375:75;;2274:33:3;2387:7;2226:9;;2274:33;;:::i;:::-;2330:21;;;;:::i;:::-;2387:7;;:::i;423:331:1:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3526:28:5;423:331:1;;;;;;;;;;;;;;;806:50:7;423:331:1;;806:50:7;:::i;423:331:1:-;;;;;;;;;;;;2500:26:11;423:331:1;;2500:26:11;:::i;:::-;423:331:1;;;;;;;;;;;;;;;;;;;:::i;:::-;394:41:10;309:1:9;430:66;394:41:10;796:43:9;792:86;;309:1;430:66;260:41:10;423:331:1;1714:10:4;423:331:1;1714:24:4;;1710:69;;1789:10;:24;1785:81;;1872:4;:26;;;;;423:331:1;1736:1:4;423:331:1;;;1872:26:4;;;;;423:331:1;1872:26:4;;423:331:1;1872:26:4;;;:::i;:::-;;:4;;;:26;;;;;;;;250:1:9;430:66;260:41:10;423:331:1;1872:26:4;;;1736:1;1872:26;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;1785:81::-;1830:29;1736:1;1830:29;1789:10;423:331:1;;;1736:1:4;1830:29;1710:69;1755:17;1736:1;1755:17;423:331:1;1736:1:4;1755:17;423:331:1;;;;;;;;;;;;;;;591:35:4;423:331:1;;;;;;;;;;;;;;;;1252:47:6;;423:331:1;;;;;;;;;;;;;6003:78:11;-1:-1:-1;423:331:1;;;;:::i;:::-;6003:78:11;;:::i;:::-;715:31:1;;;;;;:::i;:::-;423:331;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;401:4:13;;379:10;:27;375:75;;423:331:1;1667:19:5;;;:::i;:::-;423:331:1;1663:88:5;;2492:37;423:331:1;;;;;;;;2439:41:5;;;;:::i;:::-;423:331:1;;;;;;;;;2492:37:5;423:331:1;1663:88:5;423:331:1;1717:27:5;;-1:-1:-1;1717:27:5;423:331:1;;;;-1:-1:-1;1717:27:5;423:331:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;423:331:1;;2946:37:5;423:331:1;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;2696:32:5;423:331:1;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;401:4:13;379:10;:27;375:75;;423:331:1;;;2043:85:11;2998:47;423:331:1;;;;;;;2051:76:11;2043:85;;:::i;:::-;423:331:1;;;;;;;;;;;;;;2998:47:11;423:331:1;;;;;;;;;;;;;4834:1:11;423:331:1;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;423:331:1;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;423:331:1;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;423:331:1;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;5290:320:11:-;;5476:40;5290:320;;423:331:1;;:::i;:::-;2644:4:8;;;;4882:15;;;2644:4;5476:40:11;:::i;:::-;5526:8;;5522:45;;423:331:1;5290:320:11;:::o;5522:45::-;423:331:1;5544:16:11;:::o;423:331:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;814:660:4:-;;;423:331:1;992:10:4;423:331:1;992:24:4;;;988:69;;1067:10;;:24;1063:81;;1206:24;1202:123;;814:660;1364:16;;1335:46;423:331:1;1364:16:4;;;;423:331:1;1364:16:4;;;;:::i;1335:46::-;423:331:1;1335:75:4;1331:124;;423:331:1;814:660:4;:::o;1331:124::-;585:1;1420:28;:::o;1202:123::-;1240:78;;;;;423:331:1;;;1240:78:4;;1312:4;1240:78;;;423:331:1;;-1:-1:-1;;423:331:1;;;;;;1240:78:4;;;;;;;1364:16;423:331:1;1240:78:4;1335:46;1240:78;423:331:1;1240:78:4;;;1202:123;;;;;;;;1240:78;;;423:331:1;1240:78:4;;;:::i;:::-;;;;1509:486:3;;;;;1704:33;1509:486;1656:9;1704:33;;:::i;:::-;1758:13;;;;423:331:1;1773:13:3;;;423:331:1;806:50:7;;;:::i;:::-;1131:22;;;1127:88;;423:331:1;;1267:1:7;1319:29;423:331:1;;986:15:7;;;;;:::i;:::-;423:331:1;;;;;;;;;;;;;1319:29:7;1826:40:3;;;;;:::i;:::-;1877:8;;;1873:73;;1982:7;;;;;;:::i;1873:73::-;423:331:1;1902:37:3;423:331:1;;;;1902:37:3;;;;;;;;;;:::i;1127:88:7:-;1170:38;;-1:-1:-1;1170:38:7;;423:331:1;;;;;;-1:-1:-1;1170:38:7;423:331:1;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;423:331:1;;;;:::o;:::-;;;:::o;3638:392:5:-;3695:1;3676:8;:20;;;3672:354;;3638:392;:::o;3672:354::-;3723:27;3733:16;3676:8;423:331:1;;;;;;;3672:354:5;3723:27;;:::i;:::-;423:331:1;;;3758:262:5;;3638:392;:::o;3758:262::-;3676:8;423:331:1;;;;3676:8:5;423:331:1;;;3676:8:5;;423:331:1;;;;;3832:29:5;;;;;;:::i;:::-;3871:141;;;;;;;;;;;;;;;;;423:331:1;;3676:8:5;;;;3695:1;423:331:1;;;;;;;;;;;;;;;:::o;3301:1229:11:-;3555:13;;;;;:::i;:::-;;423:331:1;;;;3555:13:11;423:331:1;3579:20:11;;;:28;3575:521;;4286:78;;;3566:1;4286:78;;;;:::i;:::-;4238:126;;;;;4402:18;;;;4398:87;;715:31:1;;;;;:::i;:::-;3301:1229:11;:::o;4398:87::-;4437:41;3566:1;4437:41;3864:48;423:331:1;;;;1736:1:4;1830:29;3575:521:11;423:331:1;3673:20:11;;;:28;3652:18;;;423:331:1;3718:15:11;;-1:-1:-1;3673:20:11;-1:-1:-1;3718:15:11;:::i;:::-;3778:27;;;;:::i;:::-;3830:15;3817:28;;;3813:108;;423:331:1;;;;3933:18:11;;;:40;;;;3575:521;3929:131;;;4068:21;4076:4;4068:21;;:::o;3929:131::-;3992:59;3566:1;3992:59;;423:331:1;;;4034:10:11;423:331:1;;;;;;;1736:1:4;1830:29;3933:40:11;3963:10;;;3955:18;;3933:40;;;3813:108;3864:48;3566:1;3864:48;;423:331:1;;;;;;1736:1:4;1830:29;423:331:1;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;423:331:1;;-1:-1:-1;423:331:1;;;;;;;;;-1:-1:-1;423:331:1;;;;-1:-1:-1;423:331:1;;;;;;;;;-1:-1:-1;423:331:1;;;;-1:-1:-1;423:331:1;;;;;;:::o;2134:172:5:-;423:331:1;2134:172:5;423:331:1;;;753:25:10;;;;:66:5;423:331:1;;;;;;;;753:25:10;;;;;;:::i;:::-;423:331:1;743:36:10;;785:40;423:331:1;2134:172:5;:::o;2409:4:8:-;;423:331:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;2409:4:8;;;;;:::i;:::-;;;-1:-1:-1;2409:4:8;;;;;;;;;:::o;:::-;;423:331:1;;;;;;:::i;:::-;-1:-1:-1;2409:4:8;;-1:-1:-1;2409:4:8;;;;423:331:1;;2409:4:8;;;-1:-1:-1;423:331:1;2409:4:8;;;-1:-1:-1;2409:4:8;;;;-1:-1:-1;2409:4:8;;;;-1:-1:-1;2409:4:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4915:2802::-;;423:331:1;;:::i;:::-;;2644:4:8;;;566:109:28;;;;;;;5219:25:8;:17;;;:25;5232:4;;5254:14;2409:4;5254:14;;;2644:4;5215:140;5452:4;5433:15;423:331:1;;;;2409:4:8;;;5433:15;5432:24;5467:13;5463:122;;5215:140;-1:-1:-1;5691:4:8;5678:17;;;:25;5691:4;;5713:12;5232:4;5674:320;6039:20;;;:::i;:::-;6022:14;;;:37;;;2409:4;6066:1546;6086:12;;;;;;7622:24;;;;;7618:73;;4915:2802;:::o;7618:73::-;7663:21;2409:4;7663:21;6760:4;2409;7663:21;6100:3;683:254:28;;;;;;798:135;;;;;;;;;6132:44:8;;;5232:4;6283:12;;;:20;5232:4;;6370;6339:36;6370:4;6339:17;:14;;;:17;:::i;:::-;;423:331:1;;;;;;6339:36:8;6585:4;6577:12;;;:20;6573:109;;6279:226;6760:4;6752:12;;;:20;6748:287;;6279:226;7121:4;7113:12;;;:20;7109:112;;6279:226;7331:12;7550:55;7586:19;7595:4;7331:12;7297:55;5691:4;7331:12;5232:4;7331:12;;:20;7297:30;:17;:14;;;:17;:::i;:::-;;:30;423:331:1;;;;;;7297:55:8;7420;7462:4;7454:12;;;:20;7420:30;:17;:14;;;:17;:::i;:55::-;7587:12;423:331:1;2409:4:8;;;;;7586:19;423:331:1;;;;7550:55:8;7595:4;7550:17;:14;;;:17;:::i;:::-;;:33;2644:4;423:331:1;6071:13:8;;;;;7109:112;1983:226:28;5232:4:8;;1983:226:28;7550:55:8;;7586:19;;7595:4;;2102:103:28;;;;;;;7146:14:8;;:26;:17;:14;;;:17;:::i;:::-;;:26;2644:4;7109:112;;;;;;;;6748:287;1201:256:28;7003:23:8;;1318:135:28;;;;;;;;;2409:4:8;6955:38;6970:22;1318:135:28;;6970:22:8;:::i;:::-;6955:38;;;;:::i;:::-;6930:14;;6022;6930:17;:14;;;:17;:::i;:::-;;:22;2409:4;;;;:::i;:::-;6930:63;;7003:23;:::i;:::-;6748:287;;;6573:109;1983:226:28;2102:103;;;;;;;6610:14:8;;7462:4;6610:17;:14;;;:17;:::i;:::-;;:23;2644:4;6573:109;;6279:226;6435:61;;-1:-1:-1;1840:135:28;;;;;;;;;6436:14:8;;:17;:14;;;:17;:::i;6435:61::-;6279:226;;5674:320;5835:4;5822:17;;;:25;5835:4;;1058:135:28;;;;;;;;;;5818:170:8;5674:320;;;5818:170;798:135:28;;;;;;;;;;5818:170:8;;5463:122;2213:380:28;;;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;5514:64:8;;5515:14;;;2644:4;5463:122;;;5215:140;1840:135:28;;;;;;;;5294:14:8;;;2644:4;1840:135:28;;;-1:-1:-1;5215:140:8;;423:331:1;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2745:4:8:-;;;;;;423:331:1;;2745:4:8;;;;;;;;:::i;2851:::-;;;;;;;;;;;;;:::i;:::-;;;;;423:331:1;2851:4:8;;;;;;;;:::i;2404:1875:3:-;;2541:5;2572:14;;;;;;423:331:1;2604:13:3;;2619:12;;;;;;2599:1676;2404:1875;;;;;;;:::o;2633:3::-;2673:17;:14;;;:17;:::i;:::-;;2757;423:331:1;2757:17:3;;;423:331:1;;;;;;2757:31:3;;;2633:3;2753:102;;2981:17;2541:5;3026:13;;;;423:331:1;3051:13:3;;;;:37;;;2633:3;3047:105;;3160:12;;423:331:1;3184:17:3;;;423:331:1;;;;;;3184:17:3;;;3225:348;423:331:1;;;;;;;;;3277:36:3;;;;3293:9;;3277:36;;3325:238;3514:14;3325:238;3026:13;3514:14;;423:331:1;2572:14:3;3542:9;;;423:331:1;;;2572:14:3;423:331:1;3325:238:3;;;3361:55;3325:238;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;3225:348;:::i;:::-;3714:8;3710:520;;3180:522;423:331:1;;;;4243:25:3;2572:14;423:331:1;4243:25:3;;;;423:331:1;;;;;;;;4243:25:3;;;;2604:13;423:331:1;2604:13:3;;3710:520;3738:20;;423:331:1;;3738:53:3;3734:180;;423:331:1;;;3928:56:3;3924:136;;423:331:1;2955:4:8;4074:55:3;4070:152;;3710:520;;;4070:152;4172:21;;;;;4148:46;4172:21;;;;;:::i;:::-;423:331:1;4148:46:3;2572:14;423:331:1;4148:46:3;;;;;:::i;:::-;;;;4206:5;;;;;;;;;3924:136;4027:21;;4005:44;4027:21;;:::i;:::-;2572:14;423:331:1;4005:44:3;;;;;;;;;;:::i;3734:180::-;3805:16;;;423:331:1;3805:16:3;3861:21;;3838:45;;3861:21;;:::i;:::-;2572:14;423:331:1;3838:45:3;;;;;;:::i;:::-;;;;3895:8;;3277:36;;;;3180:522;423:331:1;;3610:83:3;;423:331:1;-1:-1:-1;423:331:1;;3633:10:3;;;;423:331:1;3645:36:3;;;;;3661:9;;3645:36;;2572:14;3683:9;;;3610:83;;:::i;:::-;3180:522;;3645:36;;;;3047:105;3133:9;;3107:36;3133:9;2572:14;423:331:1;3107:36:3;;;;;;;;;;:::i;3051:37::-;3068:9;;;:20;3051:37;;2753:102;423:331:1;;;;;2805:23:3;2572:14;423:331:1;2805:23:3;;;;423:331:1;;;;;;;;2757:31:3;2778:10;;;2757:31;;9411:274:8;9631:48;;9590:18;9513:50;9529:18;;;423:331:1;;;9557:4:8;9513:50;;:::i;:::-;9590:18;;:::i;:::-;423:331:1;;9631:48:8;;;9529:18;9631:48;;;;423:331:1;;;;;;;;;;;;;;;;;;9631:48:8;;;;;;;;;:::i;:::-;423:331:1;9621:59:8;;9411:274;:::o;632:197:10:-;423:331:1;;753:25:10;;;;543:66:7;423:331:1;;;;;;;753:25:10;;;;;;:::i;:::-;423:331:1;743:36:10;;785:40;632:197;:::o;1637:245:11:-;423:331:1;;753:25:10;;;;834:66:11;423:331:1;;;;;;;753:25:10;;;;;;:::i;:::-;423:331:1;743:36:10;;785:40;2409:4:8;423:331:1;2409:4:8;753:25:10;2409:4:8;423:331:1;;1637:245:11;:::o;423:331:1:-;;;;;;;:::i;:::-;-1:-1:-1;423:331:1;;;;;;;:::o;:::-;;-1:-1:-1;423:331:1;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;3199:3386:12:-;;;;;;;566:109:28;;;;;3504:69:12;;;3999:24;423:331:1;;:::i;:::-;;;;;:::i;:::-;4216:35:12;4200:51;;4196:870;;3199:3386;5139:20;4216:35;5139:20;;;:28;5135:242;;-1:-1:-1;5485:4:12;5469:20;;;:28;5448:18;;;423:331:1;2409:4:8;423:331:1;2409:4:8;;;;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;5639:67:12;;;;;5811:20;5448:18;5811:20;5810:27;;423:331:1;2409:4:8;;;5810:27:12;5809:33;;;:::i;:::-;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;5850:65:12;;;;5961:15;;;;;:::i;:::-;6036:19;;;;;;:::i;:::-;6004:52;;;;:::i;:::-;5982:74;6075:50;;;545:85:29;;;;;;;461:173;;6075:50:12;6143:51;;;545:85:29;;;;;;;461:173;;6143:51:12;423:331:1;;;6212:72:12;;545:85:29;;;;;;;461:173;;6212:72:12;423:331:1;;;6429:32:12;;;;;:67;;;;3199:3386;6429:104;;;;;3199:3386;6425:156;;;3199:3386;:::o;6425:156::-;423:331:1;;6550:24:12;;;423:331:1;;6550:24:12;;;423:331:1;;;;;;;;;;;;5170:45:11;6429:104:12;6514:19;;5448:18;6514:19;;423:331:1;-1:-1:-1;6500:33:12;6429:104;;;:67;6465:31;;;-1:-1:-1;6429:67:12;;;;5135:242;423:331:1;;;;;;;;;;;;:::i;:::-;5177:109:12;;5300:70;5350:19;;;;;:::i;:::-;5300:70;;;;:::i;:::-;5293:77;;;;;;;;;:::o;5177:109::-;5235:42;-1:-1:-1;5235:42:12;;-1:-1:-1;5235:42:12;4196:870;-1:-1:-1;;;4401:28:12;4417:4;4401:20;;:28;4196:870;4397:663;1840:135:28;;;;;;;-1:-1:-1;1840:135:28;;;-1:-1:-1;4441:56:12;1840:135:28;;;423:331:1;3162:307:28;423:331:1;:::i;:::-;4528:28:12;4512:44;;4508:544;;4397:663;;;;4196:870;;4508:544;1318:135:28;;;;-1:-1:-1;1201:256:28;;-1:-1:-1;423:331:1;;1318:135:28;;;;;;4417:4:12;;4925:73;;4417:4;;2409::8;;4820:48:12;;1318:135:28;;4838:29:12;1318:135:28;;4838:29:12;:::i;:::-;4820:48;;:::i;:::-;2409:4:8;;;:::i;:::-;423:331:1;;4925:73:12;;;;;;423:331:1;4925:73:12;;4974:4;4925:73;;;;:::i;:::-;;423:331:1;;4925:73:12;;;;;;5011:30;4925:73;-1:-1:-1;4925:73:12;;;4508:544;4914:84;5011:30;;:::i;:::-;4508:544;;;;;;;4925:73;;;;4417:4;4925:73;4417:4;4925:73;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1431:196:29;;1538:85;1431:196;;;;1538:85;;;;;;;1431:196;:::o;1997:192::-;;2098:87;1997:192;;;;2098:87;;;;;;;1997:192;:::o;758:271::-;825:200;;;;;;;;;;;;;;;;;;;;758:271::o;443:185:10:-;423:331:1;;552:25:10;;;;834:66:11;423:331:1;;;;;;;552:25:10;;;;;;:::i;:::-;423:331:1;542:36:10;;584:40;443:185::o;:::-;423:331:1;;552:25:10;;;;543:66:7;423:331:1;;;;;;;552:25:10;;;;;;:::i;443:185::-;423:331:1;;552:25:10;;;;753:66:5;423:331:1;;;;;;;552:25:10;;;;;;:::i;1027:351:8:-;1294:48;;;-1:-1:-1;1294:48:8;;423:331:1;;;1165:202:8;;;;423:331:1;627:66:8;423:331:1;;797:66:8;423:331:1;956:66:8;;423:331:1;956:66:8;;;;423:331:1;956:66:8;;;423:331:1;;956:66:8;;;423:331:1;956:66:8;1165:202;;;;;;:::i;1294:48::-;1328:13;1294:48;;;423:331:1;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;8435:972:8;8573:22;;;;423:331:1;;8556:40:8;;423:331:1;8556:40:8;;;423:331:1;;;:::i;8556:40:8:-;423:331:1;8546:51:8;;423:331:1;;;;;;;;;;;;8608:34:8;423:331:1;;8682:14:8;;;8722:82;8672:25;423:331:1;8682:14:8;;;8672:25;:::i;:::-;8760:14;8722:82;8776:14;8760;;;423:331:1;8776:14:8;;423:331:1;;;;8722:82:8;;;8556:40;8722:82;;;;1887:66;;;;;;;;;423:331:1;1887:66:8;423:331:1;;1887:66:8;;;423:331:1;1887:66:8;;;423:331:1;1887:66:8;;;423:331:1;1887:66:8;423:331:1;1887:66:8;8604:799;2851:4;8822:29;;2851:4;;-1:-1:-1;;8917:16:8;;;423:331:1;;8556:40:8;423:331:1;;;8907:27:8;423:331:1;;;2067:66:8;8878:70;;;423:331:1;;;2067:66:8;;;423:331:1;;;;2067:66:8;;;423:331:1;;;;8878:70:8;;423:331:1;2067:66:8;;;8878:70;2067:66;8818:585;2955:4;8966:35;;2955:4;;-1:-1:-1;;9063:18:8;;423:331:1;;;;2262:66:8;8556:40;9028:67;;423:331:1;;;2067:66:8;;;423:331:1;;;;2067:66:8;;;423:331:1;;;;9028:67:8;423:331:1;2067:66:8;;;9028:67;2067:66;8962:441;2644:4;9113:28;2644:4;;-1:-1:-1;9290:15:8;;423:331:1;;;;2067:66:8;8556:40;9261:58;;423:331:1;;;2067:66:8;;;423:331:1;;;;2067:66:8;;;423:331:1;;;;9261:58:8;423:331:1;2067:66:8;;;9261:58;2067:66;9109:294;9370:26;423:331:1;9370:26:8;423:331:1;;9370:26:8;423:331:1;2570:4:8;1736:1:4;1830:29;423:331:1;;;;;;;;;;;;;;;;;;:::i;6589:1730:12:-;;;;;;423:331:1;6785:14:12;423:331:1;6801:17:12;423:331:1;6820:18:12;423:331:1;6840:14:12;423:331:1;;;;:::i;:::-;;2644:4:8;;6904:47:12;7003:17;;423:331:1;7034:26:12;;;;;;423:331:1;;;;;;;;;8195:33:12;;:71;;;7027:1158;8191:124;;6589:1730;:::o;8195:71::-;8246:20;;;;423:331:1;8232:34:12;;;8195:71;;7027:1158;1318:135:28;;;;-1:-1:-1;1201:256:28;;-1:-1:-1;1201:256:28;;-1:-1:-1;1201:256:28;;-1:-1:-1;1201:256:28;;;;7198:16:12;;1318:135:28;;;;;;;7198:16:12;:::i;:::-;7265:97;:28;;;;;:97;7296:35;7265:97;;7003:17;7375:35;;7003:17;;7503:26;7485:73;7503:26;;;;;;;;:::i;:::-;7485:73;;;:::i;:::-;7422:136;;;;;;;;;;;;;;;;7371:355;;;;7738:18;7734:122;;7863:16;423:331:1;;;;7892:32:12;7888:89;;7371:355;7989:28;;;;7985:115;;8108:23;;;;;2644:4:8;8151:27:12;7027:1158;;;;;;;;;;;;7985:115;8036:55;423:331:1;8036:55:12;3864:48:11;423:331:1;;;;;;1736:1:4;1830:29;7888:89:12;423:331:1;2644:4:8;;7888:89:12;;7734:122;7801:26;;7775:72;7801:26;;;;;;:::i;:::-;423:331:1;;;;;7775:72:12;;;;;;;;;;:::i;7371:355::-;7662:26;;;;;;;;7639:78;7662:26;;;;:::i;:::-;7639:78;;;:::i;:::-;-1:-1:-1;7583:134:12;;;;;;;;;;;;;7371:355;;7265:97;;2955:4:8;7265:97:12;;;842:1;;;;;;;;;;;;;:::i;:::-;;;;;;423:331:1;;842:1:12;;;;;;;;:::i;:::-;423:331:1;842:1:12;;;;;423:331:1;;;842:1:12;;;423:331:1;842:1:12;;;;;;;;:::i;1206:::-;;;;;;;;;423:331:1;1206:1:12;:::o;8323:11084::-;;;;;423:331:1;8478:12:12;423:331:1;8516:14:12;423:331:1;8592:26:12;;;;;;8323:11084;;;;;:::o;8585:10812::-;798:135:28;;;;;;;;;;;;;;;;683:254;;;;2409:4:8;;9002:27:12;;;8998:864;;9922:20;585:1:4;9922:20:12;;9918:676;;842:1;10644:30;;10640:1383;;885:1;12060:17;;12056:279;;8953:1;12374:19;;12370:656;;1023:1;13065:19;;13061:1278;;978:1;14381:22;;14377:518;;1080:1;14946:31;;14942:933;;1150:1;16012:44;;16008:617;;1206:1;16675:30;;16671:1308;;1270:2;18037:38;;18033:1312;;19362:26;423:331:1;19362:26:12;8953:1;423:331:1;;;;1736:1:4;1830:29;18033:1312:12;18347:16;;;;;;;;;885:1;18347:16;;18380:15;;;18376:99;;18033:1312;1840:135:28;;;;;;;;;18629:16:12;;423:331:1;2409:4:8;;;423:331:1;;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;423:331:1;;;19015:26:12;;;;;;;:::i;:::-;423:331:1;;;18953:89:12;;423:331:1;;;;18953:89:12;;423:331:1;8953:1:12;18953:89;;;:::i;:::-;;423:331:1;;;;18953:89:12;;;;;;;;;;;;19185:51;18953:89;423:331:1;18953:89:12;;;18033:1312;19054:16;423:331:1;19054:16:12;423:331:1;;;;;19185:51:12;;:::i;:::-;19255:59;:18;;;;19276:31;;;545:85:29;;;;;;;461:173;;19276:31:12;19326:8;8585:10812;;;;;;;;19255:59;;;;18953:89;423:331:1;18953:89:12;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;18376:99;798:135:28;;;;;;;-1:-1:-1;798:135:28;;18376:99:12;;16671:1308;16977:16;;;;;;;;;885:1;16977:16;;17010:15;;;17006:99;;16671:1308;1840:135:28;;;;;;;;;17297:16:12;;423:331:1;2409:4:8;;;423:331:1;;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;423:331:1;;;17648:26:12;;;;;;;:::i;:::-;423:331:1;;;17599:76:12;;423:331:1;;;;17599:76:12;;423:331:1;8953:1:12;17599:76;;;:::i;:::-;;423:331:1;;;;17599:76:12;;;;;;;;;;;;17819:51;17599:76;423:331:1;17599:76:12;;;17687:16;423:331:1;17687:16:12;423:331:1;;;;;17819:51:12;;:::i;:::-;17889:59;:18;;;;17910:31;;;545:85:29;;;;;;;461:173;;17910:31:12;17960:8;;;17889:59;;;;17006:99;798:135:28;;;;;;;-1:-1:-1;798:135:28;;17006:99:12;;16008:617;2926:232:28;-1:-1:-1;2102:103:28;;;;-1:-1:-1;2926:232:28;;;;;;;;;;2102:103;;;16323:28:12;2926:232:28;16323:28:12;:::i;:::-;16367:29;;16363:88;;16008:617;16478:38;;;:::i;16363:88::-;16421:17;;-1:-1:-1;16363:88:12;;14942:933;15290:16;;;;;;;;;15302:4;15290:16;15323:15;;;15319:99;;14942:933;15592:61;423:331:1;3511:494:28;15572:92:12;3511:494:28;;;;:::i;:::-;15491:53:12;;;;423:331:1;;;15592:61:12;;;;;;;;1080:1;;;;;;;;423:331:1;1080:1:12;;;15592:61;423:331:1;15582:72:12;;423:331:1;;;15572:92:12;;;;740:1;;;;423:331:1;740:1:12;;;;;423:331:1;;;;740:1:12;;;423:331:1;740:1:12;;;423:331:1;740:1:12;423:331:1;740:1:12;15572:92;;;;;;585:1:4;15572:92:12;;;;;15724:42;15572:92;423:331:1;;15572:92:12;423:331:1;;;;;15724:42:12;;:::i;15319:99::-;798:135:28;;;;;;;;;;-1:-1:-1;15319:99:12;;14377:518;2926:232:28;-1:-1:-1;2102:103:28;;;;-1:-1:-1;2926:232:28;;;;;;;;;;2102:103;;;14647:20:12;;;14643:79;;14377:518;14749:37;;;:::i;14643:79::-;14692:17;;-1:-1:-1;14643:79:12;;13061:1278;13430:16;;;;;;;;2409:4:8;13430:16:12;;13399:53;13424:28;13442:4;13430:16;;2409:4:8;;423:331:1;2409:4:8;;;;13399:53:12;13468:19;;;13464:107;;13061:1278;885:1;13617:16;13650:22;;13646:114;;13061:1278;1201:256:28;;;13947:60:12;;13980:26;;1318:135:28;;;;;;;;;2409:4:8;;423:331:1;;13980:26:12;;;;;:::i;:::-;13947:60;;;;:::i;:::-;14019:16;-1:-1:-1;14052:35:12;14048:92;;13061:1278;14167:63;;;;;:::i;14048:92::-;423:331:1;;;;14048:92:12;;13646:114;-1:-1:-1;1058:135:28;;;;;;;;;13646:114:12;;13464:107;798:135:28;;;;;;;-1:-1:-1;798:135:28;;;;;13464:107:12;;12370:656;12571:16;;;2213:380:28;12860:26:12;12571:16;;;;;;12583:4;12827:60;12571:16;;2213:380:28;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;423:331:1;;;;12860:26:12;;;;;:::i;:::-;12827:60;;;;:::i;:::-;;12964:31;12827:60;423:331:1;;12964:31:12;545:85:29;;;;;;;461:173;;12056:279:12;2926:232:28;-1:-1:-1;2926:232:28;-1:-1:-1;2926:232:28;;;;;;;;;2102:103;;;;;;;12245:59:12;:18;;;;12266:31;;;545:85:29;;;;;;;461:173;;10640:1383:12;10935:16;;;;;;;;;885:1;10935:16;;10968:15;;;10964:99;;10640:1383;1840:135:28;;;;;;;2213:380;;1840:135;;;11217:47:12;;423:331:1;2409:4:8;;;11236:28:12;2409:4:8;11217:47:12;2213:380:28;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;423:331:1;;;11572:26:12;11531:68;;11572:26;;;;;;;:::i;:::-;423:331:1;;;;;;11531:68:12;;;;;;;423:331:1;11531:68:12;;8953:1;11531:68;;;:::i;:::-;;423:331:1;;11531:68:12;;;;;;;423:331:1;11531:68:12;423:331:1;11531:68:12;423:331:1;11531:68:12;;;10640:1383;423:331:1;;11531:97:12;11527:203;;11741:16;;423:331:1;11872:42:12;11741:16;423:331:1;;;;;11872:42:12;;:::i;11527:203::-;11651:66;11690:26;;;;;;;;:::i;:::-;423:331:1;;;11651:66:12;;;;;;8953:1;11651:66;;;:::i;11531:68::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10964:99;798:135:28;;;;;;;-1:-1:-1;798:135:28;;10964:99:12;;9918:676;10115:16;10127:4;10115:16;;;;;;;;;;10148:15;;;10144:99;;9918:676;1840:135:28;;;;10443:42:12;;423:331:1;;;;;1840:135:28;;;;;10443:42:12;:::i;10144:99::-;798:135:28;;;;;;;-1:-1:-1;798:135:28;;10144:99:12;;8998:864;9342:16;;;;;;;;;;9354:4;9342:16;9375:15;;;9371:99;;8998:864;3511:494:28;9624:27:12;423:331:1;3511:494:28;9624:27:12;3511:494:28;;;;:::i;:::-;9543:53:12;;;423:331:1;;9624:27:12;;;;;740:1;;;;423:331:1;740:1:12;;;;;423:331:1;;;;740:1:12;;;423:331:1;740:1:12;;;423:331:1;740:1:12;423:331:1;740:1:12;9371:99;798:135:28;;;;-1:-1:-1;798:135:28;;;;;;-1:-1:-1;9624:27:12;9371:99;;913:192:15;1023:24;;;:77;;;;1016:84;913:192;:::o;1023:77::-;394:41:10;;466:66:15;394:41:10;1051:49:15;913:192;:::o;423:331:1:-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;7977:454:8;;423:331:1;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;-1:-1:-1;8321:3:8;423:331:1;;8303:16:8;;;;;8359:8;;423:331:1;8359:8:8;;;:::i;:::-;;423:331:1;;;;7865:7:8;423:331:1;7865:7:8;;423:331:1;7884:6:8;423:331:1;7884:6:8;;;423:331:1;;;;;7874:17:8;7893:10;;;;423:331:1;7905:14:8;;;423:331:1;;;7921:14:8;7937:17;7921:14;;;423:331:1;;;7937:17:8;;423:331:1;;;;7824:138:8;423:331:1;7824:138:8;;423:331:1;1566:66:8;423:331:1;;;1566:66:8;;423:331:1;7893:10:8;1566:66;;423:331:1;7905:14:8;1566:66;;423:331:1;7921:14:8;1566:66;;423:331:1;7937:17:8;1566:66;;423:331:1;1566:66:8;;;423:331:1;1566:66:8;;;423:331:1;1566:66:8;7824:138;;;;;;:::i;:::-;423:331:1;7807:161:8;;8334:34;;;;:::i;:::-;2644:4;423:331:1;8288:13:8;;8303:16;;;;;423:331:1;;8397:28:8;;423:331:1;;8397:28:8;;423:331:1;;;:::i;3511:494:28:-;3690:173;;;;;;;;;;;;3998:2;3955:14;3931:39;;2409:4:8;423:331:1;2409:4:8;423:331:1;;;;;;3511:494:28;:::o;2183:181:12:-;;423:331:1;;2304:54:12;423:331:1;2304:54:12;;;423:331:1;;;;;;;;;;;;;;;;2304:54:12;;;;;;:::i;2368:210::-;;423:331:1;;2499:73:12;;;;423:331:1;;;;;;;;;;;;;;;;;2499:73:12;;;;;;:::i;2798:182::-;423:331:1;;2917:57:12;;;423:331:1;;;;;;;;;2917:57:12;;;;;;:::i;9689:280:8:-;9915:48;;9874:18;9803:44;423:331:1;9819:18:8;;;423:331:1;;;9803:44:8;:::i;2984:211:12:-;423:331:1;;3114:75:12;;;423:331:1;;;;;;;;;3114:75:12;;;;;;:::i;2582:212::-;;423:331:1;;2714:74:12;423:331:1;2714:74:12;;;423:331:1;;;;;;;;;;;;;;;;;;;;2714:74:12;;;;;;:::i","linkReferences":{},"immutableReferences":{"517":[{"start":4198,"length":32},{"start":4557,"length":32},{"start":6708,"length":32}]}},"methodIdentifiers":{"addHook(bytes4,address)":"b93ea7ad","entrypoint()":"a65d69d4","execute(bytes,bytes)":"1f6a1eb9","executeUserOp(bytes)":"9c145aed","getImplementation()":"aaf10f42","getStaticSignature(bytes32)":"92dcb3fc","imageHash()":"51605d80","isValidSignature(bytes32,bytes)":"1626ba7e","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","readHook(bytes4)":"1a9b2337","readNonce(uint256)":"8c3f5563","recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"ad55366b","recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"13792a4a","removeHook(bytes4)":"4fcf3eca","selfExecute(bytes)":"6ea44577","setStaticSignature(bytes32,address,uint96)":"f727ef1c","tokenReceived(address,uint256,bytes)":"8943ec02","tokensReceived(address,address,address,uint256,bytes,bytes)":"0023de29","updateImageHash(bytes32)":"29561426","updateImplementation(address)":"025b22bc","validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)":"19822f7c"}}}},"src/Wallet.sol":{"Wallet":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Wallet.sol\":\"Wallet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/Wallet.sol\":{\"keccak256\":\"0xe01e9e937dd8d7572976ccc8ec3ec87e4a557069dafb05f85977a7b71f5c58d5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9ab78d33655f8e822258dff3f2d5ad01e84f6dc90174840d5a283b8e6413c1\",\"dweb:/ipfs/QmNMyYe3C1fs3cxKmUZ3S9VU5EE4WVWPVcwiGbgvbS1vrH\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212204e0039ed40bc7764691e0f5712d24e9ff86e3bbce0c5fc08fedfd455a2b3fb0f64736f6c634300081c0033","sourceMap":"2114:166:2:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"600080fdfea26469706673582212204e0039ed40bc7764691e0f5712d24e9ff86e3bbce0c5fc08fedfd455a2b3fb0f64736f6c634300081c0033","sourceMap":"2114:166:2:-:0;;","linkReferences":{}}}}},"src/modules/Calls.sol":{"Calls":{"abi":[{"type":"function","name":"execute","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"readNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"recoverPartialSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"weight","type":"uint256","internalType":"uint256"},{"name":"isValidImage","type":"bool","internalType":"bool"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"},{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"recoverSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"selfExecute","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_address","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImageHash","inputs":[{"name":"_imageHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"CallAborted","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_returnData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"CallFailed","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_returnData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"CallSkipped","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CallSucceeded","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NonceChange","inputs":[{"name":"_space","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_newNonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StaticSignatureSet","inputs":[{"name":"_hash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"_address","type":"address","indexed":false,"internalType":"address"},{"name":"_timestamp","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"error","name":"BadNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"},{"name":"_provided","type":"uint256","internalType":"uint256"},{"name":"_current","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ChainedSignatureNestedInChainedSignature","inputs":[]},{"type":"error","name":"InvalidERC1271Signature","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidPackedLength","inputs":[]},{"type":"error","name":"InvalidSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignatureFlag","inputs":[{"name":"_flag","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidSignatureWeight","inputs":[{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureExpired","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_expires","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureWrongCaller","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_caller","type":"address","internalType":"address"},{"name":"_expectedCaller","type":"address","internalType":"address"}]},{"type":"error","name":"LowWeightChainedSignature","inputs":[{"name":"_signature","type":"bytes","internalType":"bytes"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotEnoughGas","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_gasLeft","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrantCall","inputs":[]},{"type":"error","name":"Reverted","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_returnData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"UnusedSnapshot","inputs":[{"name":"_snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"WrongChainedCheckpointOrder","inputs":[{"name":"_nextCheckpoint","type":"uint256","internalType":"uint256"},{"name":"_checkpoint","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"}],\"name\":\"BadNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainedSignatureNestedInChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidERC1271Signature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPackedLength\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSapientSignature\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_expires\",\"type\":\"uint256\"}],\"name\":\"InvalidStaticSignatureExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_expectedCaller\",\"type\":\"address\"}],\"name\":\"InvalidStaticSignatureWrongCaller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasLeft\",\"type\":\"uint256\"}],\"name\":\"NotEnoughGas\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"_snapshot\",\"type\":\"tuple\"}],\"name\":\"UnusedSnapshot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nextCheckpoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_checkpoint\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"CallAborted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"CallSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"StaticSignatureSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"getStaticSignature\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"}],\"name\":\"readNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverPartialSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValidImage\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"selfExecute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"setStaticSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen, William Hua\",\"kind\":\"dev\",\"methods\":{\"execute(bytes,bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature\"}},\"getStaticSignature(bytes32)\":{\"params\":{\"_hash\":\"The hash to get the static signature for\"},\"returns\":{\"_0\":\"address The address associated with the static signature\",\"_1\":\"timestamp The timestamp of the static signature\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"_0\":\"Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}},\"readNonce(uint256)\":{\"params\":{\"_space\":\"The space\"},\"returns\":{\"_0\":\"nonce The nonce\"}},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature to recover\"},\"returns\":{\"checkpoint\":\"The checkpoint identifier\",\"imageHash\":\"The derived image hash\",\"isValidImage\":\"Whether the image hash is valid\",\"opHash\":\"The hash of the payload\",\"threshold\":\"The signature threshold\",\"weight\":\"The derived weight\"}},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"payload\":\"The payload to recover the signature from\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"_0\":\"The recovered image hash\"}},\"selfExecute(bytes)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"_payload\":\"The payload\"}},\"setStaticSignature(bytes32,address,uint96)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_address\":\"The address to associate with the static signature\",\"_hash\":\"The hash to set the static signature for\",\"_timestamp\":\"The timestamp of the static signature\"}},\"updateImageHash(bytes32)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_imageHash\":\"The new image hash\"}}},\"title\":\"Calls\",\"version\":1},\"userdoc\":{\"errors\":{\"BadNonce(uint256,uint256,uint256)\":[{\"notice\":\"Error thrown when the nonce is bad\"}],\"ChainedSignatureNestedInChainedSignature()\":[{\"notice\":\"Error thrown when a chained signature is nested inside another chained signature\"}],\"InvalidERC1271Signature(bytes32,address,bytes)\":[{\"notice\":\"Error thrown when the ERC1271 signature is invalid\"}],\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidPackedLength()\":[{\"notice\":\"Error thrown when the encoding is invalid\"}],\"InvalidSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when the sapient signature is invalid\"}],\"InvalidSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when a signature is invalid\"}],\"InvalidSignatureFlag(uint256)\":[{\"notice\":\"Error thrown when the signature flag is invalid\"}],\"InvalidSignatureWeight(uint256,uint256)\":[{\"notice\":\"Error thrown when the signature weight is invalid\"}],\"InvalidStaticSignatureExpired(bytes32,uint256)\":[{\"notice\":\"Error thrown when the static signature has expired\"}],\"InvalidStaticSignatureWrongCaller(bytes32,address,address)\":[{\"notice\":\"Error thrown when the static signature has the wrong caller\"}],\"LowWeightChainedSignature(bytes,uint256,uint256)\":[{\"notice\":\"Error thrown when the weight is too low for a chained signature\"}],\"NotEnoughGas((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),uint256,uint256)\":[{\"notice\":\"Error thrown when there is not enough gas\"}],\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}],\"ReentrantCall()\":[{\"notice\":\"Error thrown when a reentrant call is detected\"}],\"Reverted((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),uint256,bytes)\":[{\"notice\":\"Error thrown when a call reverts\"}],\"UnusedSnapshot((bytes32,uint256))\":[{\"notice\":\"Error thrown when the snapshot is unused\"}],\"WrongChainedCheckpointOrder(uint256,uint256)\":[{\"notice\":\"Error thrown when the checkpoint order is wrong\"}]},\"events\":{\"CallAborted(bytes32,uint256,bytes)\":{\"notice\":\"Emitted when a call is aborted\"},\"CallFailed(bytes32,uint256,bytes)\":{\"notice\":\"Emitted when a call fails\"},\"CallSkipped(bytes32,uint256)\":{\"notice\":\"Emitted when a call is skipped\"},\"CallSucceeded(bytes32,uint256)\":{\"notice\":\"Emitted when a call succeeds\"},\"NonceChange(uint256,uint256)\":{\"notice\":\"Emitted when the nonce is changed\"},\"StaticSignatureSet(bytes32,address,uint96)\":{\"notice\":\"Event emitted when a static signature is set\"}},\"kind\":\"user\",\"methods\":{\"execute(bytes,bytes)\":{\"notice\":\"Execute a call\"},\"getStaticSignature(bytes32)\":{\"notice\":\"Get the static signature for a specific hash\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"},\"readNonce(uint256)\":{\"notice\":\"Read the nonce\"},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recover the partial signature\"},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recovers the image hash of a given signature\"},\"selfExecute(bytes)\":{\"notice\":\"Execute a call\"},\"setStaticSignature(bytes32,address,uint96)\":{\"notice\":\"Set the static signature for a specific hash\"},\"updateImageHash(bytes32)\":{\"notice\":\"Update the image hash\"}},\"notice\":\"Contract for executing calls\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/Calls.sol\":\"Calls\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Calls.sol\":{\"keccak256\":\"0xa1341a9dc102ceec53bcdff123322e7ecb19cec6101086944c87552284969eeb\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36619e8abb171d9f812be49572fba6d64dd62c0d7a6fb674cde1a0cf28a5f919\",\"dweb:/ipfs/QmWR45P7Q4M44QfyNQvA3ThMyApz3snMJVRin8ujq2ouQK\"]},\"src/modules/Nonce.sol\":{\"keccak256\":\"0x56fbf6dc9b34ab60ae8a32ffb6f583c003bb8f4a5223ce704e982400fa403fab\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://492f53628633b862702cf8f9b726067a722c94028133a8a4c4fcf3d0e73ad803\",\"dweb:/ipfs/QmTHNy4XbH47YZaqKDpknb5aApjRH9HVAREHN7N5vEFWEV\"]},\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/ReentrancyGuard.sol\":{\"keccak256\":\"0x566e105b1a53f49cf099037f3cb4a9739522d72739dc65f1169b97e4fbe07b32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d811a16613746e5290eab76eb4055d98a1e64e1086632697d09b0a3759a6bac5\",\"dweb:/ipfs/QmPJ33JvAxwn1sTCNvYG2TWsFo991KND2ia8JcvZ26Dge9\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]},\"src/modules/auth/BaseAuth.sol\":{\"keccak256\":\"0x1aea32726fe1e8c204805a01fde5a7c832caa76960bf57bbaa2cf13e6804b9dc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://851b09d56bfc9b2f2025f1351ca2a4ae5e9c82e8fb26e58216cff849fc9f8320\",\"dweb:/ipfs/QmeHcagSWRPXR1ac1jEChoYTDzfhLyvfGKAgfu4nc3uctc\"]},\"src/modules/auth/BaseSig.sol\":{\"keccak256\":\"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46\",\"dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ\"]},\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]},\"src/modules/interfaces/IAuth.sol\":{\"keccak256\":\"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353\",\"dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp\"]},\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]},\"src/modules/interfaces/IDelegatedExtension.sol\":{\"keccak256\":\"0xa2ae897e90fd70dd4a9e172bc04d019ba9c512e72c2df65fcb6daf87dd5ceb90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cdf4b7c3dfb0aef6c9dbe8b2a0542018dc756ef2252d7101bcb3186192da0a11\",\"dweb:/ipfs/QmPHCVu1DJ7fBrPBYA5y3hoF3a3XFEBwYCZ1ErGaxPhcYL\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/IPartialAuth.sol\":{\"keccak256\":\"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519\",\"dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"execute(bytes,bytes)":"1f6a1eb9","getStaticSignature(bytes32)":"92dcb3fc","isValidSignature(bytes32,bytes)":"1626ba7e","readNonce(uint256)":"8c3f5563","recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"ad55366b","recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"13792a4a","selfExecute(bytes)":"6ea44577","setStaticSignature(bytes32,address,uint96)":"f727ef1c","updateImageHash(bytes32)":"29561426"}}}},"src/modules/ERC4337v07.sol":{"ERC4337v07":{"abi":[{"type":"function","name":"entrypoint","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"execute","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeUserOp","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"readNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"recoverPartialSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"weight","type":"uint256","internalType":"uint256"},{"name":"isValidImage","type":"bool","internalType":"bool"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"},{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"recoverSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"selfExecute","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"setStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_address","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImageHash","inputs":[{"name":"_imageHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateUserOp","inputs":[{"name":"userOp","type":"tuple","internalType":"struct PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"missingAccountFunds","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"validationData","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"event","name":"CallAborted","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_returnData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"CallFailed","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_returnData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"CallSkipped","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CallSucceeded","inputs":[{"name":"_opHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"_index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NonceChange","inputs":[{"name":"_space","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_newNonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"StaticSignatureSet","inputs":[{"name":"_hash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"_address","type":"address","indexed":false,"internalType":"address"},{"name":"_timestamp","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"error","name":"BadNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"},{"name":"_provided","type":"uint256","internalType":"uint256"},{"name":"_current","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ChainedSignatureNestedInChainedSignature","inputs":[]},{"type":"error","name":"ERC4337Disabled","inputs":[]},{"type":"error","name":"InvalidERC1271Signature","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidEntryPoint","inputs":[{"name":"_entrypoint","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidPackedLength","inputs":[]},{"type":"error","name":"InvalidSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignatureFlag","inputs":[{"name":"_flag","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidSignatureWeight","inputs":[{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureExpired","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_expires","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureWrongCaller","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_caller","type":"address","internalType":"address"},{"name":"_expectedCaller","type":"address","internalType":"address"}]},{"type":"error","name":"LowWeightChainedSignature","inputs":[{"name":"_signature","type":"bytes","internalType":"bytes"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotEnoughGas","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_gasLeft","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrantCall","inputs":[]},{"type":"error","name":"Reverted","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_returnData","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"UnusedSnapshot","inputs":[{"name":"_snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"WrongChainedCheckpointOrder","inputs":[{"name":"_nextCheckpoint","type":"uint256","internalType":"uint256"},{"name":"_checkpoint","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"}],\"name\":\"BadNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChainedSignatureNestedInChainedSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC4337Disabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidERC1271Signature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_entrypoint\",\"type\":\"address\"}],\"name\":\"InvalidEntryPoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPackedLength\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSapientSignature\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_expires\",\"type\":\"uint256\"}],\"name\":\"InvalidStaticSignatureExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_expectedCaller\",\"type\":\"address\"}],\"name\":\"InvalidStaticSignatureWrongCaller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasLeft\",\"type\":\"uint256\"}],\"name\":\"NotEnoughGas\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"Reverted\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"_snapshot\",\"type\":\"tuple\"}],\"name\":\"UnusedSnapshot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nextCheckpoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_checkpoint\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"CallAborted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returnData\",\"type\":\"bytes\"}],\"name\":\"CallFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"CallSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"CallSucceeded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"StaticSignatureSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"entrypoint\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"executeUserOp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"getStaticSignature\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"}],\"name\":\"readNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverPartialSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValidImage\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"}],\"name\":\"selfExecute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"setStaticSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"missingAccountFunds\",\"type\":\"uint256\"}],\"name\":\"validateUserOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen\",\"kind\":\"dev\",\"methods\":{\"execute(bytes,bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature\"}},\"executeUserOp(bytes)\":{\"details\":\"This is the execute function for the EntryPoint to call.\",\"params\":{\"_payload\":\"The packed payload\"}},\"getStaticSignature(bytes32)\":{\"params\":{\"_hash\":\"The hash to get the static signature for\"},\"returns\":{\"_0\":\"address The address associated with the static signature\",\"_1\":\"timestamp The timestamp of the static signature\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"_0\":\"Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}},\"readNonce(uint256)\":{\"params\":{\"_space\":\"The space\"},\"returns\":{\"_0\":\"nonce The nonce\"}},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature to recover\"},\"returns\":{\"checkpoint\":\"The checkpoint identifier\",\"imageHash\":\"The derived image hash\",\"isValidImage\":\"Whether the image hash is valid\",\"opHash\":\"The hash of the payload\",\"threshold\":\"The signature threshold\",\"weight\":\"The derived weight\"}},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"payload\":\"The payload to recover the signature from\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"_0\":\"The recovered image hash\"}},\"selfExecute(bytes)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"_payload\":\"The payload\"}},\"setStaticSignature(bytes32,address,uint96)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_address\":\"The address to associate with the static signature\",\"_hash\":\"The hash to set the static signature for\",\"_timestamp\":\"The timestamp of the static signature\"}},\"updateImageHash(bytes32)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_imageHash\":\"The new image hash\"}},\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"details\":\"Must validate caller is the entryPoint. Must validate the signature and nonce\",\"params\":{\"missingAccountFunds\":\"- Missing funds on the account's deposit in the entrypoint. This is the minimum amount to transfer to the sender(entryPoint) to be able to make the call. The excess is left as a deposit in the entrypoint for future calls. Can be withdrawn anytime using \\\"entryPoint.withdrawTo()\\\". In case there is a paymaster in the request (or the current deposit is high enough), this value will be zero.\",\"userOp\":\"- The operation that is about to be executed.\",\"userOpHash\":\"- Hash of the user's request data. can be used as the basis for signature.\"},\"returns\":{\"validationData\":\" - Packaged ValidationData structure. use `_packValidationData` and `_unpackValidationData` to encode and decode. <20-byte> aggregatorOrSigFail - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \\\"aggregator\\\" contract. <6-byte> validUntil - Last timestamp this operation is valid at, or 0 for \\\"indefinitely\\\" <6-byte> validAfter - First timestamp this operation is valid If an account doesn't use time-range, it is enough to return SIG_VALIDATION_FAILED value (1) for signature failure. Note that the validation code cannot use block.timestamp (or block.number) directly.\"}}},\"title\":\"ERC4337v07\",\"version\":1},\"userdoc\":{\"errors\":{\"BadNonce(uint256,uint256,uint256)\":[{\"notice\":\"Error thrown when the nonce is bad\"}],\"ChainedSignatureNestedInChainedSignature()\":[{\"notice\":\"Error thrown when a chained signature is nested inside another chained signature\"}],\"InvalidERC1271Signature(bytes32,address,bytes)\":[{\"notice\":\"Error thrown when the ERC1271 signature is invalid\"}],\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidPackedLength()\":[{\"notice\":\"Error thrown when the encoding is invalid\"}],\"InvalidSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when the sapient signature is invalid\"}],\"InvalidSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when a signature is invalid\"}],\"InvalidSignatureFlag(uint256)\":[{\"notice\":\"Error thrown when the signature flag is invalid\"}],\"InvalidSignatureWeight(uint256,uint256)\":[{\"notice\":\"Error thrown when the signature weight is invalid\"}],\"InvalidStaticSignatureExpired(bytes32,uint256)\":[{\"notice\":\"Error thrown when the static signature has expired\"}],\"InvalidStaticSignatureWrongCaller(bytes32,address,address)\":[{\"notice\":\"Error thrown when the static signature has the wrong caller\"}],\"LowWeightChainedSignature(bytes,uint256,uint256)\":[{\"notice\":\"Error thrown when the weight is too low for a chained signature\"}],\"NotEnoughGas((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),uint256,uint256)\":[{\"notice\":\"Error thrown when there is not enough gas\"}],\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}],\"ReentrantCall()\":[{\"notice\":\"Error thrown when a reentrant call is detected\"}],\"Reverted((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),uint256,bytes)\":[{\"notice\":\"Error thrown when a call reverts\"}],\"UnusedSnapshot((bytes32,uint256))\":[{\"notice\":\"Error thrown when the snapshot is unused\"}],\"WrongChainedCheckpointOrder(uint256,uint256)\":[{\"notice\":\"Error thrown when the checkpoint order is wrong\"}]},\"events\":{\"CallAborted(bytes32,uint256,bytes)\":{\"notice\":\"Emitted when a call is aborted\"},\"CallFailed(bytes32,uint256,bytes)\":{\"notice\":\"Emitted when a call fails\"},\"CallSkipped(bytes32,uint256)\":{\"notice\":\"Emitted when a call is skipped\"},\"CallSucceeded(bytes32,uint256)\":{\"notice\":\"Emitted when a call succeeds\"},\"NonceChange(uint256,uint256)\":{\"notice\":\"Emitted when the nonce is changed\"},\"StaticSignatureSet(bytes32,address,uint96)\":{\"notice\":\"Event emitted when a static signature is set\"}},\"kind\":\"user\",\"methods\":{\"execute(bytes,bytes)\":{\"notice\":\"Execute a call\"},\"executeUserOp(bytes)\":{\"notice\":\"Execute a user operation\"},\"getStaticSignature(bytes32)\":{\"notice\":\"Get the static signature for a specific hash\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"},\"readNonce(uint256)\":{\"notice\":\"Read the nonce\"},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recover the partial signature\"},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recovers the image hash of a given signature\"},\"selfExecute(bytes)\":{\"notice\":\"Execute a call\"},\"setStaticSignature(bytes32,address,uint96)\":{\"notice\":\"Set the static signature for a specific hash\"},\"updateImageHash(bytes32)\":{\"notice\":\"Update the image hash\"},\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"notice\":\"Validate user's signature and nonce the entryPoint will make the call to the recipient only if this validation call returns successfully. signature failure should be reported by returning SIG_VALIDATION_FAILED (1). This allows making a \\\"simulation call\\\" without a valid signature Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\"}},\"notice\":\"ERC4337 v7 support\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/ERC4337v07.sol\":\"ERC4337v07\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Calls.sol\":{\"keccak256\":\"0xa1341a9dc102ceec53bcdff123322e7ecb19cec6101086944c87552284969eeb\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36619e8abb171d9f812be49572fba6d64dd62c0d7a6fb674cde1a0cf28a5f919\",\"dweb:/ipfs/QmWR45P7Q4M44QfyNQvA3ThMyApz3snMJVRin8ujq2ouQK\"]},\"src/modules/ERC4337v07.sol\":{\"keccak256\":\"0x4c73f4de4d7652935731b539c8055b822b83c7c2d2220a5d54025e263f54b188\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c310e22792d3d057ae14abb22bd6979a240fb46bd2566efc78425c0b37f46c9b\",\"dweb:/ipfs/QmWAUctttbEEJnRHnRHtfGPT5YDzqo1Zw72z82LiusESKn\"]},\"src/modules/Nonce.sol\":{\"keccak256\":\"0x56fbf6dc9b34ab60ae8a32ffb6f583c003bb8f4a5223ce704e982400fa403fab\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://492f53628633b862702cf8f9b726067a722c94028133a8a4c4fcf3d0e73ad803\",\"dweb:/ipfs/QmTHNy4XbH47YZaqKDpknb5aApjRH9HVAREHN7N5vEFWEV\"]},\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/ReentrancyGuard.sol\":{\"keccak256\":\"0x566e105b1a53f49cf099037f3cb4a9739522d72739dc65f1169b97e4fbe07b32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d811a16613746e5290eab76eb4055d98a1e64e1086632697d09b0a3759a6bac5\",\"dweb:/ipfs/QmPJ33JvAxwn1sTCNvYG2TWsFo991KND2ia8JcvZ26Dge9\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]},\"src/modules/auth/BaseAuth.sol\":{\"keccak256\":\"0x1aea32726fe1e8c204805a01fde5a7c832caa76960bf57bbaa2cf13e6804b9dc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://851b09d56bfc9b2f2025f1351ca2a4ae5e9c82e8fb26e58216cff849fc9f8320\",\"dweb:/ipfs/QmeHcagSWRPXR1ac1jEChoYTDzfhLyvfGKAgfu4nc3uctc\"]},\"src/modules/auth/BaseSig.sol\":{\"keccak256\":\"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46\",\"dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ\"]},\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]},\"src/modules/interfaces/IAccount.sol\":{\"keccak256\":\"0x64ca3bb59ec4fc0a60d80402802365e2d5226afe7e7aabe3b21df936c84f2bcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccfd2381e1874cdec2f473a9a17799a3b57360c0593d68ee66fcea9c16eb39b4\",\"dweb:/ipfs/QmcjbJpGz3Exmu4fsj953Y2bG8rtQaVMEFUgT6W2dUXomr\"]},\"src/modules/interfaces/IAuth.sol\":{\"keccak256\":\"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353\",\"dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp\"]},\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]},\"src/modules/interfaces/IDelegatedExtension.sol\":{\"keccak256\":\"0xa2ae897e90fd70dd4a9e172bc04d019ba9c512e72c2df65fcb6daf87dd5ceb90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cdf4b7c3dfb0aef6c9dbe8b2a0542018dc756ef2252d7101bcb3186192da0a11\",\"dweb:/ipfs/QmPHCVu1DJ7fBrPBYA5y3hoF3a3XFEBwYCZ1ErGaxPhcYL\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0xd19922ea7a8ae09072a721138dc93e175fa77ecaa3ac6f2d759d5e5e944fb665\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20ecea69ddd4d8787c0bdc4487dea03e90f63f4296674a12728e331a78e62620\",\"dweb:/ipfs/QmZUrX8zEqfHZEJQjNtDUXGS47bj2UuRCLfbkLPrXsot1c\"]},\"src/modules/interfaces/IPartialAuth.sol\":{\"keccak256\":\"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519\",\"dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"entrypoint()":"a65d69d4","execute(bytes,bytes)":"1f6a1eb9","executeUserOp(bytes)":"9c145aed","getStaticSignature(bytes32)":"92dcb3fc","isValidSignature(bytes32,bytes)":"1626ba7e","readNonce(uint256)":"8c3f5563","recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"ad55366b","recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"13792a4a","selfExecute(bytes)":"6ea44577","setStaticSignature(bytes32,address,uint96)":"f727ef1c","updateImageHash(bytes32)":"29561426","validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)":"19822f7c"}}}},"src/modules/Hooks.sol":{"Hooks":{"abi":[{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"addHook","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"},{"name":"implementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"onERC1155BatchReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC1155Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"readHook","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeHook","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"tokenReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"pure"},{"type":"function","name":"tokensReceived","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operatorData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DefinedHook","inputs":[{"name":"selector","type":"bytes4","indexed":false,"internalType":"bytes4"},{"name":"implementation","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"HookAlreadyExists","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}]},{"type":"error","name":"HookDoesNotExist","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}]},{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"HookAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"HookDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"DefinedHook\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"addHook\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"readHook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"removeHook\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"tokenReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"tokensReceived\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen\",\"kind\":\"dev\",\"methods\":{\"addHook(bytes4,address)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"implementation\":\"The implementation address of the hook\",\"selector\":\"The selector of the hook\"}},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"The list of token IDs being transferred\",\"operator\":\"The address which initiated the transfer\",\"values\":\"The amounts of each token being transferred\"},\"returns\":{\"_0\":\"On a success, the selector of the function that was called\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"operator\":\"The address which initiated the transfer\",\"tokenId\":\"The ID of the token being transferred\",\"value\":\"The amount of token being transferred\"},\"returns\":{\"_0\":\"On a success, the selector of the function that was called\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"operator\":\"The address which initiated the transfer\",\"tokenId\":\"The ID of the token being transferred\"},\"returns\":{\"_0\":\"On a success, the selector of the function that was called\"}},\"readHook(bytes4)\":{\"params\":{\"selector\":\"The selector of the hook\"},\"returns\":{\"_0\":\"implementation The implementation address of the hook\"}},\"removeHook(bytes4)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"selector\":\"The selector of the hook\"}},\"tokenReceived(address,uint256,bytes)\":{\"params\":{\"data\":\"Transaction metadata\",\"from\":\"The address which previously owned the tokens\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"_0\":\"The signature of the function to be called\"}},\"tokensReceived(address,address,address,uint256,bytes,bytes)\":{\"params\":{\"amount\":\"The amount of tokens being transferred\",\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the tokens\",\"operator\":\"The address which initiated the transfer\",\"operatorData\":\"Additional data with no specified format\",\"to\":\"The address which is receiving the tokens\"}}},\"stateVariables\":{\"HOOKS_KEY\":{\"details\":\"keccak256(\\\"org.arcadeum.module.hooks.hooks\\\")\"}},\"title\":\"Hooks\",\"version\":1},\"userdoc\":{\"errors\":{\"HookAlreadyExists(bytes4)\":[{\"notice\":\"Error thrown when a hook already exists\"}],\"HookDoesNotExist(bytes4)\":[{\"notice\":\"Error thrown when a hook does not exist\"}],\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}]},\"events\":{\"DefinedHook(bytes4,address)\":{\"notice\":\"Emitted when a hook is defined\"}},\"kind\":\"user\",\"methods\":{\"addHook(bytes4,address)\":{\"notice\":\"Add a hook\"},\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Called when multiple ERC1155 tokens are transferred to this contract\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"notice\":\"Called when a single ERC1155 token is transferred to this contract\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Called when a single ERC721 token is transferred to this contract\"},\"readHook(bytes4)\":{\"notice\":\"Read a hook\"},\"removeHook(bytes4)\":{\"notice\":\"Remove a hook\"},\"tokenReceived(address,uint256,bytes)\":{\"notice\":\"Called when ERC223 tokens are received by this contract\"},\"tokensReceived(address,address,address,uint256,bytes,bytes)\":{\"notice\":\"Called when tokens are received by this contract\"}},\"notice\":\"Enables extension of the wallet by adding hooks\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/Hooks.sol\":\"Hooks\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Hooks.sol\":{\"keccak256\":\"0xd1f9de45b83ae5f9f32a4d1c709d7a2b6543b1cddd09bf69d401dcdf1d154ab7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bf3161edf37479825588e07039752b79792666455cc0beb1ca0e873b3be31ad4\",\"dweb:/ipfs/QmYYpJeSsRgRx2oHcpvhqsNs7ZtDhVnxLmFpXz5eYcS8g4\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]},\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]},\"src/modules/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0xa23d0bc29233a91085922ea8a7e2cbe8b5f3358d3f2c3cdc58adade9a171d9c1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2f06b8f3ae7a45441cc26da5b2ddd15ba76d1664178958f63f536e6c5e4fd0fb\",\"dweb:/ipfs/QmR1Rnk8ciSn5s5wNLGvpE1QNRDsBVDfDT1ZXhei2brmFj\"]},\"src/modules/interfaces/IERC223Receiver.sol\":{\"keccak256\":\"0x426221c0d48b651ed692edfa5388d6e5304e94f48598a71748134b2659e3890d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9e1ed2fd5e390b5b943dc07c2e0ea9e524eb37263dc72c482365c159fc3659e5\",\"dweb:/ipfs/QmWRDBvb1cthVPm4BSzKX3J5GpGGSBuDokkpRK9x5aA7JR\"]},\"src/modules/interfaces/IERC721Receiver.sol\":{\"keccak256\":\"0xbe14c3b727f283a467dc2f2221d3322c5a69cd64a3aacad85acab05e94438f35\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://43ef086c509b8b88cae78f67c4bd979fd427736972cfe56f7423371ccc154e63\",\"dweb:/ipfs/Qmc7Yp7Z1dQ925gzEZYVNUXnWr3YomvWkXfaGYLZpoy8J3\"]},\"src/modules/interfaces/IERC777Receiver.sol\":{\"keccak256\":\"0xd9144d439a96b0c6439cd9a186701aa530f4f782ff09fdbf6c3ef16b78b0d4e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d1f17484eda7184db4a00106b4952f15c1517872cbfe19663d6fce4e042729b2\",\"dweb:/ipfs/QmWdhYmLNkUpgvPpSyGHstxrFwMfhRTVmxDpe4frkUu1Qh\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601557610a4d908161001b8239f35b600080fdfe6080604052600436101561001e575b361561001c5761001c6108ce565b005b60003560e01c806223de291461009d578063150b7a02146100985780631a9b2337146100935780634fcf3eca1461008e5780638943ec0214610089578063b93ea7ad14610084578063bc197c811461007f5763f23a6e610361000e5761076e565b61069c565b610506565b610482565b6102e0565b610281565b6101c5565b346101295760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610129576100d461012e565b506100dd610151565b506100e6610174565b5060843567ffffffffffffffff811161012957610107903690600401610197565b505060a43567ffffffffffffffff81116101295761001c903690600401610197565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b9181601f840112156101295782359167ffffffffffffffff8311610129576020838186019501011161012957565b346101295760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610129576101fc61012e565b50610205610151565b5060643567ffffffffffffffff811161012957610226903690600401610197565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b600435907fffffffff000000000000000000000000000000000000000000000000000000008216820361012957565b346101295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101295760206102c26102bd610252565b610997565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012957610312610252565b3033036104545773ffffffffffffffffffffffffffffffffffffffff61033782610997565b16156104045760407fffffffff000000000000000000000000000000000000000000000000000000007f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed192166000825160208101906103f1816103c586859190602060408401937fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a12081520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261082a565b51902055815190815260006020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f1c3812cc000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b346101295760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610129576104b961012e565b5060443567ffffffffffffffff8111610129576104da903690600401610197565b505060206040517f8943ec02000000000000000000000000000000000000000000000000000000008152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012957610538610252565b610540610151565b903033036104545773ffffffffffffffffffffffffffffffffffffffff61056682610997565b1661061b577f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19173ffffffffffffffffffffffffffffffffffffffff7fffffffff00000000000000000000000000000000000000000000000000000000604093169116808351602081019061060a816103c587859190602060408401937fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a12081520152565b5190205582519182526020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f5b4d6d6a000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b9181601f840112156101295782359167ffffffffffffffff8311610129576020808501948460051b01011161012957565b346101295760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610129576106d361012e565b506106dc610151565b5060443567ffffffffffffffff8111610129576106fd90369060040161066b565b505060643567ffffffffffffffff81116101295761071f90369060040161066b565b505060843567ffffffffffffffff811161012957610741903690600401610197565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346101295760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610129576107a561012e565b506107ae610151565b5060843567ffffffffffffffff8111610129576107cf903690600401610197565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761086b57604052565b6107fb565b3d156108c9573d9067ffffffffffffffff821161086b57604051916108bd60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461082a565b82523d6000602084013e565b606090565b6004361080156108db5750565b610911906000357fffffffff00000000000000000000000000000000000000000000000000000000811691610963575b50610997565b73ffffffffffffffffffffffffffffffffffffffff811661092f5750565b60008091604051368382378036810184815203915af461094d610870565b901561095b57602081519101f35b602081519101fd5b7fffffffff000000000000000000000000000000000000000000000000000000008092503660040360031b1b16163861090b565b73ffffffffffffffffffffffffffffffffffffffff90604051610a0f816103c57fffffffff00000000000000000000000000000000000000000000000000000000602083019516859190602060408401937fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a12081520152565b51902054169056fea26469706673582212208de1a11ac777efd7f3934419136c2b779ff6b122c61739d81b855e1b035844fd64736f6c634300081c0033","sourceMap":"551:3552:5:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"6080604052600436101561001e575b361561001c5761001c6108ce565b005b60003560e01c806223de291461009d578063150b7a02146100985780631a9b2337146100935780634fcf3eca1461008e5780638943ec0214610089578063b93ea7ad14610084578063bc197c811461007f5763f23a6e610361000e5761076e565b61069c565b610506565b610482565b6102e0565b610281565b6101c5565b346101295760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610129576100d461012e565b506100dd610151565b506100e6610174565b5060843567ffffffffffffffff811161012957610107903690600401610197565b505060a43567ffffffffffffffff81116101295761001c903690600401610197565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361012957565b9181601f840112156101295782359167ffffffffffffffff8311610129576020838186019501011161012957565b346101295760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610129576101fc61012e565b50610205610151565b5060643567ffffffffffffffff811161012957610226903690600401610197565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b600435907fffffffff000000000000000000000000000000000000000000000000000000008216820361012957565b346101295760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101295760206102c26102bd610252565b610997565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012957610312610252565b3033036104545773ffffffffffffffffffffffffffffffffffffffff61033782610997565b16156104045760407fffffffff000000000000000000000000000000000000000000000000000000007f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed192166000825160208101906103f1816103c586859190602060408401937fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a12081520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261082a565b51902055815190815260006020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f1c3812cc000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b346101295760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610129576104b961012e565b5060443567ffffffffffffffff8111610129576104da903690600401610197565b505060206040517f8943ec02000000000000000000000000000000000000000000000000000000008152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261012957610538610252565b610540610151565b903033036104545773ffffffffffffffffffffffffffffffffffffffff61056682610997565b1661061b577f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19173ffffffffffffffffffffffffffffffffffffffff7fffffffff00000000000000000000000000000000000000000000000000000000604093169116808351602081019061060a816103c587859190602060408401937fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a12081520152565b5190205582519182526020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f5b4d6d6a000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b9181601f840112156101295782359167ffffffffffffffff8311610129576020808501948460051b01011161012957565b346101295760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610129576106d361012e565b506106dc610151565b5060443567ffffffffffffffff8111610129576106fd90369060040161066b565b505060643567ffffffffffffffff81116101295761071f90369060040161066b565b505060843567ffffffffffffffff811161012957610741903690600401610197565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346101295760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610129576107a561012e565b506107ae610151565b5060843567ffffffffffffffff8111610129576107cf903690600401610197565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761086b57604052565b6107fb565b3d156108c9573d9067ffffffffffffffff821161086b57604051916108bd60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461082a565b82523d6000602084013e565b606090565b6004361080156108db5750565b610911906000357fffffffff00000000000000000000000000000000000000000000000000000000811691610963575b50610997565b73ffffffffffffffffffffffffffffffffffffffff811661092f5750565b60008091604051368382378036810184815203915af461094d610870565b901561095b57602081519101f35b602081519101fd5b7fffffffff000000000000000000000000000000000000000000000000000000008092503660040360031b1b16163861090b565b73ffffffffffffffffffffffffffffffffffffffff90604051610a0f816103c57fffffffff00000000000000000000000000000000000000000000000000000000602083019516859190602060408401937fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a12081520152565b51902054169056fea26469706673582212208de1a11ac777efd7f3934419136c2b779ff6b122c61739d81b855e1b035844fd64736f6c634300081c0033","sourceMap":"551:3552:5:-:0;;;;;;;;;-1:-1:-1;551:3552:5;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3351:31;551:3552;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1358:19;551:3552;;:::i;:::-;1358:19;:::i;:::-;551:3552;;;;;;;;;;;;;;;;;;:::i;:::-;401:4:13;379:10;:27;375:75;;551:3552:5;2005:19;;;:::i;:::-;551:3552;2005:33;2001:87;;551:3552;;2492:37;551:3552;;-1:-1:-1;551:3552:5;;;552:25:10;;;;;;;;551:3552:5;;;;;;;753:66;551:3552;;;;;552:25:10;;;;;;;;;:::i;:::-;551:3552:5;542:36:10;;584:40;551:3552:5;;;;;-1:-1:-1;551:3552:5;;;;2492:37;551:3552;2001:87;551:3552;2055:26;;-1:-1:-1;2055:26:5;551:3552;;;;-1:-1:-1;2055:26:5;375:75:13;423:20;-1:-1:-1;423:20:13;379:10;551:3552:5;;;-1:-1:-1;423:20:13;551:3552:5;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3526:28;551:3552;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;401:4:13;;379:10;:27;375:75;;551:3552:5;1667:19;;;:::i;:::-;551:3552;1663:88;;2492:37;551:3552;;;;;;;;;;;552:25:10;;;;;;;;;551:3552:5;;;;;;;753:66;551:3552;;;;;552:25:10;551:3552:5;542:36:10;;584:40;551:3552:5;;;;;552:25:10;551:3552:5;;;2492:37;551:3552;1663:88;551:3552;1717:27;;-1:-1:-1;1717:27:5;551:3552;;;;-1:-1:-1;1717:27:5;551:3552;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;551:3552:5;;2946:37;551:3552;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;2696:32;551:3552;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;551:3552:5;;;;:::o;:::-;;;:::o;3638:392::-;3695:1;3676:8;:20;;;3672:354;;3638:392;:::o;3672:354::-;3723:27;3733:16;3676:8;551:3552;;;;;;;3672:354;3723:27;;:::i;:::-;551:3552;;;3758:262;;3638:392;:::o;3758:262::-;3676:8;551:3552;;;;3676:8;551:3552;;;3676:8;;551:3552;;;;;3832:29;;;;;;:::i;:::-;3871:141;;;;;;;;;;;;;;;;;551:3552;;3676:8;;;;3695:1;551:3552;;;;;;;;;2134:172;551:3552;2134:172;551:3552;;753:25:10;;;551:3552:5;753:25:10;;;551:3552:5;;753:25:10;551:3552:5;;;;;;;753:66;551:3552;;;;;753:25:10;551:3552:5;743:36:10;;785:40;551:3552:5;2134:172;:::o","linkReferences":{}},"methodIdentifiers":{"addHook(bytes4,address)":"b93ea7ad","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","readHook(bytes4)":"1a9b2337","removeHook(bytes4)":"4fcf3eca","tokenReceived(address,uint256,bytes)":"8943ec02","tokensReceived(address,address,address,uint256,bytes,bytes)":"0023de29"}}}},"src/modules/Implementation.sol":{"Implementation":{"abi":[{"type":"function","name":"getImplementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"updateImplementation","inputs":[{"name":"_implementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"ImplementationUpdated","inputs":[{"name":"newImplementation","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"ImplementationUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"}],\"name\":\"updateImplementation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"getImplementation()\":{\"returns\":{\"_0\":\"implementation The implementation\"}},\"updateImplementation(address)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"_implementation\":\"The new implementation\"}}},\"title\":\"Implementation\",\"version\":1},\"userdoc\":{\"errors\":{\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}]},\"events\":{\"ImplementationUpdated(address)\":{\"notice\":\"Emitted when the implementation is updated\"}},\"kind\":\"user\",\"methods\":{\"getImplementation()\":{\"notice\":\"Get the implementation\"},\"updateImplementation(address)\":{\"notice\":\"Update the implementation\"}},\"notice\":\"Manages the implementation address of the proxy contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/Implementation.sol\":\"Implementation\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Implementation.sol\":{\"keccak256\":\"0x16546d4be07865808890308750916b0a9a55e7a994a458c01edde4618f29b4e6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1b1f9785b08c9f29d6849ba2d3dee89fa3ea5f3c2feec4a59a6d1040e3fbe040\",\"dweb:/ipfs/QmU2Pm5C3Ztky7RQdCZggavyq7Eh1eS1HFqVz9jZKiMUML\"]},\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"6080806040523460155761016e908161001b8239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c908163025b22bc1461008b575063aaf10f421461003557600080fd5b346100865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610086576020305473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100865760043573ffffffffffffffffffffffffffffffffffffffff8116918282036100865730330361010a577f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca039260209230558152a1005b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fdfea264697066735822122016d4bbbdf38e602d792d6ba20a238b1098860bdd899a22d8ee85a318fa602b6564736f6c634300081c0033","sourceMap":"237:1069:6:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"608080604052600436101561001357600080fd5b60003560e01c908163025b22bc1461008b575063aaf10f421461003557600080fd5b346100865760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610086576020305473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100865760043573ffffffffffffffffffffffffffffffffffffffff8116918282036100865730330361010a577f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca039260209230558152a1005b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fdfea264697066735822122016d4bbbdf38e602d792d6ba20a238b1098860bdd899a22d8ee85a318fa602b6564736f6c634300081c0033","sourceMap":"237:1069:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:47;;237:1069;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;401:4:13;379:10;:27;375:75;;1013:38:6;401:4:13;237:1069:6;401:4:13;;1125:46:6;237:1069;;1013:38;237:1069;375:75:13;423:20;237:1069:6;423:20:13;379:10;237:1069:6;;;;423:20:13","linkReferences":{}},"methodIdentifiers":{"getImplementation()":"aaf10f42","updateImplementation(address)":"025b22bc"}}}},"src/modules/Nonce.sol":{"Nonce":{"abi":[{"type":"function","name":"readNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"NonceChange","inputs":[{"name":"_space","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_newNonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"BadNonce","inputs":[{"name":"_space","type":"uint256","internalType":"uint256"},{"name":"_provided","type":"uint256","internalType":"uint256"},{"name":"_current","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_current\",\"type\":\"uint256\"}],\"name\":\"BadNonce\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceChange\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"}],\"name\":\"readNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"readNonce(uint256)\":{\"params\":{\"_space\":\"The space\"},\"returns\":{\"_0\":\"nonce The nonce\"}}},\"stateVariables\":{\"NONCE_KEY\":{\"details\":\"keccak256(\\\"org.arcadeum.module.calls.nonce\\\")\"}},\"title\":\"Nonce\",\"version\":1},\"userdoc\":{\"errors\":{\"BadNonce(uint256,uint256,uint256)\":[{\"notice\":\"Error thrown when the nonce is bad\"}]},\"events\":{\"NonceChange(uint256,uint256)\":{\"notice\":\"Emitted when the nonce is changed\"}},\"kind\":\"user\",\"methods\":{\"readNonce(uint256)\":{\"notice\":\"Read the nonce\"}},\"notice\":\"Manages the nonce of the wallet\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/Nonce.sol\":\"Nonce\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Nonce.sol\":{\"keccak256\":\"0x56fbf6dc9b34ab60ae8a32ffb6f583c003bb8f4a5223ce704e982400fa403fab\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://492f53628633b862702cf8f9b726067a722c94028133a8a4c4fcf3d0e73ad803\",\"dweb:/ipfs/QmTHNy4XbH47YZaqKDpknb5aApjRH9HVAREHN7N5vEFWEV\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601557610112908161001b8239f35b600080fdfe60806004361015600e57600080fd5b60003560e01c638c3f556314602257600080fd5b3460d75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011260d757602081017f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8152600435604083015260408252606082019082821067ffffffffffffffff83111760a85760209282604052519020548152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fdfea2646970667358221220c1edfc2bf4fca17e5582ce0f566a12faf0a6c201bb0821466544cf6f28f8697f64736f6c634300081c0033","sourceMap":"196:1180:7:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"60806004361015600e57600080fd5b60003560e01c638c3f556314602257600080fd5b3460d75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011260d757602081017f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8152600435604083015260408252606082019082821067ffffffffffffffff83111760a85760209282604052519020548152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fdfea2646970667358221220c1edfc2bf4fca17e5582ce0f566a12faf0a6c201bb0821466544cf6f28f8697f64736f6c634300081c0033","sourceMap":"196:1180:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;753:25:10;;543:66:7;196:1180;;;;;;;;;753:25:10;;;196:1180:7;;;;;;;;;;;;;;;;;;743:36:10;;785:40;196:1180:7;;;;;;;;;;;;;;;;","linkReferences":{}},"methodIdentifiers":{"readNonce(uint256)":"8c3f5563"}}}},"src/modules/Payload.sol":{"Payload":{"abi":[{"type":"function","name":"BEHAVIOR_ABORT_ON_ERROR","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"BEHAVIOR_IGNORE_ERROR","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"BEHAVIOR_REVERT_ON_ERROR","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"KIND_CONFIG_UPDATE","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"KIND_DIGEST","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"KIND_MESSAGE","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"KIND_TRANSACTIONS","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidPackedLength","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPackedLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BEHAVIOR_ABORT_ON_ERROR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BEHAVIOR_IGNORE_ERROR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BEHAVIOR_REVERT_ON_ERROR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KIND_CONFIG_UPDATE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KIND_DIGEST\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KIND_MESSAGE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"KIND_TRANSACTIONS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen, William Hua\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"CALLS_TYPEHASH\":{\"details\":\"keccak256(\\\"Calls(Call[] calls,uint256 space,uint256 nonce,address[] wallets)Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\\\")\"},\"CALL_TYPEHASH\":{\"details\":\"keccak256(\\\"Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\\\")\"},\"CONFIG_UPDATE_TYPEHASH\":{\"details\":\"keccak256(\\\"ConfigUpdate(bytes32 imageHash,address[] wallets)\\\")\"},\"EIP712_DOMAIN_NAME_SEQUENCE\":{\"details\":\"keccak256(\\\"Sequence Wallet\\\")\"},\"EIP712_DOMAIN_TYPEHASH\":{\"details\":\"keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\")\"},\"EIP712_DOMAIN_VERSION_SEQUENCE\":{\"details\":\"keccak256(\\\"3\\\")\"},\"MESSAGE_TYPEHASH\":{\"details\":\"keccak256(\\\"Message(bytes message,address[] wallets)\\\")\"}},\"title\":\"Payload\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidPackedLength()\":[{\"notice\":\"Error thrown when the encoding is invalid\"}]},\"kind\":\"user\",\"methods\":{\"BEHAVIOR_ABORT_ON_ERROR()\":{\"notice\":\"Behavior on error: abort on error\"},\"BEHAVIOR_IGNORE_ERROR()\":{\"notice\":\"Behavior on error: ignore error\"},\"BEHAVIOR_REVERT_ON_ERROR()\":{\"notice\":\"Behavior on error: revert on error\"},\"KIND_CONFIG_UPDATE()\":{\"notice\":\"Kind of config update\"},\"KIND_DIGEST()\":{\"notice\":\"Kind of message\"},\"KIND_MESSAGE()\":{\"notice\":\"Kind of digest\"},\"KIND_TRANSACTIONS()\":{\"notice\":\"Kind of transaction\"}},\"notice\":\"Library for encoding and decoding payloads\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/Payload.sol\":\"Payload\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601957610182908161001f823930815050f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630739d59a146100ad578063075a3d2d146100a85780633d5c1f9b146100a3578063420b0c25146100ad5780634a7d2aa0146100a85780634e5f5715146100a35763b570180a1461006957600080fd5b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160038152f35b600080fd5b610117565b6100e2565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160028152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160008152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160018152f3fea2646970667358221220fb3b37a4e71c3907c9bce206c87cf070ca2dbe4b06360016ce0001f18c92a7b764736f6c634300081c0033","sourceMap":"275:9697:8:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"6080604052600436101561001257600080fd5b60003560e01c80630739d59a146100ad578063075a3d2d146100a85780633d5c1f9b146100a3578063420b0c25146100ad5780634a7d2aa0146100a85780634e5f5715146100a35763b570180a1461006957600080fd5b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160038152f35b600080fd5b610117565b6100e2565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160028152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160008152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261009e57602060405160018152f3fea2646970667358221220fb3b37a4e71c3907c9bce206c87cf070ca2dbe4b06360016ce0001f18c92a7b764736f6c634300081c0033","sourceMap":"275:9697:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2644:4;275:9697;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;2570:4;275:9697;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2483:4;275:9697;;","linkReferences":{}},"methodIdentifiers":{"BEHAVIOR_ABORT_ON_ERROR()":"420b0c25","BEHAVIOR_IGNORE_ERROR()":"4a7d2aa0","BEHAVIOR_REVERT_ON_ERROR()":"4e5f5715","KIND_CONFIG_UPDATE()":"0739d59a","KIND_DIGEST()":"b570180a","KIND_MESSAGE()":"3d5c1f9b","KIND_TRANSACTIONS()":"075a3d2d"}}}},"src/modules/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[{"type":"error","name":"ReentrantCall","inputs":[]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ReentrantCall\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"STATUS_KEY\":{\"details\":\"keccak256(\\\"org.sequence.module.reentrancyguard.status\\\")\"}},\"version\":1},\"userdoc\":{\"errors\":{\"ReentrantCall()\":[{\"notice\":\"Error thrown when a reentrant call is detected\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/ReentrancyGuard.sol\":{\"keccak256\":\"0x566e105b1a53f49cf099037f3cb4a9739522d72739dc65f1169b97e4fbe07b32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d811a16613746e5290eab76eb4055d98a1e64e1086632697d09b0a3759a6bac5\",\"dweb:/ipfs/QmPJ33JvAxwn1sTCNvYG2TWsFo991KND2ia8JcvZ26Dge9\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"src/modules/Storage.sol":{"Storage":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Storage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for storing data at certain storage slots\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/Storage.sol\":\"Storage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220fcd43e4c5fc171e4e7783bcddb1f1c9c1a8cf4fdf99e1a4c260e587c4e51eca664736f6c634300081c0033","sourceMap":"174:658:10:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"600080fdfea2646970667358221220fcd43e4c5fc171e4e7783bcddb1f1c9c1a8cf4fdf99e1a4c260e587c4e51eca664736f6c634300081c0033","sourceMap":"174:658:10:-:0;;","linkReferences":{}}}}},"src/modules/auth/BaseAuth.sol":{"BaseAuth":{"abi":[{"type":"function","name":"getStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"recoverPartialSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"weight","type":"uint256","internalType":"uint256"},{"name":"isValidImage","type":"bool","internalType":"bool"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"},{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"recoverSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"setStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_address","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImageHash","inputs":[{"name":"_imageHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"StaticSignatureSet","inputs":[{"name":"_hash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"_address","type":"address","indexed":false,"internalType":"address"},{"name":"_timestamp","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"error","name":"ChainedSignatureNestedInChainedSignature","inputs":[]},{"type":"error","name":"InvalidERC1271Signature","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignatureFlag","inputs":[{"name":"_flag","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidSignatureWeight","inputs":[{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureExpired","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_expires","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureWrongCaller","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_caller","type":"address","internalType":"address"},{"name":"_expectedCaller","type":"address","internalType":"address"}]},{"type":"error","name":"LowWeightChainedSignature","inputs":[{"name":"_signature","type":"bytes","internalType":"bytes"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]},{"type":"error","name":"UnusedSnapshot","inputs":[{"name":"_snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"WrongChainedCheckpointOrder","inputs":[{"name":"_nextCheckpoint","type":"uint256","internalType":"uint256"},{"name":"_checkpoint","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ChainedSignatureNestedInChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidERC1271Signature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSapientSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_expires\",\"type\":\"uint256\"}],\"name\":\"InvalidStaticSignatureExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_expectedCaller\",\"type\":\"address\"}],\"name\":\"InvalidStaticSignatureWrongCaller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"_snapshot\",\"type\":\"tuple\"}],\"name\":\"UnusedSnapshot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nextCheckpoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_checkpoint\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"StaticSignatureSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"getStaticSignature\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverPartialSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValidImage\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"setStaticSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen\",\"kind\":\"dev\",\"methods\":{\"getStaticSignature(bytes32)\":{\"params\":{\"_hash\":\"The hash to get the static signature for\"},\"returns\":{\"_0\":\"address The address associated with the static signature\",\"_1\":\"timestamp The timestamp of the static signature\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"_0\":\"Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature to recover\"},\"returns\":{\"checkpoint\":\"The checkpoint identifier\",\"imageHash\":\"The derived image hash\",\"isValidImage\":\"Whether the image hash is valid\",\"opHash\":\"The hash of the payload\",\"threshold\":\"The signature threshold\",\"weight\":\"The derived weight\"}},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"payload\":\"The payload to recover the signature from\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"_0\":\"The recovered image hash\"}},\"setStaticSignature(bytes32,address,uint96)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_address\":\"The address to associate with the static signature\",\"_hash\":\"The hash to set the static signature for\",\"_timestamp\":\"The timestamp of the static signature\"}},\"updateImageHash(bytes32)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_imageHash\":\"The new image hash\"}}},\"stateVariables\":{\"STATIC_SIGNATURE_KEY\":{\"details\":\"keccak256(\\\"org.sequence.module.auth.static\\\")\"}},\"title\":\"BaseAuth\",\"version\":1},\"userdoc\":{\"errors\":{\"ChainedSignatureNestedInChainedSignature()\":[{\"notice\":\"Error thrown when a chained signature is nested inside another chained signature\"}],\"InvalidERC1271Signature(bytes32,address,bytes)\":[{\"notice\":\"Error thrown when the ERC1271 signature is invalid\"}],\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when the sapient signature is invalid\"}],\"InvalidSignatureFlag(uint256)\":[{\"notice\":\"Error thrown when the signature flag is invalid\"}],\"InvalidSignatureWeight(uint256,uint256)\":[{\"notice\":\"Error thrown when the signature weight is invalid\"}],\"InvalidStaticSignatureExpired(bytes32,uint256)\":[{\"notice\":\"Error thrown when the static signature has expired\"}],\"InvalidStaticSignatureWrongCaller(bytes32,address,address)\":[{\"notice\":\"Error thrown when the static signature has the wrong caller\"}],\"LowWeightChainedSignature(bytes,uint256,uint256)\":[{\"notice\":\"Error thrown when the weight is too low for a chained signature\"}],\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}],\"UnusedSnapshot((bytes32,uint256))\":[{\"notice\":\"Error thrown when the snapshot is unused\"}],\"WrongChainedCheckpointOrder(uint256,uint256)\":[{\"notice\":\"Error thrown when the checkpoint order is wrong\"}]},\"events\":{\"StaticSignatureSet(bytes32,address,uint96)\":{\"notice\":\"Event emitted when a static signature is set\"}},\"kind\":\"user\",\"methods\":{\"getStaticSignature(bytes32)\":{\"notice\":\"Get the static signature for a specific hash\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recover the partial signature\"},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recovers the image hash of a given signature\"},\"setStaticSignature(bytes32,address,uint96)\":{\"notice\":\"Set the static signature for a specific hash\"},\"updateImageHash(bytes32)\":{\"notice\":\"Update the image hash\"}},\"notice\":\"Base contract for the auth module\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/auth/BaseAuth.sol\":\"BaseAuth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]},\"src/modules/auth/BaseAuth.sol\":{\"keccak256\":\"0x1aea32726fe1e8c204805a01fde5a7c832caa76960bf57bbaa2cf13e6804b9dc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://851b09d56bfc9b2f2025f1351ca2a4ae5e9c82e8fb26e58216cff849fc9f8320\",\"dweb:/ipfs/QmeHcagSWRPXR1ac1jEChoYTDzfhLyvfGKAgfu4nc3uctc\"]},\"src/modules/auth/BaseSig.sol\":{\"keccak256\":\"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46\",\"dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ\"]},\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]},\"src/modules/interfaces/IAuth.sol\":{\"keccak256\":\"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353\",\"dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp\"]},\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/IPartialAuth.sol\":{\"keccak256\":\"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519\",\"dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"getStaticSignature(bytes32)":"92dcb3fc","isValidSignature(bytes32,bytes)":"1626ba7e","recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"ad55366b","recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"13792a4a","setStaticSignature(bytes32,address,uint96)":"f727ef1c","updateImageHash(bytes32)":"29561426"}}}},"src/modules/auth/BaseSig.sol":{"BaseSig":{"abi":[{"type":"error","name":"ChainedSignatureNestedInChainedSignature","inputs":[]},{"type":"error","name":"InvalidERC1271Signature","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignatureFlag","inputs":[{"name":"_flag","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"LowWeightChainedSignature","inputs":[{"name":"_signature","type":"bytes","internalType":"bytes"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnusedSnapshot","inputs":[{"name":"_snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"WrongChainedCheckpointOrder","inputs":[{"name":"_nextCheckpoint","type":"uint256","internalType":"uint256"},{"name":"_checkpoint","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ChainedSignatureNestedInChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidERC1271Signature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"_snapshot\",\"type\":\"tuple\"}],\"name\":\"UnusedSnapshot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nextCheckpoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_checkpoint\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen, William Hua, Shun Kakinoki\",\"kind\":\"dev\",\"methods\":{},\"title\":\"BaseSig\",\"version\":1},\"userdoc\":{\"errors\":{\"ChainedSignatureNestedInChainedSignature()\":[{\"notice\":\"Error thrown when a chained signature is nested inside another chained signature\"}],\"InvalidERC1271Signature(bytes32,address,bytes)\":[{\"notice\":\"Error thrown when the ERC1271 signature is invalid\"}],\"InvalidSignatureFlag(uint256)\":[{\"notice\":\"Error thrown when the signature flag is invalid\"}],\"LowWeightChainedSignature(bytes,uint256,uint256)\":[{\"notice\":\"Error thrown when the weight is too low for a chained signature\"}],\"UnusedSnapshot((bytes32,uint256))\":[{\"notice\":\"Error thrown when the snapshot is unused\"}],\"WrongChainedCheckpointOrder(uint256,uint256)\":[{\"notice\":\"Error thrown when the checkpoint order is wrong\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for recovering signatures from the base-auth payload\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/auth/BaseSig.sol\":\"BaseSig\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/auth/BaseSig.sol\":{\"keccak256\":\"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46\",\"dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ\"]},\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220b2a844c8f0867bf15b7919eb50455724c1246e4228a4f505d475143f58003e9164736f6c634300081c0033","sourceMap":"671:18739:12:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"600080fdfea2646970667358221220b2a844c8f0867bf15b7919eb50455724c1246e4228a4f505d475143f58003e9164736f6c634300081c0033","sourceMap":"671:18739:12:-:0;;","linkReferences":{}}}}},"src/modules/auth/SelfAuth.sol":{"SelfAuth":{"abi":[{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SelfAuth\",\"version\":1},\"userdoc\":{\"errors\":{\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Modifier for checking if the caller is the same as the contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/auth/SelfAuth.sol\":\"SelfAuth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"src/modules/auth/Stage1Auth.sol":{"Stage1Auth":{"abi":[{"type":"constructor","inputs":[{"name":"_factory","type":"address","internalType":"address"},{"name":"_stage2","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"FACTORY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"INIT_CODE_HASH","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"STAGE_2_IMPLEMENTATION","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getImplementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"recoverPartialSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"weight","type":"uint256","internalType":"uint256"},{"name":"isValidImage","type":"bool","internalType":"bool"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"},{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"recoverSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"setStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_address","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImageHash","inputs":[{"name":"_imageHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImplementation","inputs":[{"name":"_implementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"ImageHashUpdated","inputs":[{"name":"newImageHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ImplementationUpdated","inputs":[{"name":"newImplementation","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StaticSignatureSet","inputs":[{"name":"_hash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"_address","type":"address","indexed":false,"internalType":"address"},{"name":"_timestamp","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"error","name":"ChainedSignatureNestedInChainedSignature","inputs":[]},{"type":"error","name":"ImageHashIsZero","inputs":[]},{"type":"error","name":"InvalidERC1271Signature","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignatureFlag","inputs":[{"name":"_flag","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidSignatureWeight","inputs":[{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureExpired","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_expires","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureWrongCaller","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_caller","type":"address","internalType":"address"},{"name":"_expectedCaller","type":"address","internalType":"address"}]},{"type":"error","name":"LowWeightChainedSignature","inputs":[{"name":"_signature","type":"bytes","internalType":"bytes"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]},{"type":"error","name":"UnusedSnapshot","inputs":[{"name":"_snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"WrongChainedCheckpointOrder","inputs":[{"name":"_nextCheckpoint","type":"uint256","internalType":"uint256"},{"name":"_checkpoint","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_stage2\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ChainedSignatureNestedInChainedSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ImageHashIsZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidERC1271Signature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSapientSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_expires\",\"type\":\"uint256\"}],\"name\":\"InvalidStaticSignatureExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_expectedCaller\",\"type\":\"address\"}],\"name\":\"InvalidStaticSignatureWrongCaller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"_snapshot\",\"type\":\"tuple\"}],\"name\":\"UnusedSnapshot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nextCheckpoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_checkpoint\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newImageHash\",\"type\":\"bytes32\"}],\"name\":\"ImageHashUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"ImplementationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"StaticSignatureSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FACTORY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INIT_CODE_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STAGE_2_IMPLEMENTATION\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"getStaticSignature\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverPartialSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValidImage\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"setStaticSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"}],\"name\":\"updateImplementation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"getImplementation()\":{\"returns\":{\"_0\":\"implementation The implementation\"}},\"getStaticSignature(bytes32)\":{\"params\":{\"_hash\":\"The hash to get the static signature for\"},\"returns\":{\"_0\":\"address The address associated with the static signature\",\"_1\":\"timestamp The timestamp of the static signature\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"_0\":\"Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature to recover\"},\"returns\":{\"checkpoint\":\"The checkpoint identifier\",\"imageHash\":\"The derived image hash\",\"isValidImage\":\"Whether the image hash is valid\",\"opHash\":\"The hash of the payload\",\"threshold\":\"The signature threshold\",\"weight\":\"The derived weight\"}},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"payload\":\"The payload to recover the signature from\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"_0\":\"The recovered image hash\"}},\"setStaticSignature(bytes32,address,uint96)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_address\":\"The address to associate with the static signature\",\"_hash\":\"The hash to set the static signature for\",\"_timestamp\":\"The timestamp of the static signature\"}},\"updateImageHash(bytes32)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_imageHash\":\"The new image hash\"}},\"updateImplementation(address)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"_implementation\":\"The new implementation\"}}},\"stateVariables\":{\"IMAGE_HASH_KEY\":{\"details\":\"keccak256(\\\"org.arcadeum.module.auth.upgradable.image.hash\\\")\"}},\"title\":\"Stage1Auth\",\"version\":1},\"userdoc\":{\"errors\":{\"ChainedSignatureNestedInChainedSignature()\":[{\"notice\":\"Error thrown when a chained signature is nested inside another chained signature\"}],\"ImageHashIsZero()\":[{\"notice\":\"Error thrown when the image hash is zero\"}],\"InvalidERC1271Signature(bytes32,address,bytes)\":[{\"notice\":\"Error thrown when the ERC1271 signature is invalid\"}],\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when the sapient signature is invalid\"}],\"InvalidSignatureFlag(uint256)\":[{\"notice\":\"Error thrown when the signature flag is invalid\"}],\"InvalidSignatureWeight(uint256,uint256)\":[{\"notice\":\"Error thrown when the signature weight is invalid\"}],\"InvalidStaticSignatureExpired(bytes32,uint256)\":[{\"notice\":\"Error thrown when the static signature has expired\"}],\"InvalidStaticSignatureWrongCaller(bytes32,address,address)\":[{\"notice\":\"Error thrown when the static signature has the wrong caller\"}],\"LowWeightChainedSignature(bytes,uint256,uint256)\":[{\"notice\":\"Error thrown when the weight is too low for a chained signature\"}],\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}],\"UnusedSnapshot((bytes32,uint256))\":[{\"notice\":\"Error thrown when the snapshot is unused\"}],\"WrongChainedCheckpointOrder(uint256,uint256)\":[{\"notice\":\"Error thrown when the checkpoint order is wrong\"}]},\"events\":{\"ImageHashUpdated(bytes32)\":{\"notice\":\"Emitted when the image hash is updated\"},\"ImplementationUpdated(address)\":{\"notice\":\"Emitted when the implementation is updated\"},\"StaticSignatureSet(bytes32,address,uint96)\":{\"notice\":\"Event emitted when a static signature is set\"}},\"kind\":\"user\",\"methods\":{\"FACTORY()\":{\"notice\":\"Factory address\"},\"INIT_CODE_HASH()\":{\"notice\":\"Initialization code hash\"},\"STAGE_2_IMPLEMENTATION()\":{\"notice\":\"Stage 2 implementation address\"},\"getImplementation()\":{\"notice\":\"Get the implementation\"},\"getStaticSignature(bytes32)\":{\"notice\":\"Get the static signature for a specific hash\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recover the partial signature\"},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recovers the image hash of a given signature\"},\"setStaticSignature(bytes32,address,uint96)\":{\"notice\":\"Set the static signature for a specific hash\"},\"updateImageHash(bytes32)\":{\"notice\":\"Update the image hash\"},\"updateImplementation(address)\":{\"notice\":\"Update the implementation\"}},\"notice\":\"Stage 1 auth contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/auth/Stage1Auth.sol\":\"Stage1Auth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/Wallet.sol\":{\"keccak256\":\"0xe01e9e937dd8d7572976ccc8ec3ec87e4a557069dafb05f85977a7b71f5c58d5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2e9ab78d33655f8e822258dff3f2d5ad01e84f6dc90174840d5a283b8e6413c1\",\"dweb:/ipfs/QmNMyYe3C1fs3cxKmUZ3S9VU5EE4WVWPVcwiGbgvbS1vrH\"]},\"src/modules/Implementation.sol\":{\"keccak256\":\"0x16546d4be07865808890308750916b0a9a55e7a994a458c01edde4618f29b4e6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1b1f9785b08c9f29d6849ba2d3dee89fa3ea5f3c2feec4a59a6d1040e3fbe040\",\"dweb:/ipfs/QmU2Pm5C3Ztky7RQdCZggavyq7Eh1eS1HFqVz9jZKiMUML\"]},\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]},\"src/modules/auth/BaseAuth.sol\":{\"keccak256\":\"0x1aea32726fe1e8c204805a01fde5a7c832caa76960bf57bbaa2cf13e6804b9dc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://851b09d56bfc9b2f2025f1351ca2a4ae5e9c82e8fb26e58216cff849fc9f8320\",\"dweb:/ipfs/QmeHcagSWRPXR1ac1jEChoYTDzfhLyvfGKAgfu4nc3uctc\"]},\"src/modules/auth/BaseSig.sol\":{\"keccak256\":\"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46\",\"dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ\"]},\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]},\"src/modules/auth/Stage1Auth.sol\":{\"keccak256\":\"0x1d6cb4c5d83e590646455a3224127cda36f3b32c49a905e73ae6beacd8eca724\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://931d7a564a48fbea5ec6b106d1f360d3380944d3590ab68ec7d1738dc2d38232\",\"dweb:/ipfs/QmVAsitTWYphQ7auDUeoFXiav6NJJXQNjQDv8nrJJrHsrZ\"]},\"src/modules/interfaces/IAuth.sol\":{\"keccak256\":\"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353\",\"dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp\"]},\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/IPartialAuth.sol\":{\"keccak256\":\"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519\",\"dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60e0806040523461013e57604081612b0f803803809161001f8285610143565b83398101031261013e5761003e602061003783610166565b9201610166565b604051909190606081016001600160401b03811182821017610128576040908152602f82527f6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d305460208301526e5af43d82803e903d91601f57fd5bf360881b82820152519060005b602f811061011357505030604f820152604f81526100c4606f82610143565b6020815191012060805260a05260c052604051612994908161017b82396080518181816107ca015261176a015260a051818181610918015261173b015260c05181818161087f01526109e50152f35b806020809284010151828286010152016100a5565b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b0382119082101761012857604052565b51906001600160a01b038216820361013e5756fe6080604052600436101561001257600080fd5b60003560e01c8063025b22bc146100c757806313792a4a146100c25780631626ba7e146100bd578063257671f5146100b857806329561426146100b35780632dd31000146100ae57806392dcb3fc146100a95780639f69ef54146100a4578063aaf10f421461009f578063ad55366b1461009a5763f727ef1c1461009557600080fd5b610aa6565b610a5a565b610a09565b61099a565b61093c565b6108cd565b6107ed565b610794565b61070c565b61060f565b610115565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100ef57565b600080fd5b359073ffffffffffffffffffffffffffffffffffffffff821682036100ef57565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef5760043573ffffffffffffffffffffffffffffffffffffffff811681036100ef573033036101715761016f90610fbe565b005b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff8211176101ea57604052565b61019f565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101ea57604052565b6040519061023f60e0836101ef565b565b6040519061023f610120836101ef565b359060ff821682036100ef57565b359081151582036100ef57565b67ffffffffffffffff81116101ea5760051b60200190565b92919267ffffffffffffffff82116101ea57604051916102cc60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101ef565b8294818452818301116100ef578281602093846000960137010152565b9080601f830112156100ef5781602061030493359101610284565b90565b81601f820112156100ef5780359061031e8261026c565b9261032c60405194856101ef565b82845260208085019360051b830101918183116100ef5760208101935b83851061035857505050505090565b843567ffffffffffffffff81116100ef57820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082860301126100ef5761039f610230565b916103ac602083016100f4565b83526040820135602084015260608201359267ffffffffffffffff84116100ef5760e0836103e18860208098819801016102e9565b6040840152608081013560608401526103fc60a0820161025f565b608084015261040d60c0820161025f565b60a0840152013560c0820152815201940193610349565b9080601f830112156100ef57813561043b8161026c565b9261044960405194856101ef565b81845260208085019260051b8201019283116100ef57602001905b8282106104715750505090565b6020809161047e846100f4565b815201910190610464565b9181601f840112156100ef5782359167ffffffffffffffff83116100ef57602083818601950101116100ef57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126100ef5760043567ffffffffffffffff81116100ef576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82850301126100ef57610529610241565b9061053681600401610251565b82526105446024820161025f565b6020830152604481013567ffffffffffffffff81116100ef5784600461056c92840101610307565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff81116100ef578460046105a8928401016102e9565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116100ef57600485916105e5930101610424565b610100820152916024359067ffffffffffffffff82116100ef5761060b91600401610489565b9091565b346100ef5761061d366104b7565b9091610100810192610638610633855151610c16565b610c36565b9160005b8551805182101561069f579061069961067461065a83600195610cb4565b5173ffffffffffffffffffffffffffffffffffffffff1690565b61067e8388610cb4565b9073ffffffffffffffffffffffffffffffffffffffff169052565b0161063c565b50508383866106b43361067e83515185610cb4565b526106c081848461100d565b50156106d25760405160018152602090f35b610708906040519384937ff58cc8b500000000000000000000000000000000000000000000000000000000855260048501610e8b565b0390fd5b346100ef5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef5760043560243567ffffffffffffffff81116100ef5760209161076461076a923690600401610489565b91610f72565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346100ef5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100ef5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef576004353033036101715780156108a3576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a161016f7f0000000000000000000000000000000000000000000000000000000000000000610fbe565b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b346100ef5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100ef5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef57604061097860043561121d565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346100ef5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100ef5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef576020305473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346100ef5760c0610a76600080610a70366104b7565b9161136f565b92610a828392936116d7565b906040519586526020860152151560408501526060840152608083015260a0820152f35b346100ef5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef57600435610ae06100cc565b604435916bffffffffffffffffffffffff83168093036100ef57303303610171577febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b19273ffffffffffffffffffffffffffffffffffffffff60609360405160208101610ba782610b7b88849190602060408401937fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018452836101ef565b847fffffffffffffffffffffffffffffffffffffffff00000000000000000000000084891b161791519020556040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9060018201809211610c2457565b610be7565b91908201809211610c2457565b90610c408261026c565b610c4d60405191826101ef565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610c7b829461026c565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051821015610cc85760209160051b010190565b610c85565b919082519283825260005b848110610d175750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201610cd8565b9080602083519182815201916020808360051b8301019401926000915b838310610d5857505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c080610dcb604085015160e0604086015260e0850190610ccd565b936060810151606085015260808101511515608085015260a0810151151560a0850152015191015297019301930191939290610d49565b906020808351928381520192019060005b818110610e205750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101610e13565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b91610f64610304949260408552610ea860408601825160ff169052565b602081015115156060860152610100610f1d610ed5604084015161012060808a0152610160890190610d2c565b606084015160a0890152608084015160c089015260a08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08983030160e08a0152610ccd565b9160c08101518288015260e081015161012088015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086830301610140870152610e02565b926020818503910152610e4c565b90610f8f9291610f806111c2565b906003825260e082015261100d565b5015610fb9577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b60207f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca039180305573ffffffffffffffffffffffffffffffffffffffff60405191168152a1565b9015610cc85790565b61104061101a8484611004565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f8000000000000000000000000000000000000000000000000000000000000000808216146110c3575061107892600092839261136f565b905091909192808210611093575050611090906116d7565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f02000000000000000000000000000000000000000000000000000000000000009081161460208201526110f9925090506117a6565b906111038261121d565b42811115611190575073ffffffffffffffffffffffffffffffffffffffff81168015159081611185575b50611139575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b90503314153861112d565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff8211176101ea576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b6040516112898161125d6020820194859190602060408401937fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826101ef565b51902054906bffffffffffffffffffffffff8260601c921690565b604051906112b1826101ce565b60006020838281520152565b600311156112c757565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b909392938483116100ef5784116100ef578101920390565b908160409103126100ef57602060405191611328836101ce565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff61030494931681528160208201520190610ccd565b6040513d6000823e3d90fd5b909491939291853560f81c6001909381906113886112a4565b92611392826112bd565b6001820361159c575b5060018087161461153b575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190809691819660201661140a9060051c90565b61141390610c16565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a8161145f846117a6565b98899361146b936112f6565b9161147593611aa2565b909861148991600052602052604060002090565b9061149c91600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff166114c591600052602052604060002090565b94815190868215159283611530575b505081611521575b506114e45750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b905060208201511015386114dc565b1415915086386114d4565b90969193945061154d819893986112bd565b61157257611567958161155f936112f6565b939092611832565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0604088160161139b578981013560601c9750601401915087878a846115e5856112bd565b600285036115f6575b50505061139b565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c9260409261167b9290916116469161163f918a906116398983610c29565b926112f6565b3691610284565b83519586809481937fccce3bc80000000000000000000000000000000000000000000000000000000083523060048401611336565b0392165afa80156116d257611699926000916116a3575b5093610c29565b9087388a816115ee565b6116c5915060403d6040116116cb575b6116bd81836101ef565b81019061130e565b38611692565b503d6116b3565b611363565b73ffffffffffffffffffffffffffffffffffffffff9060405160208101917fff0000000000000000000000000000000000000000000000000000000000000083527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060601b16602183015260358201527f000000000000000000000000000000000000000000000000000000000000000060558201526055815261179d6075826101ef565b51902016301490565b61125d6118086117c66117c060208501511515309061231e565b93612419565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b51902090565b906118289060409396959496606084526060840191610e4c565b9460208201520152565b919492909260009560009560009560009560009561184e6111c2565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b8281106118a557505050505050508051151580611897575b6114e45750565b506020810151841115611890565b600381019d50959b50939950919750929091906118c9908b9085013560e81c610c29565b95828703611a09578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c036119da57506119169161190f898c9387896112f6565b908b61136f565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106119945750928b88511461198b575b808b101561195957508a60c08501528992959295949194939093611878565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b6000885261193a565b8d8f6107086119a585858c8e6112f6565b9390926040519485947fb006aba00000000000000000000000000000000000000000000000000000000086526004860161180e565b979899809b926119ef8b6119f694888a6112f6565b908661136f565b50929d919c909b929a9092918e8e61192a565b8a6002916118d6565b908160209103126100ef57517fffffffff00000000000000000000000000000000000000000000000000000000811681036100ef5790565b604090610304949281528160208201520191610e4c565b73ffffffffffffffffffffffffffffffffffffffff610304959360609383521660208201528160408201520191610e4c565b908160209103126100ef575190565b9391909360009460009460005b818110611abd575050505050565b8481013560f881901c9860019092019788979692909160fc1c9889156122b757506001891461227757600289146120aa576003891461207b5760048914611ffa5760068914611f545760058914611f065760078914611e3f5760088914611de95760098914611cc057600a8914611b5d577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b90919293949596975060038916978815611caf575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019081019081611bd59187876112f6565b6040517f898bd92100000000000000000000000000000000000000000000000000000000815293918491611c0d918a60048501611a4a565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156116d257611c5093600093611c7c575b5060ff909a168091019a612785565b908015611c765790611c6a91600052602052604060002090565b955b9392919093611aaf565b50611c6a565b60ff919350611ca19060203d8111611ca8575b611c9981836101ef565b810190611a93565b9290611c41565b503d611c8f565b8084013560f81c9850600101611b72565b90919293949596975060038916978815611dd8575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019081019081611d389187876112f6565b6040517f13792a4a00000000000000000000000000000000000000000000000000000000815293918491611d70918b60048501610e8b565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156116d257611db293600093611c7c575060ff909a168091019a612785565b908015611dd25790611dcc91600052602052604060002090565b95611c6c565b50611dcc565b8084013560f81c9850600101611cd5565b985060208701975094959394929391929091820135611e078661272c565b8114611e17575b611db290612746565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850611e0e565b975090919293949597600f16968715611ef4575b60206000611e65611ed29a9b866125f4565b9c9092918a604051611ea88161125d8a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156116d257611db29060ff6000519a1680910199612637565b600189019883013560f81c9750611e53565b985060208701975094959394929391929091820135808514611f2c575b611db2906126ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850611f23565b989091929394959662ffffff9850611f7c611f76600c8416603f9060021c1690565b60ff1690565b918215611fe6575b6003168015611fd5575b908190611fb990611fb1908781013560e81c906003019c168c01809c89896112f6565b90898b611aa2565b911115611fcc575b90611db292916126a2565b99820199611fc1565b50600281019084013560f01c611f8e565b8482013560f81c9250600190910190611f84565b97509761205061205d929394959697600f61206593169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866112f6565b908688611aa2565b90611dcc92980198600052602052604060002090565b985096509394929391929091908082013590602001968015611dd25790611dcc91600052602052604060002090565b90919293949596975060038916978815612266575b8084013560601c9961211e91601401906120de9060021c600316611f76565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b9081019061218260208c61213485858b8b6112f6565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501611a4a565b0392165afa9081156116d2577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091612238575b5016036121f457509060ff611db292991680910199612637565b6107086122058c93899389896112f6565b906040519485947fb2fed7ae00000000000000000000000000000000000000000000000000000000865260048601611a61565b612259915060203d811161225f575b61225181836101ef565b810190611a12565b386121da565b503d612247565b8381013560f81c98506001016120bf565b98600f919293949596979850169687156122a6575b6014810197611db29160ff9091169084013560601c612637565b8281013560f81c975060010161228c565b98509091929394959698600f16978815612309575b50602060006122df611ed29a9b866125f4565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c975060206122cc565b156123ce576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261180860c0826101ef565b4690612327565b805160209091019060005b8181106123ed5750505090565b825173ffffffffffffffffffffffffffffffffffffffff168452602093840193909201916001016123e0565b6101008101516040516124348161125d6020820180956123d5565b51902090612443815160ff1690565b60ff8116806124bc5750509061180861245f6040840151612823565b9261125d60806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b6001810361251a57505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d46693810193845290810191909152606081019290925290611808816080810161125d565b6002810361257057505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e460208201908152918101929092526060820192909252611808816080810161125d565b6003036125c4575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d46660208201908152918101929092526060820192909252611808816080810161125d565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff8111610c245791565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b1660318301526045820152604581526118086065826101ef565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a00000000000000008552603884015260588301526078820152607881526118086098826101ef565b60405160208101917f53657175656e636520737461746963206469676573743a0a000000000000000083526038820152603881526118086058826101ef565b61125d6118086117c66117c060006020860151151561231e565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a83526040820152604081526118086060826101ef565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d8152611808608d826101ef565b805160209091019060005b81811061280d5750505090565b8251845260209384019390920191600101612800565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06128696128538361026c565b9261286160405194856101ef565b80845261026c565b0136602083013760005b8351811015612945578061288960019286610cb4565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152612931610120826101ef565b51902061293e8285610cb4565b5201612873565b509091506040516118088161125d6020820180956127f556fea2646970667358221220601b31e735cb9ce10c4884d944d8ed835cbdc51faa6b67dd24f3e3b2406514c364736f6c634300081c0033","sourceMap":"334:1649:14:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;334:1649:14;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;334:1649:14;;;;;;-1:-1:-1;2177:99:2;334:1649:14;2177:99:2;;;;1229:4:14;;;2177:99:2;;;;1167:70:14;;;;;;;:::i;:::-;334:1649;2177:99:2;;1167:70:14;;1157:81;1245:29;;1280:18;;1304:32;;334:1649;;;;;;;;1245:29;334:1649;;;;;;;;;;1280:18;334:1649;;;;;;;;;;1304:32;334:1649;;;;;;;;;;;2177:99:2;;334:1649:14;2177:99:2;;;;;;;;;;;;;;;334:1649:14;;;;-1:-1:-1;334:1649:14;;;;;-1:-1:-1;334:1649:14;;-1:-1:-1;334:1649:14;;;;;;;-1:-1:-1;;334:1649:14;;;;-1:-1:-1;;;;;334:1649:14;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;334:1649:14;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"6080604052600436101561001257600080fd5b60003560e01c8063025b22bc146100c757806313792a4a146100c25780631626ba7e146100bd578063257671f5146100b857806329561426146100b35780632dd31000146100ae57806392dcb3fc146100a95780639f69ef54146100a4578063aaf10f421461009f578063ad55366b1461009a5763f727ef1c1461009557600080fd5b610aa6565b610a5a565b610a09565b61099a565b61093c565b6108cd565b6107ed565b610794565b61070c565b61060f565b610115565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100ef57565b600080fd5b359073ffffffffffffffffffffffffffffffffffffffff821682036100ef57565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef5760043573ffffffffffffffffffffffffffffffffffffffff811681036100ef573033036101715761016f90610fbe565b005b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff8211176101ea57604052565b61019f565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176101ea57604052565b6040519061023f60e0836101ef565b565b6040519061023f610120836101ef565b359060ff821682036100ef57565b359081151582036100ef57565b67ffffffffffffffff81116101ea5760051b60200190565b92919267ffffffffffffffff82116101ea57604051916102cc60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601846101ef565b8294818452818301116100ef578281602093846000960137010152565b9080601f830112156100ef5781602061030493359101610284565b90565b81601f820112156100ef5780359061031e8261026c565b9261032c60405194856101ef565b82845260208085019360051b830101918183116100ef5760208101935b83851061035857505050505090565b843567ffffffffffffffff81116100ef57820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082860301126100ef5761039f610230565b916103ac602083016100f4565b83526040820135602084015260608201359267ffffffffffffffff84116100ef5760e0836103e18860208098819801016102e9565b6040840152608081013560608401526103fc60a0820161025f565b608084015261040d60c0820161025f565b60a0840152013560c0820152815201940193610349565b9080601f830112156100ef57813561043b8161026c565b9261044960405194856101ef565b81845260208085019260051b8201019283116100ef57602001905b8282106104715750505090565b6020809161047e846100f4565b815201910190610464565b9181601f840112156100ef5782359167ffffffffffffffff83116100ef57602083818601950101116100ef57565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126100ef5760043567ffffffffffffffff81116100ef576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82850301126100ef57610529610241565b9061053681600401610251565b82526105446024820161025f565b6020830152604481013567ffffffffffffffff81116100ef5784600461056c92840101610307565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff81116100ef578460046105a8928401016102e9565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116100ef57600485916105e5930101610424565b610100820152916024359067ffffffffffffffff82116100ef5761060b91600401610489565b9091565b346100ef5761061d366104b7565b9091610100810192610638610633855151610c16565b610c36565b9160005b8551805182101561069f579061069961067461065a83600195610cb4565b5173ffffffffffffffffffffffffffffffffffffffff1690565b61067e8388610cb4565b9073ffffffffffffffffffffffffffffffffffffffff169052565b0161063c565b50508383866106b43361067e83515185610cb4565b526106c081848461100d565b50156106d25760405160018152602090f35b610708906040519384937ff58cc8b500000000000000000000000000000000000000000000000000000000855260048501610e8b565b0390fd5b346100ef5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef5760043560243567ffffffffffffffff81116100ef5760209161076461076a923690600401610489565b91610f72565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346100ef5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346100ef5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef576004353033036101715780156108a3576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a161016f7f0000000000000000000000000000000000000000000000000000000000000000610fbe565b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b346100ef5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100ef5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef57604061097860043561121d565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346100ef5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100ef5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef576020305473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346100ef5760c0610a76600080610a70366104b7565b9161136f565b92610a828392936116d7565b906040519586526020860152151560408501526060840152608083015260a0820152f35b346100ef5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ef57600435610ae06100cc565b604435916bffffffffffffffffffffffff83168093036100ef57303303610171577febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b19273ffffffffffffffffffffffffffffffffffffffff60609360405160208101610ba782610b7b88849190602060408401937fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018452836101ef565b847fffffffffffffffffffffffffffffffffffffffff00000000000000000000000084891b161791519020556040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9060018201809211610c2457565b610be7565b91908201809211610c2457565b90610c408261026c565b610c4d60405191826101ef565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610c7b829461026c565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051821015610cc85760209160051b010190565b610c85565b919082519283825260005b848110610d175750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201610cd8565b9080602083519182815201916020808360051b8301019401926000915b838310610d5857505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c080610dcb604085015160e0604086015260e0850190610ccd565b936060810151606085015260808101511515608085015260a0810151151560a0850152015191015297019301930191939290610d49565b906020808351928381520192019060005b818110610e205750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101610e13565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b91610f64610304949260408552610ea860408601825160ff169052565b602081015115156060860152610100610f1d610ed5604084015161012060808a0152610160890190610d2c565b606084015160a0890152608084015160c089015260a08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08983030160e08a0152610ccd565b9160c08101518288015260e081015161012088015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086830301610140870152610e02565b926020818503910152610e4c565b90610f8f9291610f806111c2565b906003825260e082015261100d565b5015610fb9577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b60207f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca039180305573ffffffffffffffffffffffffffffffffffffffff60405191168152a1565b9015610cc85790565b61104061101a8484611004565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f8000000000000000000000000000000000000000000000000000000000000000808216146110c3575061107892600092839261136f565b905091909192808210611093575050611090906116d7565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f02000000000000000000000000000000000000000000000000000000000000009081161460208201526110f9925090506117a6565b906111038261121d565b42811115611190575073ffffffffffffffffffffffffffffffffffffffff81168015159081611185575b50611139575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b90503314153861112d565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff8211176101ea576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b6040516112898161125d6020820194859190602060408401937fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826101ef565b51902054906bffffffffffffffffffffffff8260601c921690565b604051906112b1826101ce565b60006020838281520152565b600311156112c757565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b909392938483116100ef5784116100ef578101920390565b908160409103126100ef57602060405191611328836101ce565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff61030494931681528160208201520190610ccd565b6040513d6000823e3d90fd5b909491939291853560f81c6001909381906113886112a4565b92611392826112bd565b6001820361159c575b5060018087161461153b575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190809691819660201661140a9060051c90565b61141390610c16565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a8161145f846117a6565b98899361146b936112f6565b9161147593611aa2565b909861148991600052602052604060002090565b9061149c91600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff166114c591600052602052604060002090565b94815190868215159283611530575b505081611521575b506114e45750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b905060208201511015386114dc565b1415915086386114d4565b90969193945061154d819893986112bd565b61157257611567958161155f936112f6565b939092611832565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0604088160161139b578981013560601c9750601401915087878a846115e5856112bd565b600285036115f6575b50505061139b565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c9260409261167b9290916116469161163f918a906116398983610c29565b926112f6565b3691610284565b83519586809481937fccce3bc80000000000000000000000000000000000000000000000000000000083523060048401611336565b0392165afa80156116d257611699926000916116a3575b5093610c29565b9087388a816115ee565b6116c5915060403d6040116116cb575b6116bd81836101ef565b81019061130e565b38611692565b503d6116b3565b611363565b73ffffffffffffffffffffffffffffffffffffffff9060405160208101917fff0000000000000000000000000000000000000000000000000000000000000083527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060601b16602183015260358201527f000000000000000000000000000000000000000000000000000000000000000060558201526055815261179d6075826101ef565b51902016301490565b61125d6118086117c66117c060208501511515309061231e565b93612419565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b51902090565b906118289060409396959496606084526060840191610e4c565b9460208201520152565b919492909260009560009560009560009560009561184e6111c2565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b8281106118a557505050505050508051151580611897575b6114e45750565b506020810151841115611890565b600381019d50959b50939950919750929091906118c9908b9085013560e81c610c29565b95828703611a09578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c036119da57506119169161190f898c9387896112f6565b908b61136f565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106119945750928b88511461198b575b808b101561195957508a60c08501528992959295949194939093611878565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b6000885261193a565b8d8f6107086119a585858c8e6112f6565b9390926040519485947fb006aba00000000000000000000000000000000000000000000000000000000086526004860161180e565b979899809b926119ef8b6119f694888a6112f6565b908661136f565b50929d919c909b929a9092918e8e61192a565b8a6002916118d6565b908160209103126100ef57517fffffffff00000000000000000000000000000000000000000000000000000000811681036100ef5790565b604090610304949281528160208201520191610e4c565b73ffffffffffffffffffffffffffffffffffffffff610304959360609383521660208201528160408201520191610e4c565b908160209103126100ef575190565b9391909360009460009460005b818110611abd575050505050565b8481013560f881901c9860019092019788979692909160fc1c9889156122b757506001891461227757600289146120aa576003891461207b5760048914611ffa5760068914611f545760058914611f065760078914611e3f5760088914611de95760098914611cc057600a8914611b5d577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b90919293949596975060038916978815611caf575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019081019081611bd59187876112f6565b6040517f898bd92100000000000000000000000000000000000000000000000000000000815293918491611c0d918a60048501611a4a565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156116d257611c5093600093611c7c575b5060ff909a168091019a612785565b908015611c765790611c6a91600052602052604060002090565b955b9392919093611aaf565b50611c6a565b60ff919350611ca19060203d8111611ca8575b611c9981836101ef565b810190611a93565b9290611c41565b503d611c8f565b8084013560f81c9850600101611b72565b90919293949596975060038916978815611dd8575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019081019081611d389187876112f6565b6040517f13792a4a00000000000000000000000000000000000000000000000000000000815293918491611d70918b60048501610e8b565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156116d257611db293600093611c7c575060ff909a168091019a612785565b908015611dd25790611dcc91600052602052604060002090565b95611c6c565b50611dcc565b8084013560f81c9850600101611cd5565b985060208701975094959394929391929091820135611e078661272c565b8114611e17575b611db290612746565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850611e0e565b975090919293949597600f16968715611ef4575b60206000611e65611ed29a9b866125f4565b9c9092918a604051611ea88161125d8a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156116d257611db29060ff6000519a1680910199612637565b600189019883013560f81c9750611e53565b985060208701975094959394929391929091820135808514611f2c575b611db2906126ed565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850611f23565b989091929394959662ffffff9850611f7c611f76600c8416603f9060021c1690565b60ff1690565b918215611fe6575b6003168015611fd5575b908190611fb990611fb1908781013560e81c906003019c168c01809c89896112f6565b90898b611aa2565b911115611fcc575b90611db292916126a2565b99820199611fc1565b50600281019084013560f01c611f8e565b8482013560f81c9250600190910190611f84565b97509761205061205d929394959697600f61206593169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866112f6565b908688611aa2565b90611dcc92980198600052602052604060002090565b985096509394929391929091908082013590602001968015611dd25790611dcc91600052602052604060002090565b90919293949596975060038916978815612266575b8084013560601c9961211e91601401906120de9060021c600316611f76565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b9081019061218260208c61213485858b8b6112f6565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501611a4a565b0392165afa9081156116d2577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091612238575b5016036121f457509060ff611db292991680910199612637565b6107086122058c93899389896112f6565b906040519485947fb2fed7ae00000000000000000000000000000000000000000000000000000000865260048601611a61565b612259915060203d811161225f575b61225181836101ef565b810190611a12565b386121da565b503d612247565b8381013560f81c98506001016120bf565b98600f919293949596979850169687156122a6575b6014810197611db29160ff9091169084013560601c612637565b8281013560f81c975060010161228c565b98509091929394959698600f16978815612309575b50602060006122df611ed29a9b866125f4565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c975060206122cc565b156123ce576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261180860c0826101ef565b4690612327565b805160209091019060005b8181106123ed5750505090565b825173ffffffffffffffffffffffffffffffffffffffff168452602093840193909201916001016123e0565b6101008101516040516124348161125d6020820180956123d5565b51902090612443815160ff1690565b60ff8116806124bc5750509061180861245f6040840151612823565b9261125d60806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b6001810361251a57505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d46693810193845290810191909152606081019290925290611808816080810161125d565b6002810361257057505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e460208201908152918101929092526060820192909252611808816080810161125d565b6003036125c4575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d46660208201908152918101929092526060820192909252611808816080810161125d565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff8111610c245791565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b1660318301526045820152604581526118086065826101ef565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a00000000000000008552603884015260588301526078820152607881526118086098826101ef565b60405160208101917f53657175656e636520737461746963206469676573743a0a000000000000000083526038820152603881526118086058826101ef565b61125d6118086117c66117c060006020860151151561231e565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a83526040820152604081526118086060826101ef565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d8152611808608d826101ef565b805160209091019060005b81811061280d5750505090565b8251845260209384019390920191600101612800565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06128696128538361026c565b9261286160405194856101ef565b80845261026c565b0136602083013760005b8351811015612945578061288960019286610cb4565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152612931610120826101ef565b51902061293e8285610cb4565b5201612873565b509091506040516118088161125d6020820180956127f556fea2646970667358221220601b31e735cb9ce10c4884d944d8ed835cbdc51faa6b67dd24f3e3b2406514c364736f6c634300081c0033","sourceMap":"334:1649:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;401:4:13;379:10;:27;375:75;;659:15:6;;;:::i;:::-;334:1649:14;375:75:13;423:20;-1:-1:-1;423:20:13;379:10;334:1649:14;;;-1:-1:-1;423:20:13;334:1649:14;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;334:1649:14;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;4802:22:11;;;;;;4788:48;4802:33;:22;;334:1649:14;4802:33:11;:::i;:::-;4788:48;:::i;:::-;4848:13;-1:-1:-1;4898:3:11;4867:22;;334:1649:14;;4863:33:11;;;;;4930:25;4911:44;4930:25;;;4834:1;4930:25;;:::i;:::-;334:1649:14;;;;;4930:25:11;4911:44;;;;:::i;:::-;334:1649:14;;;;;;4911:44:11;334:1649:14;4848:13:11;;4863:33;;;;;;4968:57;5015:10;4968:57;4982:22;;334:1649:14;4968:57:11;;:::i;:::-;5031:38;5094:41;;;;;:::i;:::-;5145:8;;5141:81;;334:1649:14;;4834:1:11;334:1649:14;;;;;5141:81:11;5170:45;334:1649:14;;;5170:45:11;;;;;;334:1649:14;5170:45:11;;;:::i;:::-;;;;334:1649:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;509:39;334:1649;;;;;;;;;;;;;;;;401:4:13;379:10;:27;375:75;;1470:24:14;;1466:69;;334:1649;260:41:10;1599:28:14;260:41:10;837:66:14;260:41:10;334:1649:14;;;;;1599:28;1710:22;;;:::i;1466:69::-;1511:17;-1:-1:-1;1511:17:14;334:1649;-1:-1:-1;1511:17:14;334:1649;;;;;;;;;;;;;;;582:32;334:1649;;;;;;;;;;;;;;;;2500:26:11;334:1649:14;;2500:26:11;:::i;:::-;334:1649:14;;;;;;;;;;;;;;;;;;;;;;;;;;;663:47;334:1649;;;;;;;;;;;;;;;;1252:47:6;;334:1649:14;;;;;;;;;;;;;6003:78:11;-1:-1:-1;334:1649:14;;;;:::i;:::-;6003:78:11;;:::i;:::-;6102:24;;;;;;:::i;:::-;334:1649:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;401:4:13;379:10;:27;375:75;;2998:47:11;334:1649:14;;;;;;;552:25:10;;;;;;;334:1649:14;;;;;;;834:66:11;334:1649:14;;;;;552:25:10;;;;;;;;;:::i;:::-;334:1649:14;;;;;;2051:76:11;334:1649:14;;542:36:10;;584:40;334:1649:14;;;;;;;;;;;;;;2998:47:11;334:1649:14;;;;;;;;;;;;;4834:1:11;334:1649:14;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;334:1649:14;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;334:1649:14;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;334:1649:14;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;5290:320:11:-;;5476:40;5290:320;;334:1649:14;;:::i;:::-;2644:4:8;;;;4882:15;;;2644:4;5476:40:11;:::i;:::-;5526:8;;5522:45;;334:1649:14;5290:320:11;:::o;5522:45::-;334:1649:14;5544:16:11;:::o;880:176:6:-;334:1649:14;1013:38:6;880:176;1125:46;;;334:1649:14;;;;;;;1013:38:6;880:176::o;334:1649:14:-;;;;;;:::o;3301:1229:11:-;3555:13;;;;;:::i;:::-;;334:1649:14;;;;3555:13:11;334:1649:14;3579:20:11;;;:28;3575:521;;4286:78;;;3566:1;4286:78;;;;:::i;:::-;4238:126;;;;;4402:18;;;;4398:87;;4501:24;;;;;:::i;:::-;3301:1229;:::o;4398:87::-;4437:41;3566:1;4437:41;3864:48;334:1649:14;;;;3566:1:11;4437:41;3575:521;334:1649:14;3673:20:11;;;:28;3652:18;;;334:1649:14;3718:15:11;;-1:-1:-1;3673:20:11;-1:-1:-1;3718:15:11;:::i;:::-;3778:27;;;;:::i;:::-;3830:15;3817:28;;;3813:108;;334:1649:14;;;;3933:18:11;;;:40;;;;3575:521;3929:131;;;4068:21;4076:4;4068:21;;:::o;3929:131::-;3992:59;3566:1;3992:59;;334:1649:14;;;4034:10:11;334:1649:14;;;;;;;3566:1:11;4437:41;3933:40;3963:10;;;3955:18;;3933:40;;;3813:108;3864:48;3566:1;3864:48;;334:1649:14;;;;;;3566:1:11;4437:41;334:1649:14;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;334:1649:14;;-1:-1:-1;334:1649:14;;;;;;;;;-1:-1:-1;334:1649:14;;;;-1:-1:-1;334:1649:14;;;;;;;;;-1:-1:-1;334:1649:14;;;;-1:-1:-1;334:1649:14;;;;;;:::o;1637:245:11:-;334:1649:14;;753:25:10;;;;;;;;334:1649:14;;;;;;;834:66:11;334:1649:14;;;;;753:25:10;;;;;;;;;:::i;:::-;334:1649:14;743:36:10;;785:40;826:75:11;334:1649:14;826:75:11;1849:2;826:75;334:1649:14;;1637:245:11;:::o;334:1649:14:-;;;;;;;:::i;:::-;-1:-1:-1;334:1649:14;;;;;;;:::o;:::-;;-1:-1:-1;334:1649:14;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3199:3386:12;;;;;;;566:109:28;;;;;3504:69:12;;;3999:24;334:1649:14;;:::i;:::-;;;;;:::i;:::-;4216:35:12;4200:51;;4196:870;;3199:3386;5139:20;4216:35;5139:20;;;:28;5135:242;;-1:-1:-1;5485:4:12;5469:20;;;:28;5448:18;;;334:1649:14;826:75:11;334:1649:14;826:75:11;;;;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;5639:67:12;;;;;5811:20;5448:18;5811:20;5810:27;;334:1649:14;826:75:11;;;5810:27:12;5809:33;;;:::i;:::-;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;5850:65:12;;;;5961:15;;;;;:::i;:::-;6036:19;;;;;;:::i;:::-;6004:52;;;;:::i;:::-;5982:74;6075:50;;;545:85:29;;;;;;;461:173;;6075:50:12;6143:51;;;545:85:29;;;;;;;461:173;;6143:51:12;334:1649:14;;;6212:72:12;;545:85:29;;;;;;;461:173;;6212:72:12;334:1649:14;;;6429:32:12;;;;;:67;;;;3199:3386;6429:104;;;;;3199:3386;6425:156;;;3199:3386;:::o;6425:156::-;334:1649:14;;6550:24:12;;;334:1649:14;;6550:24:12;;;334:1649:14;;;;;;;;;;;;5170:45:11;6429:104:12;6514:19;;5448:18;6514:19;;334:1649:14;-1:-1:-1;6500:33:12;6429:104;;;:67;6465:31;;;-1:-1:-1;6429:67:12;;;;5135:242;334:1649:14;;;;;;;;;;;;:::i;:::-;5177:109:12;;5300:70;5350:19;;;;;:::i;:::-;5300:70;;;;:::i;:::-;5293:77;;;;;;;;;:::o;5177:109::-;5235:42;-1:-1:-1;5235:42:12;;-1:-1:-1;5235:42:12;4196:870;-1:-1:-1;;;4401:28:12;4417:4;4401:20;;:28;4196:870;4397:663;3281:184:28;;;;;;;-1:-1:-1;3281:184:28;;;-1:-1:-1;4441:56:12;3281:184:28;;;334:1649:14;3162:307:28;334:1649:14;:::i;:::-;4528:28:12;4512:44;;4508:544;;4397:663;;;;4196:870;;4508:544;1318:135:28;;;;-1:-1:-1;1201:256:28;;-1:-1:-1;334:1649:14;;1318:135:28;;;;;;4417:4:12;;4925:73;;4417:4;;334:1649:14;;4820:48:12;;1318:135:28;;4838:29:12;1318:135:28;;4838:29:12;:::i;:::-;4820:48;;:::i;:::-;334:1649:14;;;:::i;:::-;;;4925:73:12;;;;;;334:1649:14;4925:73:12;;4974:4;4925:73;;;;:::i;:::-;;334:1649:14;;4925:73:12;;;;;;5011:30;4925:73;-1:-1:-1;4925:73:12;;;4508:544;4914:84;5011:30;;:::i;:::-;4508:544;;;;;;;4925:73;;;;4417:4;4925:73;4417:4;4925:73;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;1742:238:14:-;334:1649;1742:238;334:1649;;1886:62;;;334:1649;;;;;1912:7;334:1649;;;;;;;;;;;1933:14;334:1649;;;;;1886:62;;;;;;:::i;:::-;334:1649;1876:73;;334:1649;1970:4;1852:123;1742:238;:::o;9411:274:8:-;9631:48;;9590:18;9513:50;9529:18;;;334:1649:14;;;9557:4:8;9513:50;;:::i;:::-;9590:18;;:::i;:::-;334:1649:14;;9631:48:8;;;9529:18;9631:48;;;;334:1649:14;;;;;;;;;;;;;;;;;;9631:48:8;334:1649:14;9621:59:8;;9411:274;:::o;2570:4::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;334:1649:14;2570:4:8;334:1649:14;2570:4:8:o;6589:1730:12:-;;;;;;334:1649:14;6785:14:12;334:1649:14;6801:17:12;334:1649:14;6820:18:12;334:1649:14;6840:14:12;334:1649:14;;;;:::i;:::-;;2644:4:8;;6904:47:12;7003:17;;334:1649:14;7034:26:12;;;;;;334:1649:14;;;;;;;;;8195:33:12;;:71;;;7027:1158;8191:124;;6589:1730;:::o;8195:71::-;8246:20;;;;334:1649:14;8232:34:12;;;8195:71;;7027:1158;1318:135:28;;;;-1:-1:-1;1201:256:28;;-1:-1:-1;1201:256:28;;-1:-1:-1;1201:256:28;;-1:-1:-1;1201:256:28;;;;7198:16:12;;1318:135:28;;;;;;;7198:16:12;:::i;:::-;7265:97;:28;;;;;:97;7296:35;7265:97;;7003:17;7375:35;;7003:17;;7503:26;7485:73;7503:26;;;;;;;;:::i;:::-;7485:73;;;:::i;:::-;7422:136;;;;;;;;;;;;;;;;7371:355;;;;7738:18;7734:122;;7863:16;334:1649:14;;;;7892:32:12;7888:89;;7371:355;7989:28;;;;7985:115;;8108:23;;;;;2644:4:8;8151:27:12;7027:1158;;;;;;;;;;;;7985:115;8036:55;334:1649:14;8036:55:12;3864:48:11;334:1649:14;;;;;;3566:1:11;4437:41;7888:89:12;334:1649:14;2644:4:8;;7888:89:12;;7734:122;7801:26;;7775:72;7801:26;;;;;;:::i;:::-;334:1649:14;;;;;7775:72:12;;;;;;;;;;:::i;7371:355::-;7662:26;;;;;;;;7639:78;7662:26;;;;:::i;:::-;7639:78;;;:::i;:::-;-1:-1:-1;7583:134:12;;;;;;;;;;;;;7371:355;;7265:97;;2570:4:8;7265:97:12;;;842:1;;;;;;;;;;334:1649:14;;;842:1:12;;;;;:::o;:::-;;;;;;334:1649:14;;842:1:12;;;;;;;;:::i;:::-;334:1649:14;842:1:12;;;;;334:1649:14;;;842:1:12;;;334:1649:14;842:1:12;;;;;;;;:::i;1206:::-;;;;;;;;;334:1649:14;1206:1:12;:::o;8323:11084::-;;;;;334:1649:14;8478:12:12;334:1649:14;8516:14:12;334:1649:14;8592:26:12;;;;;;8323:11084;;;;;:::o;8585:10812::-;798:135:28;;;;;;;;;;;;;;;;683:254;;;;826:75:11;;9002:27:12;;;8998:864;;9922:20;786:1;9922:20;;9918:676;;842:1;10644:30;;10640:1383;;885:1;12060:17;;12056:279;;8953:1;12374:19;;12370:656;;1023:1;13065:19;;13061:1278;;978:1;14381:22;;14377:518;;1080:1;14946:31;;14942:933;;1150:1;16012:44;;16008:617;;1206:1;16675:30;;16671:1308;;1270:2;18037:38;;18033:1312;;19362:26;334:1649:14;19362:26:12;8953:1;334:1649:14;;;1270:2:12;3566:1:11;4437:41;18033:1312:12;18347:16;;;;;;;;;885:1;18347:16;;18380:15;;;18376:99;;18033:1312;3281:184:28;;;;;;;;;18629:16:12;;334:1649:14;826:75:11;;;334:1649:14;;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;740:1:12;;;19015:26;;;;;;;:::i;:::-;334:1649:14;;;18953:89:12;;334:1649:14;;;;18953:89:12;;334:1649:14;8953:1:12;18953:89;;;:::i;:::-;;334:1649:14;;;;18953:89:12;;;;;;;;;;;;19185:51;18953:89;334:1649:14;18953:89:12;;;18033:1312;19054:16;334:1649:14;19054:16:12;334:1649:14;;740:1:12;;;19185:51;;:::i;:::-;19255:59;:18;;;;19276:31;;;545:85:29;;;;;;;461:173;;19276:31:12;19326:8;8585:10812;;;;;;;;19255:59;;;;18953:89;334:1649:14;18953:89:12;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;18376:99;798:135:28;;;;;;;-1:-1:-1;798:135:28;;18376:99:12;;16671:1308;16977:16;;;;;;;;;885:1;16977:16;;17010:15;;;17006:99;;16671:1308;3281:184:28;;;;;;;;;17297:16:12;;334:1649:14;826:75:11;;;334:1649:14;;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;740:1:12;;;17648:26;;;;;;;:::i;:::-;334:1649:14;;;17599:76:12;;334:1649:14;;;;17599:76:12;;334:1649:14;8953:1:12;17599:76;;;:::i;:::-;;334:1649:14;;;;17599:76:12;;;;;;;;;;;;17819:51;17599:76;334:1649:14;17599:76:12;;;17687:16;334:1649:14;17687:16:12;334:1649:14;;740:1:12;;;17819:51;;:::i;:::-;17889:59;:18;;;;17910:31;;;545:85:29;;;;;;;461:173;;17910:31:12;17960:8;;;17889:59;;;;17006:99;798:135:28;;;;;;;-1:-1:-1;798:135:28;;17006:99:12;;16008:617;2926:232:28;-1:-1:-1;3047:107:28;;;;-1:-1:-1;2926:232:28;;;;;;;;;;3047:107;;;16323:28:12;2926:232:28;16323:28:12;:::i;:::-;16367:29;;16363:88;;16008:617;16478:38;;;:::i;16363:88::-;16421:17;;-1:-1:-1;16363:88:12;;14942:933;15290:16;;;;;;;;;15302:4;15290:16;15323:15;;;15319:99;;14942:933;15592:61;334:1649:14;3511:494:28;15572:92:12;3511:494:28;;;;:::i;:::-;15491:53:12;;;;334:1649:14;;;15592:61:12;;;;;;;;1080:1;;;;;;;;334:1649:14;1080:1:12;;;15592:61;334:1649:14;15582:72:12;;334:1649:14;;;15572:92:12;;;;740:1;;;;334:1649:14;740:1:12;;;;;334:1649:14;;;;740:1:12;;;334:1649:14;740:1:12;;;334:1649:14;740:1:12;334:1649:14;740:1:12;15572:92;;;;;;786:1;15572:92;;;;;15724:42;15572:92;334:1649:14;;15572:92:12;334:1649:14;;740:1:12;;;15724:42;;:::i;15319:99::-;798:135:28;;;;;;;;;;-1:-1:-1;15319:99:12;;14377:518;2926:232:28;-1:-1:-1;3047:107:28;;;;-1:-1:-1;2926:232:28;;;;;;;;;;3047:107;;;14647:20:12;;;14643:79;;14377:518;14749:37;;;:::i;14643:79::-;14692:17;;-1:-1:-1;14643:79:12;;13061:1278;13430:16;;;;;;;;334:1649:14;13430:16:12;;13399:53;13424:28;13442:4;13430:16;;826:75:11;842:1:12;334:1649:14;826:75:11;;842:1:12;;13424:28;334:1649:14;;;;13399:53:12;13468:19;;;13464:107;;13061:1278;885:1;13617:16;13650:22;;13646:114;;13061:1278;1201:256:28;;;13947:60:12;;13980:26;;1318:135:28;;;;;;;;;334:1649:14;;740:1:12;;13980:26;;;;;:::i;:::-;13947:60;;;;:::i;:::-;14019:16;-1:-1:-1;14052:35:12;14048:92;;13061:1278;14167:63;;;;;:::i;14048:92::-;740:1;;;;14048:92;;13646:114;-1:-1:-1;1058:135:28;;;;;;;;;13646:114:12;;13464:107;798:135:28;;;;;;;-1:-1:-1;798:135:28;;;;;13464:107:12;;12370:656;12571:16;;;2213:380:28;12860:26:12;12571:16;;;;;;12583:4;12827:60;12571:16;;2213:380:28;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;740:1:12;;;;12860:26;;;;;:::i;:::-;12827:60;;;;:::i;:::-;;12964:31;12827:60;740:1;;12964:31;545:85:29;;;;;;;461:173;;12056:279:12;2926:232:28;-1:-1:-1;2926:232:28;-1:-1:-1;2926:232:28;;;;;;;;;3047:107;;;;;;;12245:59:12;:18;;;;12266:31;;;545:85:29;;;;;;;461:173;;10640:1383:12;10935:16;;;;;;;;;885:1;10935:16;;10968:15;;;10964:99;;10640:1383;3281:184:28;;;;;;;2213:380;;3281:184;;;11217:47:12;;334:1649:14;826:75:11;;;11236:28:12;842:1;11217:47;2213:380:28;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;740:1:12;;;11572:26;11531:68;;11572:26;;;;;;;:::i;:::-;334:1649:14;;;;;;11531:68:12;;;;;;;334:1649:14;11531:68:12;;8953:1;11531:68;;;:::i;:::-;;334:1649:14;;11531:68:12;;;;;;;334:1649:14;11531:68:12;334:1649:14;11531:68:12;334:1649:14;11531:68:12;;;10640:1383;334:1649:14;;11531:97:12;11527:203;;11741:16;;334:1649:14;11872:42:12;11741:16;334:1649:14;;740:1:12;;;11872:42;;:::i;11527:203::-;11651:66;11690:26;;;;;;;;:::i;:::-;334:1649:14;;;11651:66:12;;;;;;8953:1;11651:66;;;:::i;11531:68::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10964:99;798:135:28;;;;;;;-1:-1:-1;798:135:28;;10964:99:12;;9918:676;10115:16;10127:4;10115:16;;;;;;;;;;10148:15;;;10144:99;;9918:676;3281:184:28;;;;10443:42:12;;334:1649:14;;;;;3281:184:28;;;;;10443:42:12;:::i;10144:99::-;798:135:28;;;;;;;-1:-1:-1;798:135:28;;10144:99:12;;8998:864;9342:16;;;;;;;;;;9354:4;9342:16;9375:15;;;9371:99;;8998:864;3511:494:28;9624:27:12;334:1649:14;3511:494:28;9624:27:12;3511:494:28;;;;:::i;:::-;9543:53:12;;;334:1649:14;;9624:27:12;;;;;740:1;;;;334:1649:14;740:1:12;;;;;334:1649:14;;;;740:1:12;;;334:1649:14;740:1:12;;;334:1649:14;740:1:12;334:1649:14;740:1:12;9371:99;798:135:28;;;;-1:-1:-1;798:135:28;;;;;;-1:-1:-1;9624:27:12;9371:99;;1027:351:8;1294:48;;;-1:-1:-1;1294:48:8;;334:1649:14;;;1165:202:8;;;;334:1649:14;627:66:8;334:1649:14;;797:66:8;334:1649:14;956:66:8;;334:1649:14;956:66:8;;;;334:1649:14;956:66:8;;;334:1649:14;;956:66:8;;;334:1649:14;956:66:8;1165:202;;;;;;:::i;1294:48::-;1328:13;1294:48;;;334:1649:14;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;8435:972:8;8573:22;;;;334:1649:14;;8556:40:8;;334:1649:14;8556:40:8;;;334:1649:14;;;:::i;8556:40:8:-;334:1649:14;8546:51:8;;334:1649:14;;;;;;;;;;;;8608:34:8;334:1649:14;;8682:14:8;;;8722:82;8672:25;334:1649:14;8682:14:8;;;8672:25;:::i;:::-;8760:14;8722:82;8776:14;8760;;;334:1649:14;8776:14:8;;334:1649:14;;;;8722:82:8;;;8556:40;8722:82;;;;1887:66;;;;;;;;;334:1649:14;1887:66:8;334:1649:14;;1887:66:8;;;334:1649:14;1887:66:8;;;334:1649:14;1887:66:8;;;334:1649:14;1887:66:8;334:1649:14;1887:66:8;8604:799;2483:4;8822:29;;2483:4;;-1:-1:-1;;8917:16:8;;;334:1649:14;;8556:40:8;334:1649:14;;;8907:27:8;334:1649:14;;;2067:66:8;8878:70;;;334:1649:14;;;2067:66:8;;;334:1649:14;;;;2067:66:8;;;334:1649:14;;;;8878:70:8;;334:1649:14;2067:66:8;;;8878:70;2067:66;8818:585;2570:4;8966:35;;2570:4;;-1:-1:-1;;9063:18:8;;334:1649:14;;;;2262:66:8;8556:40;9028:67;;334:1649:14;;;2067:66:8;;;334:1649:14;;;;2067:66:8;;;334:1649:14;;;;9028:67:8;334:1649:14;2067:66:8;;;9028:67;2067:66;8962:441;2644:4;9113:28;2644:4;;-1:-1:-1;9290:15:8;;334:1649:14;;;;2067:66:8;8556:40;9261:58;;334:1649:14;;;2067:66:8;;;334:1649:14;;;;2067:66:8;;;334:1649:14;;;;9261:58:8;334:1649:14;2067:66:8;;;9261:58;2067:66;9109:294;9370:26;334:1649:14;9370:26:8;334:1649:14;;9370:26:8;334:1649:14;2483:4:8;3566:1:11;4437:41;3511:494:28;3690:173;;;;;;;;;;;;3998:2;3955:14;3931:39;;826:75:11;334:1649:14;826:75:11;334:1649:14;;;;;;3511:494:28;:::o;2183:181:12:-;;334:1649:14;;2304:54:12;334:1649:14;2304:54:12;;;334:1649:14;;;;;;;;;;;;;;;;2304:54:12;;;;;;:::i;2368:210::-;;334:1649:14;;2499:73:12;;;;334:1649:14;;;;;;;;;;;;;;;;;2499:73:12;;;;;;:::i;2798:182::-;334:1649:14;;2917:57:12;;;334:1649:14;;;;;;;;;2917:57:12;;;;;;:::i;9689:280:8:-;9915:48;;9874:18;9803:44;334:1649:14;9819:18:8;;;334:1649:14;;;9803:44:8;:::i;2984:211:12:-;334:1649:14;;3114:75:12;;;334:1649:14;;;;;;;;;3114:75:12;;;;;;:::i;2582:212::-;;334:1649:14;;2714:74:12;334:1649:14;2714:74:12;;;334:1649:14;;;;;;;;;;;;;;;;;;;;2714:74:12;;;;;;:::i;334:1649:14:-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;7977:454:8;;334:1649:14;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;-1:-1:-1;8321:3:8;334:1649:14;;8303:16:8;;;;;8359:8;;334:1649:14;8359:8:8;;;:::i;:::-;;334:1649:14;;;;7865:7:8;334:1649:14;7865:7:8;;334:1649:14;7884:6:8;334:1649:14;7884:6:8;;;334:1649:14;;;;;7874:17:8;7893:10;;;;334:1649:14;7905:14:8;;;334:1649:14;;;7921:14:8;7937:17;7921:14;;;334:1649:14;;;7937:17:8;;334:1649:14;;;;7824:138:8;334:1649:14;7824:138:8;;334:1649:14;1566:66:8;334:1649:14;;;1566:66:8;;334:1649:14;7893:10:8;1566:66;;334:1649:14;7905:14:8;1566:66;;334:1649:14;7921:14:8;1566:66;;334:1649:14;7937:17:8;1566:66;;334:1649:14;1566:66:8;;;334:1649:14;1566:66:8;;;334:1649:14;1566:66:8;7824:138;;;;;;:::i;:::-;334:1649:14;7807:161:8;;8334:34;;;;:::i;:::-;2644:4;334:1649:14;8288:13:8;;8303:16;;;;;334:1649:14;;8397:28:8;;334:1649:14;;8397:28:8;;334:1649:14;;;:::i","linkReferences":{},"immutableReferences":{"4262":[{"start":1994,"length":32},{"start":5994,"length":32}],"4265":[{"start":2328,"length":32},{"start":5947,"length":32}],"4268":[{"start":2175,"length":32},{"start":2533,"length":32}]}},"methodIdentifiers":{"FACTORY()":"2dd31000","INIT_CODE_HASH()":"257671f5","STAGE_2_IMPLEMENTATION()":"9f69ef54","getImplementation()":"aaf10f42","getStaticSignature(bytes32)":"92dcb3fc","isValidSignature(bytes32,bytes)":"1626ba7e","recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"ad55366b","recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"13792a4a","setStaticSignature(bytes32,address,uint96)":"f727ef1c","updateImageHash(bytes32)":"29561426","updateImplementation(address)":"025b22bc"}}}},"src/modules/auth/Stage2Auth.sol":{"Stage2Auth":{"abi":[{"type":"function","name":"getImplementation","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"imageHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"recoverPartialSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"weight","type":"uint256","internalType":"uint256"},{"name":"isValidImage","type":"bool","internalType":"bool"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"},{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"recoverSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"setStaticSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_address","type":"address","internalType":"address"},{"name":"_timestamp","type":"uint96","internalType":"uint96"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImageHash","inputs":[{"name":"_imageHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateImplementation","inputs":[{"name":"_implementation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"ImageHashUpdated","inputs":[{"name":"newImageHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ImplementationUpdated","inputs":[{"name":"newImplementation","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StaticSignatureSet","inputs":[{"name":"_hash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"_address","type":"address","indexed":false,"internalType":"address"},{"name":"_timestamp","type":"uint96","indexed":false,"internalType":"uint96"}],"anonymous":false},{"type":"error","name":"ChainedSignatureNestedInChainedSignature","inputs":[]},{"type":"error","name":"ImageHashIsZero","inputs":[]},{"type":"error","name":"InvalidERC1271Signature","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_signer","type":"address","internalType":"address"},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidKind","inputs":[{"name":"kind","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"InvalidSapientSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidSignatureFlag","inputs":[{"name":"_flag","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidSignatureWeight","inputs":[{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureExpired","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_expires","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidStaticSignatureWrongCaller","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_caller","type":"address","internalType":"address"},{"name":"_expectedCaller","type":"address","internalType":"address"}]},{"type":"error","name":"LowWeightChainedSignature","inputs":[{"name":"_signature","type":"bytes","internalType":"bytes"},{"name":"_threshold","type":"uint256","internalType":"uint256"},{"name":"_weight","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"OnlySelf","inputs":[{"name":"_sender","type":"address","internalType":"address"}]},{"type":"error","name":"UnusedSnapshot","inputs":[{"name":"_snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}]},{"type":"error","name":"WrongChainedCheckpointOrder","inputs":[{"name":"_nextCheckpoint","type":"uint256","internalType":"uint256"},{"name":"_checkpoint","type":"uint256","internalType":"uint256"}]}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ChainedSignatureNestedInChainedSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ImageHashIsZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidERC1271Signature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"InvalidKind\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"InvalidSapientSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_flag\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureFlag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_expires\",\"type\":\"uint256\"}],\"name\":\"InvalidStaticSignatureExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_expectedCaller\",\"type\":\"address\"}],\"name\":\"InvalidStaticSignatureWrongCaller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"LowWeightChainedSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"_snapshot\",\"type\":\"tuple\"}],\"name\":\"UnusedSnapshot\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nextCheckpoint\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_checkpoint\",\"type\":\"uint256\"}],\"name\":\"WrongChainedCheckpointOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"newImageHash\",\"type\":\"bytes32\"}],\"name\":\"ImageHashUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"ImplementationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"StaticSignatureSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"getStaticSignature\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"imageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverPartialSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValidImage\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_timestamp\",\"type\":\"uint96\"}],\"name\":\"setStaticSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_imageHash\",\"type\":\"bytes32\"}],\"name\":\"updateImageHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_implementation\",\"type\":\"address\"}],\"name\":\"updateImplementation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"getImplementation()\":{\"returns\":{\"_0\":\"implementation The implementation\"}},\"getStaticSignature(bytes32)\":{\"params\":{\"_hash\":\"The hash to get the static signature for\"},\"returns\":{\"_0\":\"address The address associated with the static signature\",\"_1\":\"timestamp The timestamp of the static signature\"}},\"imageHash()\":{\"returns\":{\"_0\":\"imageHash The image hash\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"_0\":\"Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature to recover\"},\"returns\":{\"checkpoint\":\"The checkpoint identifier\",\"imageHash\":\"The derived image hash\",\"isValidImage\":\"Whether the image hash is valid\",\"opHash\":\"The hash of the payload\",\"threshold\":\"The signature threshold\",\"weight\":\"The derived weight\"}},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"payload\":\"The payload to recover the signature from\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"_0\":\"The recovered image hash\"}},\"setStaticSignature(bytes32,address,uint96)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_address\":\"The address to associate with the static signature\",\"_hash\":\"The hash to set the static signature for\",\"_timestamp\":\"The timestamp of the static signature\"}},\"updateImageHash(bytes32)\":{\"details\":\"Only callable by the wallet itself\",\"params\":{\"_imageHash\":\"The new image hash\"}},\"updateImplementation(address)\":{\"details\":\"Callable only by the contract itself\",\"params\":{\"_implementation\":\"The new implementation\"}}},\"stateVariables\":{\"IMAGE_HASH_KEY\":{\"details\":\"keccak256(\\\"org.arcadeum.module.auth.upgradable.image.hash\\\")\"}},\"title\":\"Stage2Auth\",\"version\":1},\"userdoc\":{\"errors\":{\"ChainedSignatureNestedInChainedSignature()\":[{\"notice\":\"Error thrown when a chained signature is nested inside another chained signature\"}],\"ImageHashIsZero()\":[{\"notice\":\"Error thrown when the image hash is zero\"}],\"InvalidERC1271Signature(bytes32,address,bytes)\":[{\"notice\":\"Error thrown when the ERC1271 signature is invalid\"}],\"InvalidKind(uint8)\":[{\"notice\":\"Error thrown when the kind is invalid\"}],\"InvalidSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":[{\"notice\":\"Error thrown when the sapient signature is invalid\"}],\"InvalidSignatureFlag(uint256)\":[{\"notice\":\"Error thrown when the signature flag is invalid\"}],\"InvalidSignatureWeight(uint256,uint256)\":[{\"notice\":\"Error thrown when the signature weight is invalid\"}],\"InvalidStaticSignatureExpired(bytes32,uint256)\":[{\"notice\":\"Error thrown when the static signature has expired\"}],\"InvalidStaticSignatureWrongCaller(bytes32,address,address)\":[{\"notice\":\"Error thrown when the static signature has the wrong caller\"}],\"LowWeightChainedSignature(bytes,uint256,uint256)\":[{\"notice\":\"Error thrown when the weight is too low for a chained signature\"}],\"OnlySelf(address)\":[{\"notice\":\"Error thrown when the caller is not the same as the contract\"}],\"UnusedSnapshot((bytes32,uint256))\":[{\"notice\":\"Error thrown when the snapshot is unused\"}],\"WrongChainedCheckpointOrder(uint256,uint256)\":[{\"notice\":\"Error thrown when the checkpoint order is wrong\"}]},\"events\":{\"ImageHashUpdated(bytes32)\":{\"notice\":\"Emitted when the image hash is updated\"},\"ImplementationUpdated(address)\":{\"notice\":\"Emitted when the implementation is updated\"},\"StaticSignatureSet(bytes32,address,uint96)\":{\"notice\":\"Event emitted when a static signature is set\"}},\"kind\":\"user\",\"methods\":{\"getImplementation()\":{\"notice\":\"Get the implementation\"},\"getStaticSignature(bytes32)\":{\"notice\":\"Get the static signature for a specific hash\"},\"imageHash()\":{\"notice\":\"Get the image hash\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"},\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recover the partial signature\"},\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recovers the image hash of a given signature\"},\"setStaticSignature(bytes32,address,uint96)\":{\"notice\":\"Set the static signature for a specific hash\"},\"updateImageHash(bytes32)\":{\"notice\":\"Update the image hash\"},\"updateImplementation(address)\":{\"notice\":\"Update the implementation\"}},\"notice\":\"Stage 2 auth contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/auth/Stage2Auth.sol\":\"Stage2Auth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Implementation.sol\":{\"keccak256\":\"0x16546d4be07865808890308750916b0a9a55e7a994a458c01edde4618f29b4e6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1b1f9785b08c9f29d6849ba2d3dee89fa3ea5f3c2feec4a59a6d1040e3fbe040\",\"dweb:/ipfs/QmU2Pm5C3Ztky7RQdCZggavyq7Eh1eS1HFqVz9jZKiMUML\"]},\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/Storage.sol\":{\"keccak256\":\"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da\",\"dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn\"]},\"src/modules/auth/BaseAuth.sol\":{\"keccak256\":\"0x1aea32726fe1e8c204805a01fde5a7c832caa76960bf57bbaa2cf13e6804b9dc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://851b09d56bfc9b2f2025f1351ca2a4ae5e9c82e8fb26e58216cff849fc9f8320\",\"dweb:/ipfs/QmeHcagSWRPXR1ac1jEChoYTDzfhLyvfGKAgfu4nc3uctc\"]},\"src/modules/auth/BaseSig.sol\":{\"keccak256\":\"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46\",\"dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ\"]},\"src/modules/auth/SelfAuth.sol\":{\"keccak256\":\"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42\",\"dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W\"]},\"src/modules/auth/Stage2Auth.sol\":{\"keccak256\":\"0x1379c28123f916c31becaa5830844d4fe22bb714909d19192f3608c636545d9b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e21c5628ab474d6cc8a2967da2efb08c848cf2ccb56999ee1372d56d8d24dd7c\",\"dweb:/ipfs/QmYEC9i4Bbq5p3pK7q8QniNNURLh9du5iXWU613enRM7tf\"]},\"src/modules/interfaces/IAuth.sol\":{\"keccak256\":\"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353\",\"dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp\"]},\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]},\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]},\"src/modules/interfaces/IPartialAuth.sol\":{\"keccak256\":\"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519\",\"dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]},\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"608080604052346015576127d1908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8063025b22bc146100a757806313792a4a146100a25780631626ba7e1461009d578063295614261461009857806351605d801461009357806392dcb3fc1461008e578063aaf10f4214610089578063ad55366b146100845763f727ef1c1461007f57600080fd5b6109c3565b610977565b610926565b6108c8565b61086d565b6107b4565b61072c565b61062f565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610153576100d9610158565b303303610125578073ffffffffffffffffffffffffffffffffffffffff913055166080527f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0360206080a1005b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361015357565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361015357565b359073ffffffffffffffffffffffffffffffffffffffff8216820361015357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761020a57604052565b6101bf565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761020a57604052565b6040519061025f60e08361020f565b565b6040519061025f6101208361020f565b359060ff8216820361015357565b3590811515820361015357565b67ffffffffffffffff811161020a5760051b60200190565b92919267ffffffffffffffff821161020a57604051916102ec60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461020f565b829481845281830111610153578281602093846000960137010152565b9080601f8301121561015357816020610324933591016102a4565b90565b81601f820112156101535780359061033e8261028c565b9261034c604051948561020f565b82845260208085019360051b830101918183116101535760208101935b83851061037857505050505090565b843567ffffffffffffffff811161015357820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08286030112610153576103bf610250565b916103cc6020830161019e565b83526040820135602084015260608201359267ffffffffffffffff84116101535760e083610401886020809881980101610309565b60408401526080810135606084015261041c60a0820161027f565b608084015261042d60c0820161027f565b60a0840152013560c0820152815201940193610369565b9080601f8301121561015357813561045b8161028c565b92610469604051948561020f565b81845260208085019260051b82010192831161015357602001905b8282106104915750505090565b6020809161049e8461019e565b815201910190610484565b9181601f840112156101535782359167ffffffffffffffff8311610153576020838186019501011161015357565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101535760043567ffffffffffffffff8111610153576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261015357610549610261565b9061055681600401610271565b82526105646024820161027f565b6020830152604481013567ffffffffffffffff81116101535784600461058c92840101610327565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff8111610153578460046105c892840101610309565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116101535760048591610605930101610444565b610100820152916024359067ffffffffffffffff82116101535761062b916004016104a9565b9091565b346101535761063d366104d7565b9091610100810192610658610653855151610b33565b610b53565b9160005b855180518210156106bf57906106b961069461067a83600195610bd1565b5173ffffffffffffffffffffffffffffffffffffffff1690565b61069e8388610bd1565b9073ffffffffffffffffffffffffffffffffffffffff169052565b0161065c565b50508383866106d43361069e83515185610bd1565b526106e0818484610ee4565b50156106f25760405160018152602090f35b610728906040519384937ff58cc8b500000000000000000000000000000000000000000000000000000000855260048501610da8565b0390fd5b346101535760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101535760043560243567ffffffffffffffff81116101535760209161078461078a9236906004016104a9565b91610e8f565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346101535760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015357600435303303610125578015610843576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a1005b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b346101535760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101535760207fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf854604051908152f35b346101535760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101535760406109046004356110f4565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346101535760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610153576020305473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346101535760c061099360008061098d366104d7565b91611246565b9261099f8392936115ae565b906040519586526020860152151560408501526060840152608083015260a0820152f35b346101535760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610153576004356109fd61017b565b604435916bffffffffffffffffffffffff831680930361015357303303610125577febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b19273ffffffffffffffffffffffffffffffffffffffff60609360405160208101610ac482610a9888849190602060408401937fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810184528361020f565b847fffffffffffffffffffffffffffffffffffffffff00000000000000000000000084891b161791519020556040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9060018201809211610b4157565b610b04565b91908201809211610b4157565b90610b5d8261028c565b610b6a604051918261020f565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610b98829461028c565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051821015610be55760209160051b010190565b610ba2565b919082519283825260005b848110610c345750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201610bf5565b9080602083519182815201916020808360051b8301019401926000915b838310610c7557505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c080610ce8604085015160e0604086015260e0850190610bea565b936060810151606085015260808101511515608085015260a0810151151560a0850152015191015297019301930191939290610c66565b906020808351928381520192019060005b818110610d3d5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101610d30565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b91610e81610324949260408552610dc560408601825160ff169052565b602081015115156060860152610100610e3a610df2604084015161012060808a0152610160890190610c49565b606084015160a0890152608084015160c089015260a08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08983030160e08a0152610bea565b9160c08101518288015260e081015161012088015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086830301610140870152610d1f565b926020818503910152610d69565b90610eac9291610e9d611099565b906003825260e0820152610ee4565b5015610ed6577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b9015610be55790565b610f17610ef18484610edb565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f800000000000000000000000000000000000000000000000000000000000000080821614610f9a5750610f4f926000928392611246565b905091909192808210610f6a575050610f67906115ae565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f0200000000000000000000000000000000000000000000000000000000000000908116146020820152610fd0925090506115e3565b90610fda826110f4565b42811115611067575073ffffffffffffffffffffffffffffffffffffffff8116801515908161105c575b50611010575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b905033141538611004565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff82111761020a576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b604051611160816111346020820194859190602060408401937fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261020f565b51902054906bffffffffffffffffffffffff8260601c921690565b60405190611188826101ee565b60006020838281520152565b6003111561119e57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b90939293848311610153578411610153578101920390565b90816040910312610153576020604051916111ff836101ee565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff61032494931681528160208201520190610bea565b6040513d6000823e3d90fd5b909491939291853560f81c60019093819061125f61117b565b9261126982611194565b60018203611473575b50600180871614611412575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019080969181966020166112e19060051c90565b6112ea90610b33565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a81611336846115e3565b988993611342936111cd565b9161134c936118df565b909861136091600052602052604060002090565b9061137391600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff1661139c91600052602052604060002090565b94815190868215159283611407575b5050816113f8575b506113bb5750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b905060208201511015386113b3565b1415915086386113ab565b90969193945061142481989398611194565b6114495761143e9581611436936111cd565b93909261166f565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06040881601611272578981013560601c9750601401915087878a846114bc85611194565b600285036114cd575b505050611272565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c9260409261155292909161151d91611516918a906115108983610b46565b926111cd565b36916102a4565b83519586809481937fccce3bc8000000000000000000000000000000000000000000000000000000008352306004840161120d565b0392165afa80156115a9576115709260009161157a575b5093610b46565b9087388a816114c5565b61159c915060403d6040116115a2575b611594818361020f565b8101906111e5565b38611569565b503d61158a565b61123a565b80151590816115bb575090565b90507fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8541490565b6111346116456116036115fd60208501511515309061215b565b93612256565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b51902090565b906116659060409396959496606084526060840191610d69565b9460208201520152565b919492909260009560009560009560009560009561168b611099565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b8281106116e2575050505050505080511515806116d4575b6113bb5750565b5060208101518411156116cd565b600381019d50959b5093995091975092909190611706908b9085013560e81c610b46565b95828703611846578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c0361181757506117539161174c898c9387896111cd565b908b611246565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106117d15750928b8851146117c8575b808b101561179657508a60c085015289929592959491949390936116b5565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b60008852611777565b8d8f6107286117e285858c8e6111cd565b9390926040519485947fb006aba00000000000000000000000000000000000000000000000000000000086526004860161164b565b979899809b9261182c8b61183394888a6111cd565b9086611246565b50929d919c909b929a9092918e8e611767565b8a600291611713565b9081602091031261015357517fffffffff00000000000000000000000000000000000000000000000000000000811681036101535790565b604090610324949281528160208201520191610d69565b73ffffffffffffffffffffffffffffffffffffffff610324959360609383521660208201528160408201520191610d69565b90816020910312610153575190565b9391909360009460009460005b8181106118fa575050505050565b8481013560f881901c9860019092019788979692909160fc1c9889156120f45750600189146120b45760028914611ee75760038914611eb85760048914611e375760068914611d915760058914611d435760078914611c7c5760088914611c265760098914611afd57600a891461199a577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b90919293949596975060038916978815611aec575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019081019081611a129187876111cd565b6040517f898bd92100000000000000000000000000000000000000000000000000000000815293918491611a4a918a60048501611887565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156115a957611a8d93600093611ab9575b5060ff909a168091019a6125c2565b908015611ab35790611aa791600052602052604060002090565b955b93929190936118ec565b50611aa7565b60ff919350611ade9060203d8111611ae5575b611ad6818361020f565b8101906118d0565b9290611a7e565b503d611acc565b8084013560f81c98506001016119af565b90919293949596975060038916978815611c15575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019081019081611b759187876111cd565b6040517f13792a4a00000000000000000000000000000000000000000000000000000000815293918491611bad918b60048501610da8565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156115a957611bef93600093611ab9575060ff909a168091019a6125c2565b908015611c0f5790611c0991600052602052604060002090565b95611aa9565b50611c09565b8084013560f81c9850600101611b12565b985060208701975094959394929391929091820135611c4486612569565b8114611c54575b611bef90612583565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850611c4b565b975090919293949597600f16968715611d31575b60206000611ca2611d0f9a9b86612431565b9c9092918a604051611ce5816111348a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156115a957611bef9060ff6000519a1680910199612474565b600189019883013560f81c9750611c90565b985060208701975094959394929391929091820135808514611d69575b611bef9061252a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850611d60565b989091929394959662ffffff9850611db9611db3600c8416603f9060021c1690565b60ff1690565b918215611e23575b6003168015611e12575b908190611df690611dee908781013560e81c906003019c168c01809c89896111cd565b90898b6118df565b911115611e09575b90611bef92916124df565b99820199611dfe565b50600281019084013560f01c611dcb565b8482013560f81c9250600190910190611dc1565b975097611e8d611e9a929394959697600f611ea293169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866111cd565b9086886118df565b90611c0992980198600052602052604060002090565b985096509394929391929091908082013590602001968015611c0f5790611c0991600052602052604060002090565b909192939495969750600389169788156120a3575b8084013560601c99611f5b9160140190611f1b9060021c600316611db3565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b90810190611fbf60208c611f7185858b8b6111cd565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501611887565b0392165afa9081156115a9577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091612075575b50160361203157509060ff611bef92991680910199612474565b6107286120428c93899389896111cd565b906040519485947fb2fed7ae0000000000000000000000000000000000000000000000000000000086526004860161189e565b612096915060203d811161209c575b61208e818361020f565b81019061184f565b38612017565b503d612084565b8381013560f81c9850600101611efc565b98600f919293949596979850169687156120e3575b6014810197611bef9160ff9091169084013560601c612474565b8281013560f81c97506001016120c9565b98509091929394959698600f16978815612146575b506020600061211c611d0f9a9b86612431565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c97506020612109565b1561220b576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261164560c08261020f565b4690612164565b805160209091019060005b81811061222a5750505090565b825173ffffffffffffffffffffffffffffffffffffffff1684526020938401939092019160010161221d565b61010081015160405161227181611134602082018095612212565b51902090612280815160ff1690565b60ff8116806122f95750509061164561229c6040840151612660565b9261113460806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b6001810361235757505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466938101938452908101919091526060810192909252906116458160808101611134565b600281036123ad57505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4602082019081529181019290925260608201929092526116458160808101611134565b600303612401575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466602082019081529181019290925260608201929092526116458160808101611134565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff8111610b415791565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b16603183015260458201526045815261164560658261020f565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a000000000000000085526038840152605883015260788201526078815261164560988261020f565b60405160208101917f53657175656e636520737461746963206469676573743a0a0000000000000000835260388201526038815261164560588261020f565b6111346116456116036115fd60006020860151151561215b565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a835260408201526040815261164560608261020f565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d8152611645608d8261020f565b805160209091019060005b81811061264a5750505090565b825184526020938401939092019160010161263d565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06126a66126908361028c565b9261269e604051948561020f565b80845261028c565b0136602083013760005b835181101561278257806126c660019286610bd1565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e0830152610100820152610100815261276e6101208261020f565b51902061277b8285610bd1565b52016126b0565b509091506040516116458161113460208201809561263256fea264697066735822122096f4614140340ef21141d00ca4913e7101aa2edb383438ea4b8516607d2f59d064736f6c634300081c0033","sourceMap":"291:1073:15:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"6080604052600436101561001257600080fd5b60003560e01c8063025b22bc146100a757806313792a4a146100a25780631626ba7e1461009d578063295614261461009857806351605d801461009357806392dcb3fc1461008e578063aaf10f4214610089578063ad55366b146100845763f727ef1c1461007f57600080fd5b6109c3565b610977565b610926565b6108c8565b61086d565b6107b4565b61072c565b61062f565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610153576100d9610158565b303303610125578073ffffffffffffffffffffffffffffffffffffffff913055166080527f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca0360206080a1005b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361015357565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361015357565b359073ffffffffffffffffffffffffffffffffffffffff8216820361015357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761020a57604052565b6101bf565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761020a57604052565b6040519061025f60e08361020f565b565b6040519061025f6101208361020f565b359060ff8216820361015357565b3590811515820361015357565b67ffffffffffffffff811161020a5760051b60200190565b92919267ffffffffffffffff821161020a57604051916102ec60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116018461020f565b829481845281830111610153578281602093846000960137010152565b9080601f8301121561015357816020610324933591016102a4565b90565b81601f820112156101535780359061033e8261028c565b9261034c604051948561020f565b82845260208085019360051b830101918183116101535760208101935b83851061037857505050505090565b843567ffffffffffffffff811161015357820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08286030112610153576103bf610250565b916103cc6020830161019e565b83526040820135602084015260608201359267ffffffffffffffff84116101535760e083610401886020809881980101610309565b60408401526080810135606084015261041c60a0820161027f565b608084015261042d60c0820161027f565b60a0840152013560c0820152815201940193610369565b9080601f8301121561015357813561045b8161028c565b92610469604051948561020f565b81845260208085019260051b82010192831161015357602001905b8282106104915750505090565b6020809161049e8461019e565b815201910190610484565b9181601f840112156101535782359167ffffffffffffffff8311610153576020838186019501011161015357565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101535760043567ffffffffffffffff8111610153576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828503011261015357610549610261565b9061055681600401610271565b82526105646024820161027f565b6020830152604481013567ffffffffffffffff81116101535784600461058c92840101610327565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff8111610153578460046105c892840101610309565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116101535760048591610605930101610444565b610100820152916024359067ffffffffffffffff82116101535761062b916004016104a9565b9091565b346101535761063d366104d7565b9091610100810192610658610653855151610b33565b610b53565b9160005b855180518210156106bf57906106b961069461067a83600195610bd1565b5173ffffffffffffffffffffffffffffffffffffffff1690565b61069e8388610bd1565b9073ffffffffffffffffffffffffffffffffffffffff169052565b0161065c565b50508383866106d43361069e83515185610bd1565b526106e0818484610ee4565b50156106f25760405160018152602090f35b610728906040519384937ff58cc8b500000000000000000000000000000000000000000000000000000000855260048501610da8565b0390fd5b346101535760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101535760043560243567ffffffffffffffff81116101535760209161078461078a9236906004016104a9565b91610e8f565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346101535760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261015357600435303303610125578015610843576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a1005b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b346101535760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101535760207fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf854604051908152f35b346101535760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101535760406109046004356110f4565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346101535760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610153576020305473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346101535760c061099360008061098d366104d7565b91611246565b9261099f8392936115ae565b906040519586526020860152151560408501526060840152608083015260a0820152f35b346101535760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610153576004356109fd61017b565b604435916bffffffffffffffffffffffff831680930361015357303303610125577febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b19273ffffffffffffffffffffffffffffffffffffffff60609360405160208101610ac482610a9888849190602060408401937fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810184528361020f565b847fffffffffffffffffffffffffffffffffffffffff00000000000000000000000084891b161791519020556040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9060018201809211610b4157565b610b04565b91908201809211610b4157565b90610b5d8261028c565b610b6a604051918261020f565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0610b98829461028c565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051821015610be55760209160051b010190565b610ba2565b919082519283825260005b848110610c345750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b80602080928401015182828601015201610bf5565b9080602083519182815201916020808360051b8301019401926000915b838310610c7557505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c080610ce8604085015160e0604086015260e0850190610bea565b936060810151606085015260808101511515608085015260a0810151151560a0850152015191015297019301930191939290610c66565b906020808351928381520192019060005b818110610d3d5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101610d30565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b91610e81610324949260408552610dc560408601825160ff169052565b602081015115156060860152610100610e3a610df2604084015161012060808a0152610160890190610c49565b606084015160a0890152608084015160c089015260a08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08983030160e08a0152610bea565b9160c08101518288015260e081015161012088015201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086830301610140870152610d1f565b926020818503910152610d69565b90610eac9291610e9d611099565b906003825260e0820152610ee4565b5015610ed6577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b9015610be55790565b610f17610ef18484610edb565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f800000000000000000000000000000000000000000000000000000000000000080821614610f9a5750610f4f926000928392611246565b905091909192808210610f6a575050610f67906115ae565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f0200000000000000000000000000000000000000000000000000000000000000908116146020820152610fd0925090506115e3565b90610fda826110f4565b42811115611067575073ffffffffffffffffffffffffffffffffffffffff8116801515908161105c575b50611010575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b905033141538611004565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff82111761020a576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b604051611160816111346020820194859190602060408401937fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e8681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810183528261020f565b51902054906bffffffffffffffffffffffff8260601c921690565b60405190611188826101ee565b60006020838281520152565b6003111561119e57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b90939293848311610153578411610153578101920390565b90816040910312610153576020604051916111ff836101ee565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff61032494931681528160208201520190610bea565b6040513d6000823e3d90fd5b909491939291853560f81c60019093819061125f61117b565b9261126982611194565b60018203611473575b50600180871614611412575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019080969181966020166112e19060051c90565b6112ea90610b33565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a81611336846115e3565b988993611342936111cd565b9161134c936118df565b909861136091600052602052604060002090565b9061137391600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff1661139c91600052602052604060002090565b94815190868215159283611407575b5050816113f8575b506113bb5750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b905060208201511015386113b3565b1415915086386113ab565b90969193945061142481989398611194565b6114495761143e9581611436936111cd565b93909261166f565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06040881601611272578981013560601c9750601401915087878a846114bc85611194565b600285036114cd575b505050611272565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c9260409261155292909161151d91611516918a906115108983610b46565b926111cd565b36916102a4565b83519586809481937fccce3bc8000000000000000000000000000000000000000000000000000000008352306004840161120d565b0392165afa80156115a9576115709260009161157a575b5093610b46565b9087388a816114c5565b61159c915060403d6040116115a2575b611594818361020f565b8101906111e5565b38611569565b503d61158a565b61123a565b80151590816115bb575090565b90507fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8541490565b6111346116456116036115fd60208501511515309061215b565b93612256565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b51902090565b906116659060409396959496606084526060840191610d69565b9460208201520152565b919492909260009560009560009560009560009561168b611099565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b8281106116e2575050505050505080511515806116d4575b6113bb5750565b5060208101518411156116cd565b600381019d50959b5093995091975092909190611706908b9085013560e81c610b46565b95828703611846578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c0361181757506117539161174c898c9387896111cd565b908b611246565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106117d15750928b8851146117c8575b808b101561179657508a60c085015289929592959491949390936116b5565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b60008852611777565b8d8f6107286117e285858c8e6111cd565b9390926040519485947fb006aba00000000000000000000000000000000000000000000000000000000086526004860161164b565b979899809b9261182c8b61183394888a6111cd565b9086611246565b50929d919c909b929a9092918e8e611767565b8a600291611713565b9081602091031261015357517fffffffff00000000000000000000000000000000000000000000000000000000811681036101535790565b604090610324949281528160208201520191610d69565b73ffffffffffffffffffffffffffffffffffffffff610324959360609383521660208201528160408201520191610d69565b90816020910312610153575190565b9391909360009460009460005b8181106118fa575050505050565b8481013560f881901c9860019092019788979692909160fc1c9889156120f45750600189146120b45760028914611ee75760038914611eb85760048914611e375760068914611d915760058914611d435760078914611c7c5760088914611c265760098914611afd57600a891461199a577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b90919293949596975060038916978815611aec575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019081019081611a129187876111cd565b6040517f898bd92100000000000000000000000000000000000000000000000000000000815293918491611a4a918a60048501611887565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156115a957611a8d93600093611ab9575b5060ff909a168091019a6125c2565b908015611ab35790611aa791600052602052604060002090565b955b93929190936118ec565b50611aa7565b60ff919350611ade9060203d8111611ae5575b611ad6818361020f565b8101906118d0565b9290611a7e565b503d611acc565b8084013560f81c98506001016119af565b90919293949596975060038916978815611c15575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011691019081019081611b759187876111cd565b6040517f13792a4a00000000000000000000000000000000000000000000000000000000815293918491611bad918b60048501610da8565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156115a957611bef93600093611ab9575060ff909a168091019a6125c2565b908015611c0f5790611c0991600052602052604060002090565b95611aa9565b50611c09565b8084013560f81c9850600101611b12565b985060208701975094959394929391929091820135611c4486612569565b8114611c54575b611bef90612583565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850611c4b565b975090919293949597600f16968715611d31575b60206000611ca2611d0f9a9b86612431565b9c9092918a604051611ce5816111348a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156115a957611bef9060ff6000519a1680910199612474565b600189019883013560f81c9750611c90565b985060208701975094959394929391929091820135808514611d69575b611bef9061252a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9850611d60565b989091929394959662ffffff9850611db9611db3600c8416603f9060021c1690565b60ff1690565b918215611e23575b6003168015611e12575b908190611df690611dee908781013560e81c906003019c168c01809c89896111cd565b90898b6118df565b911115611e09575b90611bef92916124df565b99820199611dfe565b50600281019084013560f01c611dcb565b8482013560f81c9250600190910190611dc1565b975097611e8d611e9a929394959697600f611ea293169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866111cd565b9086886118df565b90611c0992980198600052602052604060002090565b985096509394929391929091908082013590602001968015611c0f5790611c0991600052602052604060002090565b909192939495969750600389169788156120a3575b8084013560601c99611f5b9160140190611f1b9060021c600316611db3565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b90810190611fbf60208c611f7185858b8b6111cd565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501611887565b0392165afa9081156115a9577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091612075575b50160361203157509060ff611bef92991680910199612474565b6107286120428c93899389896111cd565b906040519485947fb2fed7ae0000000000000000000000000000000000000000000000000000000086526004860161189e565b612096915060203d811161209c575b61208e818361020f565b81019061184f565b38612017565b503d612084565b8381013560f81c9850600101611efc565b98600f919293949596979850169687156120e3575b6014810197611bef9160ff9091169084013560601c612474565b8281013560f81c97506001016120c9565b98509091929394959698600f16978815612146575b506020600061211c611d0f9a9b86612431565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c97506020612109565b1561220b576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261164560c08261020f565b4690612164565b805160209091019060005b81811061222a5750505090565b825173ffffffffffffffffffffffffffffffffffffffff1684526020938401939092019160010161221d565b61010081015160405161227181611134602082018095612212565b51902090612280815160ff1690565b60ff8116806122f95750509061164561229c6040840151612660565b9261113460806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b6001810361235757505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466938101938452908101919091526060810192909252906116458160808101611134565b600281036123ad57505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4602082019081529181019290925260608201929092526116458160808101611134565b600303612401575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466602082019081529181019290925260608201929092526116458160808101611134565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff8111610b415791565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b16603183015260458201526045815261164560658261020f565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a000000000000000085526038840152605883015260788201526078815261164560988261020f565b60405160208101917f53657175656e636520737461746963206469676573743a0a0000000000000000835260388201526038815261164560588261020f565b6111346116456116036115fd60006020860151151561215b565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a835260408201526040815261164560608261020f565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d8152611645608d8261020f565b805160209091019060005b81811061264a5750505090565b825184526020938401939092019160010161263d565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06126a66126908361028c565b9261269e604051948561020f565b80845261028c565b0136602083013760005b835181101561278257806126c660019286610bd1565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e0830152610100820152610100815261276e6101208261020f565b51902061277b8285610bd1565b52016126b0565b509091506040516116458161113460208201809561263256fea264697066735822122096f4614140340ef21141d00ca4913e7101aa2edb383438ea4b8516607d2f59d064736f6c634300081c0033","sourceMap":"291:1073:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;401:4:13;379:10;:27;375:75;;401:4;291:1073:15;401:4:13;;1125:46:6;291:1073:15;;;1013:38:6;291:1073:15;;1013:38:6;291:1073:15;375:75:13;423:20;291:1073:15;423:20:13;379:10;291:1073:15;;;;423:20:13;291:1073:15;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;291:1073:15;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;4802:22:11;;;;;;4788:48;4802:33;:22;;291:1073:15;4802:33:11;:::i;:::-;4788:48;:::i;:::-;4848:13;-1:-1:-1;4898:3:11;4867:22;;291:1073:15;;4863:33:11;;;;;4930:25;4911:44;4930:25;;;4834:1;4930:25;;:::i;:::-;291:1073:15;;;;;4930:25:11;4911:44;;;;:::i;:::-;291:1073:15;;;;;;4911:44:11;291:1073:15;4848:13:11;;4863:33;;;;;;4968:57;5015:10;4968:57;4982:22;;291:1073:15;4968:57:11;;:::i;:::-;5031:38;5094:41;;;;;:::i;:::-;5145:8;;5141:81;;291:1073:15;;4834:1:11;291:1073:15;;;;;5141:81:11;5170:45;291:1073:15;;;5170:45:11;;;;;;291:1073:15;5170:45:11;;;:::i;:::-;;;;291:1073:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;401:4:13;379:10;:27;375:75;;1199:24:15;;1195:69;;291:1073;260:41:10;1328:28:15;260:41:10;466:66:15;260:41:10;291:1073:15;;;;;1328:28;291:1073;1195:69;1240:17;-1:-1:-1;1240:17:15;291:1073;-1:-1:-1;1240:17:15;291:1073;;;;;;;;;;;;466:66;394:41:10;291:1073:15;;;;;;;;;;;;;;;;;;2500:26:11;291:1073:15;;2500:26:11;:::i;:::-;291:1073:15;;;;;;;;;;;;;;;;;;;;;;;;1252:47:6;;291:1073:15;;;;;;;;;;;;;6003:78:11;-1:-1:-1;291:1073:15;;;;:::i;:::-;6003:78:11;;:::i;:::-;6102:24;;;;;;:::i;:::-;291:1073:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;401:4:13;379:10;:27;375:75;;2998:47:11;291:1073:15;;;;;;;552:25:10;;;;;;;291:1073:15;;;;;;;834:66:11;291:1073:15;;;;;552:25:10;;;;;;;;;:::i;:::-;291:1073:15;;;;;;2051:76:11;291:1073:15;;542:36:10;;584:40;291:1073:15;;;;;;;;;;;;;;2998:47:11;291:1073:15;;;;;;;;;;;;;4834:1:11;291:1073:15;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;291:1073:15;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;291:1073:15;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;291:1073:15;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;5290:320:11:-;;5476:40;5290:320;;291:1073:15;;:::i;:::-;2644:4:8;;;;4882:15;;;2644:4;5476:40:11;:::i;:::-;5526:8;;5522:45;;291:1073:15;5290:320:11;:::o;5522:45::-;291:1073:15;5544:16:11;:::o;291:1073:15:-;;;;;;:::o;3301:1229:11:-;3555:13;;;;;:::i;:::-;;291:1073:15;;;;3555:13:11;291:1073:15;3579:20:11;;;:28;3575:521;;4286:78;;;3566:1;4286:78;;;;:::i;:::-;4238:126;;;;;4402:18;;;;4398:87;;4501:24;;;;;:::i;:::-;3301:1229;:::o;4398:87::-;4437:41;3566:1;4437:41;3864:48;291:1073:15;;;;3566:1:11;4437:41;3575:521;291:1073:15;3673:20:11;;;:28;3652:18;;;291:1073:15;3718:15:11;;-1:-1:-1;3673:20:11;-1:-1:-1;3718:15:11;:::i;:::-;3778:27;;;;:::i;:::-;3830:15;3817:28;;;3813:108;;291:1073:15;;;;3933:18:11;;;:40;;;;3575:521;3929:131;;;4068:21;4076:4;4068:21;;:::o;3929:131::-;3992:59;3566:1;3992:59;;291:1073:15;;;4034:10:11;291:1073:15;;;;;;;3566:1:11;4437:41;3933:40;3963:10;;;3955:18;;3933:40;;;3813:108;3864:48;3566:1;3864:48;;291:1073:15;;;;;;3566:1:11;4437:41;291:1073:15;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;291:1073:15;;-1:-1:-1;291:1073:15;;;;;;;;;-1:-1:-1;291:1073:15;;;;-1:-1:-1;291:1073:15;;;;;;;;;-1:-1:-1;291:1073:15;;;;-1:-1:-1;291:1073:15;;;;;;:::o;1637:245:11:-;291:1073:15;;753:25:10;;;;;;;;291:1073:15;;;;;;;834:66:11;291:1073:15;;;;;753:25:10;;;;;;;;;:::i;:::-;291:1073:15;743:36:10;;785:40;826:75:11;291:1073:15;826:75:11;1849:2;826:75;291:1073:15;;1637:245:11;:::o;291:1073:15:-;;;;;;;:::i;:::-;-1:-1:-1;291:1073:15;;;;;;;:::o;:::-;;-1:-1:-1;291:1073:15;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3199:3386:12;;;;;;;566:109:28;;;;;3504:69:12;;;3999:24;291:1073:15;;:::i;:::-;;;;;:::i;:::-;4216:35:12;4200:51;;4196:870;;3199:3386;5139:20;4216:35;5139:20;;;:28;5135:242;;-1:-1:-1;5485:4:12;5469:20;;;:28;5448:18;;;291:1073:15;826:75:11;291:1073:15;826:75:11;;;;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;5639:67:12;;;;;5811:20;5448:18;5811:20;5810:27;;291:1073:15;826:75:11;;;5810:27:12;5809:33;;;:::i;:::-;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;5850:65:12;;;;5961:15;;;;;:::i;:::-;6036:19;;;;;;:::i;:::-;6004:52;;;;:::i;:::-;5982:74;6075:50;;;545:85:29;;;;;;;461:173;;6075:50:12;6143:51;;;545:85:29;;;;;;;461:173;;6143:51:12;291:1073:15;;;6212:72:12;;545:85:29;;;;;;;461:173;;6212:72:12;291:1073:15;;;6429:32:12;;;;;:67;;;;3199:3386;6429:104;;;;;3199:3386;6425:156;;;3199:3386;:::o;6425:156::-;291:1073:15;;6550:24:12;;;291:1073:15;;6550:24:12;;;291:1073:15;;;;;;;;;;;;5170:45:11;6429:104:12;6514:19;;5448:18;6514:19;;291:1073:15;-1:-1:-1;6500:33:12;6429:104;;;:67;6465:31;;;-1:-1:-1;6429:67:12;;;;5135:242;291:1073:15;;;;;;;;;;;;:::i;:::-;5177:109:12;;5300:70;5350:19;;;;;:::i;:::-;5300:70;;;;:::i;:::-;5293:77;;;;;;;;;:::o;5177:109::-;5235:42;-1:-1:-1;5235:42:12;;-1:-1:-1;5235:42:12;4196:870;-1:-1:-1;;;4401:28:12;4417:4;4401:20;;:28;4196:870;4397:663;3281:184:28;;;;;;;-1:-1:-1;3281:184:28;;;-1:-1:-1;4441:56:12;3281:184:28;;;291:1073:15;3162:307:28;291:1073:15;:::i;:::-;4528:28:12;4512:44;;4508:544;;4397:663;;;;4196:870;;4508:544;1318:135:28;;;;-1:-1:-1;1201:256:28;;-1:-1:-1;291:1073:15;;1318:135:28;;;;;;4417:4:12;;4925:73;;4417:4;;291:1073:15;;4820:48:12;;1318:135:28;;4838:29:12;1318:135:28;;4838:29:12;:::i;:::-;4820:48;;:::i;:::-;291:1073:15;;;:::i;:::-;;;4925:73:12;;;;;;291:1073:15;4925:73:12;;4974:4;4925:73;;;;:::i;:::-;;291:1073:15;;4925:73:12;;;;;;5011:30;4925:73;-1:-1:-1;4925:73:12;;;4508:544;4914:84;5011:30;;:::i;:::-;4508:544;;;;;;;4925:73;;;;4417:4;4925:73;4417:4;4925:73;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;913:192:15:-;1023:24;;;:77;;;;1016:84;913:192;:::o;1023:77::-;394:41:10;;466:66:15;394:41:10;1051:49:15;913:192;:::o;9411:274:8:-;9631:48;;9590:18;9513:50;9529:18;;;291:1073:15;;;9557:4:8;9513:50;;:::i;:::-;9590:18;;:::i;:::-;291:1073:15;;9631:48:8;;;9529:18;9631:48;;;;291:1073:15;;;;;;;;;;;;;;;;;;9631:48:8;291:1073:15;9621:59:8;;9411:274;:::o;2570:4::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;291:1073:15;2570:4:8;291:1073:15;2570:4:8:o;6589:1730:12:-;;;;;;291:1073:15;6785:14:12;291:1073:15;6801:17:12;291:1073:15;6820:18:12;291:1073:15;6840:14:12;291:1073:15;;;;:::i;:::-;;2644:4:8;;6904:47:12;7003:17;;291:1073:15;7034:26:12;;;;;;291:1073:15;;;;;;;;;8195:33:12;;:71;;;7027:1158;8191:124;;6589:1730;:::o;8195:71::-;8246:20;;;;291:1073:15;8232:34:12;;;8195:71;;7027:1158;1318:135:28;;;;-1:-1:-1;1201:256:28;;-1:-1:-1;1201:256:28;;-1:-1:-1;1201:256:28;;-1:-1:-1;1201:256:28;;;;7198:16:12;;1318:135:28;;;;;;;7198:16:12;:::i;:::-;7265:97;:28;;;;;:97;7296:35;7265:97;;7003:17;7375:35;;7003:17;;7503:26;7485:73;7503:26;;;;;;;;:::i;:::-;7485:73;;;:::i;:::-;7422:136;;;;;;;;;;;;;;;;7371:355;;;;7738:18;7734:122;;7863:16;291:1073:15;;;;7892:32:12;7888:89;;7371:355;7989:28;;;;7985:115;;8108:23;;;;;2644:4:8;8151:27:12;7027:1158;;;;;;;;;;;;7985:115;8036:55;291:1073:15;8036:55:12;3864:48:11;291:1073:15;;;;;;3566:1:11;4437:41;7888:89:12;291:1073:15;2644:4:8;;7888:89:12;;7734:122;7801:26;;7775:72;7801:26;;;;;;:::i;:::-;291:1073:15;;;;;7775:72:12;;;;;;;;;;:::i;7371:355::-;7662:26;;;;;;;;7639:78;7662:26;;;;:::i;:::-;7639:78;;;:::i;:::-;-1:-1:-1;7583:134:12;;;;;;;;;;;;;7371:355;;7265:97;;2570:4:8;7265:97:12;;;842:1;;;;;;;;;;291:1073:15;;;842:1:12;;;;;:::o;:::-;;;;;;291:1073:15;;842:1:12;;;;;;;;:::i;:::-;291:1073:15;842:1:12;;;;;291:1073:15;;;842:1:12;;;291:1073:15;842:1:12;;;;;;;;:::i;1206:::-;;;;;;;;;291:1073:15;1206:1:12;:::o;8323:11084::-;;;;;291:1073:15;8478:12:12;291:1073:15;8516:14:12;291:1073:15;8592:26:12;;;;;;8323:11084;;;;;:::o;8585:10812::-;798:135:28;;;;;;;;;;;;;;;;683:254;;;;826:75:11;;9002:27:12;;;8998:864;;9922:20;786:1;9922:20;;9918:676;;842:1;10644:30;;10640:1383;;885:1;12060:17;;12056:279;;8953:1;12374:19;;12370:656;;1023:1;13065:19;;13061:1278;;978:1;14381:22;;14377:518;;1080:1;14946:31;;14942:933;;1150:1;16012:44;;16008:617;;1206:1;16675:30;;16671:1308;;1270:2;18037:38;;18033:1312;;19362:26;291:1073:15;19362:26:12;8953:1;291:1073:15;;;1270:2:12;3566:1:11;4437:41;18033:1312:12;18347:16;;;;;;;;;885:1;18347:16;;18380:15;;;18376:99;;18033:1312;3281:184:28;;;;;;;;;18629:16:12;;291:1073:15;826:75:11;;;291:1073:15;;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;740:1:12;;;19015:26;;;;;;;:::i;:::-;291:1073:15;;;18953:89:12;;291:1073:15;;;;18953:89:12;;291:1073:15;8953:1:12;18953:89;;;:::i;:::-;;291:1073:15;;;;18953:89:12;;;;;;;;;;;;19185:51;18953:89;291:1073:15;18953:89:12;;;18033:1312;19054:16;291:1073:15;19054:16:12;291:1073:15;;740:1:12;;;19185:51;;:::i;:::-;19255:59;:18;;;;19276:31;;;545:85:29;;;;;;;461:173;;19276:31:12;19326:8;8585:10812;;;;;;;;19255:59;;;;18953:89;291:1073:15;18953:89:12;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;18376:99;798:135:28;;;;;;;-1:-1:-1;798:135:28;;18376:99:12;;16671:1308;16977:16;;;;;;;;;885:1;16977:16;;17010:15;;;17006:99;;16671:1308;3281:184:28;;;;;;;;;17297:16:12;;291:1073:15;826:75:11;;;291:1073:15;;2363:226:28;;;;;;;;;;;;;;;;;;;;;;;;;740:1:12;;;17648:26;;;;;;;:::i;:::-;291:1073:15;;;17599:76:12;;291:1073:15;;;;17599:76:12;;291:1073:15;8953:1:12;17599:76;;;:::i;:::-;;291:1073:15;;;;17599:76:12;;;;;;;;;;;;17819:51;17599:76;291:1073:15;17599:76:12;;;17687:16;291:1073:15;17687:16:12;291:1073:15;;740:1:12;;;17819:51;;:::i;:::-;17889:59;:18;;;;17910:31;;;545:85:29;;;;;;;461:173;;17910:31:12;17960:8;;;17889:59;;;;17006:99;798:135:28;;;;;;;-1:-1:-1;798:135:28;;17006:99:12;;16008:617;2926:232:28;-1:-1:-1;3047:107:28;;;;-1:-1:-1;2926:232:28;;;;;;;;;;3047:107;;;16323:28:12;2926:232:28;16323:28:12;:::i;:::-;16367:29;;16363:88;;16008:617;16478:38;;;:::i;16363:88::-;16421:17;;-1:-1:-1;16363:88:12;;14942:933;15290:16;;;;;;;;;15302:4;15290:16;15323:15;;;15319:99;;14942:933;15592:61;291:1073:15;3511:494:28;15572:92:12;3511:494:28;;;;:::i;:::-;15491:53:12;;;;291:1073:15;;;15592:61:12;;;;;;;;1080:1;;;;;;;;291:1073:15;1080:1:12;;;15592:61;291:1073:15;15582:72:12;;291:1073:15;;;15572:92:12;;;;740:1;;;;291:1073:15;740:1:12;;;;;291:1073:15;;;;740:1:12;;;291:1073:15;740:1:12;;;291:1073:15;740:1:12;291:1073:15;740:1:12;15572:92;;;;;;786:1;15572:92;;;;;15724:42;15572:92;291:1073:15;;15572:92:12;291:1073:15;;740:1:12;;;15724:42;;:::i;15319:99::-;798:135:28;;;;;;;;;;-1:-1:-1;15319:99:12;;14377:518;2926:232:28;-1:-1:-1;3047:107:28;;;;-1:-1:-1;2926:232:28;;;;;;;;;;3047:107;;;14647:20:12;;;14643:79;;14377:518;14749:37;;;:::i;14643:79::-;14692:17;;-1:-1:-1;14643:79:12;;13061:1278;13430:16;;;;;;;;291:1073:15;13430:16:12;;13399:53;13424:28;13442:4;13430:16;;826:75:11;842:1:12;291:1073:15;826:75:11;;842:1:12;;13424:28;291:1073:15;;;;13399:53:12;13468:19;;;13464:107;;13061:1278;885:1;13617:16;13650:22;;13646:114;;13061:1278;1201:256:28;;;13947:60:12;;13980:26;;1318:135:28;;;;;;;;;291:1073:15;;740:1:12;;13980:26;;;;;:::i;:::-;13947:60;;;;:::i;:::-;14019:16;-1:-1:-1;14052:35:12;14048:92;;13061:1278;14167:63;;;;;:::i;14048:92::-;740:1;;;;14048:92;;13646:114;-1:-1:-1;1058:135:28;;;;;;;;;13646:114:12;;13464:107;798:135:28;;;;;;;-1:-1:-1;798:135:28;;;;;13464:107:12;;12370:656;12571:16;;;2213:380:28;12860:26:12;12571:16;;;;;;12583:4;12827:60;12571:16;;2213:380:28;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;740:1:12;;;;12860:26;;;;;:::i;:::-;12827:60;;;;:::i;:::-;;12964:31;12827:60;740:1;;12964:31;545:85:29;;;;;;;461:173;;12056:279:12;2926:232:28;-1:-1:-1;2926:232:28;-1:-1:-1;2926:232:28;;;;;;;;;3047:107;;;;;;;12245:59:12;:18;;;;12266:31;;;545:85:29;;;;;;;461:173;;10640:1383:12;10935:16;;;;;;;;;885:1;10935:16;;10968:15;;;10964:99;;10640:1383;3281:184:28;;;;;;;2213:380;;3281:184;;;11217:47:12;;291:1073:15;826:75:11;;;11236:28:12;842:1;11217:47;2213:380:28;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;740:1:12;;;11572:26;11531:68;;11572:26;;;;;;;:::i;:::-;291:1073:15;;;;;;11531:68:12;;;;;;;291:1073:15;11531:68:12;;8953:1;11531:68;;;:::i;:::-;;291:1073:15;;11531:68:12;;;;;;;291:1073:15;11531:68:12;291:1073:15;11531:68:12;291:1073:15;11531:68:12;;;10640:1383;291:1073:15;;11531:97:12;11527:203;;11741:16;;291:1073:15;11872:42:12;11741:16;291:1073:15;;740:1:12;;;11872:42;;:::i;11527:203::-;11651:66;11690:26;;;;;;;;:::i;:::-;291:1073:15;;;11651:66:12;;;;;;8953:1;11651:66;;;:::i;11531:68::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10964:99;798:135:28;;;;;;;-1:-1:-1;798:135:28;;10964:99:12;;9918:676;10115:16;10127:4;10115:16;;;;;;;;;;10148:15;;;10144:99;;9918:676;3281:184:28;;;;10443:42:12;;291:1073:15;;;;;3281:184:28;;;;;10443:42:12;:::i;10144:99::-;798:135:28;;;;;;;-1:-1:-1;798:135:28;;10144:99:12;;8998:864;9342:16;;;;;;;;;;9354:4;9342:16;9375:15;;;9371:99;;8998:864;3511:494:28;9624:27:12;291:1073:15;3511:494:28;9624:27:12;3511:494:28;;;;:::i;:::-;9543:53:12;;;291:1073:15;;9624:27:12;;;;;740:1;;;;291:1073:15;740:1:12;;;;;291:1073:15;;;;740:1:12;;;291:1073:15;740:1:12;;;291:1073:15;740:1:12;291:1073:15;740:1:12;9371:99;798:135:28;;;;-1:-1:-1;798:135:28;;;;;;-1:-1:-1;9624:27:12;9371:99;;1027:351:8;1294:48;;;-1:-1:-1;1294:48:8;;291:1073:15;;;1165:202:8;;;;291:1073:15;627:66:8;291:1073:15;;797:66:8;291:1073:15;956:66:8;;291:1073:15;956:66:8;;;;291:1073:15;956:66:8;;;291:1073:15;;956:66:8;;;291:1073:15;956:66:8;1165:202;;;;;;:::i;1294:48::-;1328:13;1294:48;;;291:1073:15;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;8435:972:8;8573:22;;;;291:1073:15;;8556:40:8;;291:1073:15;8556:40:8;;;291:1073:15;;;:::i;8556:40:8:-;291:1073:15;8546:51:8;;291:1073:15;;;;;;;;;;;;8608:34:8;291:1073:15;;8682:14:8;;;8722:82;8672:25;291:1073:15;8682:14:8;;;8672:25;:::i;:::-;8760:14;8722:82;8776:14;8760;;;291:1073:15;8776:14:8;;291:1073:15;;;;8722:82:8;;;8556:40;8722:82;;;;1887:66;;;;;;;;;291:1073:15;1887:66:8;291:1073:15;;1887:66:8;;;291:1073:15;1887:66:8;;;291:1073:15;1887:66:8;;;291:1073:15;1887:66:8;291:1073:15;1887:66:8;8604:799;2483:4;8822:29;;2483:4;;-1:-1:-1;;8917:16:8;;;291:1073:15;;8556:40:8;291:1073:15;;;8907:27:8;291:1073:15;;;2067:66:8;8878:70;;;291:1073:15;;;2067:66:8;;;291:1073:15;;;;2067:66:8;;;291:1073:15;;;;8878:70:8;;291:1073:15;2067:66:8;;;8878:70;2067:66;8818:585;2570:4;8966:35;;2570:4;;-1:-1:-1;;9063:18:8;;291:1073:15;;;;2262:66:8;8556:40;9028:67;;291:1073:15;;;2067:66:8;;;291:1073:15;;;;2067:66:8;;;291:1073:15;;;;9028:67:8;291:1073:15;2067:66:8;;;9028:67;2067:66;8962:441;2644:4;9113:28;2644:4;;-1:-1:-1;9290:15:8;;291:1073:15;;;;2067:66:8;8556:40;9261:58;;291:1073:15;;;2067:66:8;;;291:1073:15;;;;2067:66:8;;;291:1073:15;;;;9261:58:8;291:1073:15;2067:66:8;;;9261:58;2067:66;9109:294;9370:26;291:1073:15;9370:26:8;291:1073:15;;9370:26:8;291:1073:15;2483:4:8;3566:1:11;4437:41;3511:494:28;3690:173;;;;;;;;;;;;3998:2;3955:14;3931:39;;826:75:11;291:1073:15;826:75:11;291:1073:15;;;;;;3511:494:28;:::o;2183:181:12:-;;291:1073:15;;2304:54:12;291:1073:15;2304:54:12;;;291:1073:15;;;;;;;;;;;;;;;;2304:54:12;;;;;;:::i;2368:210::-;;291:1073:15;;2499:73:12;;;;291:1073:15;;;;;;;;;;;;;;;;;2499:73:12;;;;;;:::i;2798:182::-;291:1073:15;;2917:57:12;;;291:1073:15;;;;;;;;;2917:57:12;;;;;;:::i;9689:280:8:-;9915:48;;9874:18;9803:44;291:1073:15;9819:18:8;;;291:1073:15;;;9803:44:8;:::i;2984:211:12:-;291:1073:15;;3114:75:12;;;291:1073:15;;;;;;;;;3114:75:12;;;;;;:::i;2582:212::-;;291:1073:15;;2714:74:12;291:1073:15;2714:74:12;;;291:1073:15;;;;;;;;;;;;;;;;;;;;2714:74:12;;;;;;:::i;291:1073:15:-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;7977:454:8;;291:1073:15;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;-1:-1:-1;8321:3:8;291:1073:15;;8303:16:8;;;;;8359:8;;291:1073:15;8359:8:8;;;:::i;:::-;;291:1073:15;;;;7865:7:8;291:1073:15;7865:7:8;;291:1073:15;7884:6:8;291:1073:15;7884:6:8;;;291:1073:15;;;;;7874:17:8;7893:10;;;;291:1073:15;7905:14:8;;;291:1073:15;;;7921:14:8;7937:17;7921:14;;;291:1073:15;;;7937:17:8;;291:1073:15;;;;7824:138:8;291:1073:15;7824:138:8;;291:1073:15;1566:66:8;291:1073:15;;;1566:66:8;;291:1073:15;7893:10:8;1566:66;;291:1073:15;7905:14:8;1566:66;;291:1073:15;7921:14:8;1566:66;;291:1073:15;7937:17:8;1566:66;;291:1073:15;1566:66:8;;;291:1073:15;1566:66:8;;;291:1073:15;1566:66:8;7824:138;;;;;;:::i;:::-;291:1073:15;7807:161:8;;8334:34;;;;:::i;:::-;2644:4;291:1073:15;8288:13:8;;8303:16;;;;;291:1073:15;;8397:28:8;;291:1073:15;;8397:28:8;;291:1073:15;;;:::i","linkReferences":{}},"methodIdentifiers":{"getImplementation()":"aaf10f42","getStaticSignature(bytes32)":"92dcb3fc","imageHash()":"51605d80","isValidSignature(bytes32,bytes)":"1626ba7e","recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"ad55366b","recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"13792a4a","setStaticSignature(bytes32,address,uint96)":"f727ef1c","updateImageHash(bytes32)":"29561426","updateImplementation(address)":"025b22bc"}}}},"src/modules/interfaces/IAccount.sol":{"IAccount":{"abi":[{"type":"function","name":"validateUserOp","inputs":[{"name":"userOp","type":"tuple","internalType":"struct PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"missingAccountFunds","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"validationData","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"missingAccountFunds\",\"type\":\"uint256\"}],\"name\":\"validateUserOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"details\":\"Must validate caller is the entryPoint. Must validate the signature and nonce\",\"params\":{\"missingAccountFunds\":\"- Missing funds on the account's deposit in the entrypoint. This is the minimum amount to transfer to the sender(entryPoint) to be able to make the call. The excess is left as a deposit in the entrypoint for future calls. Can be withdrawn anytime using \\\"entryPoint.withdrawTo()\\\". In case there is a paymaster in the request (or the current deposit is high enough), this value will be zero.\",\"userOp\":\"- The operation that is about to be executed.\",\"userOpHash\":\"- Hash of the user's request data. can be used as the basis for signature.\"},\"returns\":{\"validationData\":\" - Packaged ValidationData structure. use `_packValidationData` and `_unpackValidationData` to encode and decode. <20-byte> aggregatorOrSigFail - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \\\"aggregator\\\" contract. <6-byte> validUntil - Last timestamp this operation is valid at, or 0 for \\\"indefinitely\\\" <6-byte> validAfter - First timestamp this operation is valid If an account doesn't use time-range, it is enough to return SIG_VALIDATION_FAILED value (1) for signature failure. Note that the validation code cannot use block.timestamp (or block.number) directly.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"notice\":\"Validate user's signature and nonce the entryPoint will make the call to the recipient only if this validation call returns successfully. signature failure should be reported by returning SIG_VALIDATION_FAILED (1). This allows making a \\\"simulation call\\\" without a valid signature Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IAccount.sol\":\"IAccount\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IAccount.sol\":{\"keccak256\":\"0x64ca3bb59ec4fc0a60d80402802365e2d5226afe7e7aabe3b21df936c84f2bcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ccfd2381e1874cdec2f473a9a17799a3b57360c0593d68ee66fcea9c16eb39b4\",\"dweb:/ipfs/QmcjbJpGz3Exmu4fsj953Y2bG8rtQaVMEFUgT6W2dUXomr\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)":"19822f7c"}}}},"src/modules/interfaces/IAuth.sol":{"IAuth":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen, William Hua\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IAuth\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Internal interface for the auth modules\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IAuth.sol\":\"IAuth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IAuth.sol\":{\"keccak256\":\"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353\",\"dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}}}}},"src/modules/interfaces/ICheckpointer.sol":{"ICheckpointer":{"abi":[{"type":"function","name":"snapshotFor","inputs":[{"name":"_wallet","type":"address","internalType":"address"},{"name":"_proof","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"snapshot","type":"tuple","internalType":"struct Snapshot","components":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"snapshotFor\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"}],\"internalType\":\"struct Snapshot\",\"name\":\"snapshot\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"snapshotFor(address,bytes)\":{\"params\":{\"_proof\":\"The proof\",\"_wallet\":\"The wallet address\"},\"returns\":{\"snapshot\":\"The snapshot\"}}},\"title\":\"ICheckpointer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"snapshotFor(address,bytes)\":{\"notice\":\"Get the snapshot for a specific wallet\"}},\"notice\":\"Interface for the checkpointer module\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/ICheckpointer.sol\":\"ICheckpointer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/ICheckpointer.sol\":{\"keccak256\":\"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15\",\"dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"snapshotFor(address,bytes)":"ccce3bc8"}}}},"src/modules/interfaces/IDelegatedExtension.sol":{"IDelegatedExtension":{"abi":[{"type":"function","name":"handleSequenceDelegateCall","inputs":[{"name":"_opHash","type":"bytes32","internalType":"bytes32"},{"name":"_startingGas","type":"uint256","internalType":"uint256"},{"name":"_index","type":"uint256","internalType":"uint256"},{"name":"_numCalls","type":"uint256","internalType":"uint256"},{"name":"_space","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_opHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_startingGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_numCalls\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_space\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"handleSequenceDelegateCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"handleSequenceDelegateCall(bytes32,uint256,uint256,uint256,uint256,bytes)\":{\"params\":{\"_data\":\"The data\",\"_index\":\"The index\",\"_numCalls\":\"The number of calls\",\"_opHash\":\"The operation hash\",\"_space\":\"The space\",\"_startingGas\":\"The starting gas\"}}},\"title\":\"IDelegatedExtension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"handleSequenceDelegateCall(bytes32,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Handle a sequence delegate call\"}},\"notice\":\"Interface for the delegated extension module\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IDelegatedExtension.sol\":\"IDelegatedExtension\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IDelegatedExtension.sol\":{\"keccak256\":\"0xa2ae897e90fd70dd4a9e172bc04d019ba9c512e72c2df65fcb6daf87dd5ceb90\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cdf4b7c3dfb0aef6c9dbe8b2a0542018dc756ef2252d7101bcb3186192da0a11\",\"dweb:/ipfs/QmPHCVu1DJ7fBrPBYA5y3hoF3a3XFEBwYCZ1ErGaxPhcYL\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"handleSequenceDelegateCall(bytes32,uint256,uint256,uint256,uint256,bytes)":"4c4e814c"}}}},"src/modules/interfaces/IERC1155Receiver.sol":{"IERC1155Receiver":{"abi":[{"type":"function","name":"onERC1155BatchReceived","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"ids","type":"uint256[]","internalType":"uint256[]"},{"name":"values","type":"uint256[]","internalType":"uint256[]"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC1155Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"ids\":\"The list of token IDs being transferred\",\"operator\":\"The address which initiated the transfer\",\"values\":\"The amounts of each token being transferred\"},\"returns\":{\"magicValue\":\"On a success, the selector of the function that was called\"}},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"operator\":\"The address which initiated the transfer\",\"tokenId\":\"The ID of the token being transferred\",\"value\":\"The amount of token being transferred\"},\"returns\":{\"magicValue\":\"On a success, the selector of the function that was called\"}}},\"title\":\"IERC1155Receiver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\":{\"notice\":\"Called when multiple ERC1155 tokens are transferred to this contract\"},\"onERC1155Received(address,address,uint256,uint256,bytes)\":{\"notice\":\"Called when a single ERC1155 token is transferred to this contract\"}},\"notice\":\"Interface for the ERC1155 receiver module\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IERC1155Receiver.sol\":\"IERC1155Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IERC1155Receiver.sol\":{\"keccak256\":\"0xa23d0bc29233a91085922ea8a7e2cbe8b5f3358d3f2c3cdc58adade9a171d9c1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2f06b8f3ae7a45441cc26da5b2ddd15ba76d1664178958f63f536e6c5e4fd0fb\",\"dweb:/ipfs/QmR1Rnk8ciSn5s5wNLGvpE1QNRDsBVDfDT1ZXhei2brmFj\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61"}}}},"src/modules/interfaces/IERC1271.sol":{"IERC1271":{"abi":[{"type":"function","name":"isValidSignature","inputs":[{"name":"_hash","type":"bytes32","internalType":"bytes32"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_hash\":\"keccak256 hash that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"magicValue\":\"Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\"}}},\"title\":\"IERC1271\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"}},\"notice\":\"Interface for ERC1271\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"}}},"IERC1271Data":{"abi":[{"type":"function","name":"isValidSignature","inputs":[{"name":"_data","type":"bytes","internalType":"bytes"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"details\":\"MUST return the correct magic value if the signature provided is valid for the provided hash > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\\\"isValidSignature(bytes,bytes)\\\") > This function MAY modify Ethereum's state\",\"params\":{\"_data\":\"Data that was signed\",\"_signature\":\"Signature byte array associated with _data\"},\"returns\":{\"magicValue\":\"Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\"}}},\"title\":\"IERC1271Data\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isValidSignature(bytes,bytes)\":{\"notice\":\"Verifies whether the provided signature is valid with respect to the provided hash\"}},\"notice\":\"Deprecated interface for ERC1271 using bytes instead of bytes32\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IERC1271.sol\":\"IERC1271Data\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IERC1271.sol\":{\"keccak256\":\"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b\",\"dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"isValidSignature(bytes,bytes)":"20c13b0b"}}}},"src/modules/interfaces/IERC223Receiver.sol":{"IERC223Receiver":{"abi":[{"type":"function","name":"tokenReceived","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"signature","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"tokenReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"signature\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"tokenReceived(address,uint256,bytes)\":{\"params\":{\"data\":\"Transaction metadata\",\"from\":\"The address which previously owned the tokens\",\"value\":\"The amount of tokens being transferred\"},\"returns\":{\"signature\":\"The signature of the function to be called\"}}},\"title\":\"IERC223Receiver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"tokenReceived(address,uint256,bytes)\":{\"notice\":\"Called when ERC223 tokens are received by this contract\"}},\"notice\":\"Interface for the ERC223 receiver module\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IERC223Receiver.sol\":\"IERC223Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IERC223Receiver.sol\":{\"keccak256\":\"0x426221c0d48b651ed692edfa5388d6e5304e94f48598a71748134b2659e3890d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9e1ed2fd5e390b5b943dc07c2e0ea9e524eb37263dc72c482365c159fc3659e5\",\"dweb:/ipfs/QmWRDBvb1cthVPm4BSzKX3J5GpGGSBuDokkpRK9x5aA7JR\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"tokenReceived(address,uint256,bytes)":"8943ec02"}}}},"src/modules/interfaces/IERC721Receiver.sol":{"IERC721Receiver":{"abi":[{"type":"function","name":"onERC721Received","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"params\":{\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the token\",\"operator\":\"The address which initiated the transfer\",\"tokenId\":\"The ID of the token being transferred\"},\"returns\":{\"magicValue\":\"On a success, the selector of the function that was called\"}}},\"title\":\"IERC721Receiver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Called when a single ERC721 token is transferred to this contract\"}},\"notice\":\"Interface for the ERC721 receiver module\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IERC721Receiver.sol\":{\"keccak256\":\"0xbe14c3b727f283a467dc2f2221d3322c5a69cd64a3aacad85acab05e94438f35\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://43ef086c509b8b88cae78f67c4bd979fd427736972cfe56f7423371ccc154e63\",\"dweb:/ipfs/Qmc7Yp7Z1dQ925gzEZYVNUXnWr3YomvWkXfaGYLZpoy8J3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}}}},"src/modules/interfaces/IERC777Receiver.sol":{"IERC777Receiver":{"abi":[{"type":"function","name":"tokensReceived","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operatorData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"tokensReceived\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"tokensReceived(address,address,address,uint256,bytes,bytes)\":{\"params\":{\"amount\":\"The amount of tokens being transferred\",\"data\":\"Additional data with no specified format\",\"from\":\"The address which previously owned the tokens\",\"operator\":\"The address which initiated the transfer\",\"operatorData\":\"Additional data with no specified format\",\"to\":\"The address which is receiving the tokens\"}}},\"title\":\"IERC777Receiver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"tokensReceived(address,address,address,uint256,bytes,bytes)\":{\"notice\":\"Called when tokens are received by this contract\"}},\"notice\":\"Interface for the ERC777 receiver module\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IERC777Receiver.sol\":\"IERC777Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IERC777Receiver.sol\":{\"keccak256\":\"0xd9144d439a96b0c6439cd9a186701aa530f4f782ff09fdbf6c3ef16b78b0d4e5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d1f17484eda7184db4a00106b4952f15c1517872cbfe19663d6fce4e042729b2\",\"dweb:/ipfs/QmWdhYmLNkUpgvPpSyGHstxrFwMfhRTVmxDpe4frkUu1Qh\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"tokensReceived(address,address,address,uint256,bytes,bytes)":"0023de29"}}}},"src/modules/interfaces/IEntryPoint.sol":{"IEntryPoint":{"abi":[{"type":"function","name":"depositTo","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"depositTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IEntryPoint.sol\":\"IEntryPoint\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0xd19922ea7a8ae09072a721138dc93e175fa77ecaa3ac6f2d759d5e5e944fb665\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20ecea69ddd4d8787c0bdc4487dea03e90f63f4296674a12728e331a78e62620\",\"dweb:/ipfs/QmZUrX8zEqfHZEJQjNtDUXGS47bj2UuRCLfbkLPrXsot1c\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"depositTo(address)":"b760faf9"}}}},"src/modules/interfaces/IPartialAuth.sol":{"IPartialAuth":{"abi":[{"type":"function","name":"recoverPartialSignature","inputs":[{"name":"_payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"threshold","type":"uint256","internalType":"uint256"},{"name":"weight","type":"uint256","internalType":"uint256"},{"name":"isValidImage","type":"bool","internalType":"bool"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"checkpoint","type":"uint256","internalType":"uint256"},{"name":"opHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"_payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverPartialSignature\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValidImage\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"checkpoint\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"opHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"_payload\":\"The payload\",\"_signature\":\"The signature to recover\"},\"returns\":{\"checkpoint\":\"The checkpoint identifier\",\"imageHash\":\"The derived image hash\",\"isValidImage\":\"Whether the image hash is valid\",\"opHash\":\"The hash of the payload\",\"threshold\":\"The signature threshold\",\"weight\":\"The derived weight\"}}},\"title\":\"IPartialAuth\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recover the partial signature\"}},\"notice\":\"Interface for the partial auth module\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/IPartialAuth.sol\":\"IPartialAuth\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/interfaces/IPartialAuth.sol\":{\"keccak256\":\"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519\",\"dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"ad55366b"}}}},"src/modules/interfaces/ISapient.sol":{"ISapient":{"abi":[{"type":"function","name":"recoverSapientSignature","inputs":[{"name":"payload","type":"tuple","internalType":"struct Payload.Decoded","components":[{"name":"kind","type":"uint8","internalType":"uint8"},{"name":"noChainId","type":"bool","internalType":"bool"},{"name":"calls","type":"tuple[]","internalType":"struct Payload.Call[]","components":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"delegateCall","type":"bool","internalType":"bool"},{"name":"onlyFallback","type":"bool","internalType":"bool"},{"name":"behaviorOnError","type":"uint256","internalType":"uint256"}]},{"name":"space","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"imageHash","type":"bytes32","internalType":"bytes32"},{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"parentWallets","type":"address[]","internalType":"address[]"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"noChainId\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"delegateCall\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"onlyFallback\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"behaviorOnError\",\"type\":\"uint256\"}],\"internalType\":\"struct Payload.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"space\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"parentWallets\",\"type\":\"address[]\"}],\"internalType\":\"struct Payload.Decoded\",\"name\":\"payload\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen\",\"details\":\"The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration\",\"kind\":\"dev\",\"methods\":{\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"params\":{\"payload\":\"The payload to recover the signature from\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"imageHash\":\"The recovered image hash\"}}},\"title\":\"ISapient\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)\":{\"notice\":\"Recovers the image hash of a given signature\"}},\"notice\":\"Sapient signers take an explicit payload and return their own \\\"imageHash\\\" as result\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/ISapient.sol\":\"ISapient\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]),bytes)":"13792a4a"}}},"ISapientCompact":{"abi":[{"type":"function","name":"recoverSapientSignatureCompact","inputs":[{"name":"digest","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"imageHash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"recoverSapientSignatureCompact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"imageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Agustin Aguilar, Michael Standen\",\"details\":\"The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration\",\"kind\":\"dev\",\"methods\":{\"recoverSapientSignatureCompact(bytes32,bytes)\":{\"params\":{\"digest\":\"The digest of the payload\",\"signature\":\"The signature to recover the image hash from\"},\"returns\":{\"imageHash\":\"The recovered image hash\"}}},\"title\":\"ISapientCompact\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"recoverSapientSignatureCompact(bytes32,bytes)\":{\"notice\":\"Recovers the image hash of a given signature, using a hashed payload\"}},\"notice\":\"Sapient signers take a compacted payload and return their own \\\"imageHash\\\" as result\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/interfaces/ISapient.sol\":\"ISapientCompact\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/modules/Payload.sol\":{\"keccak256\":\"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662\",\"dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ\"]},\"src/modules/interfaces/ISapient.sol\":{\"keccak256\":\"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489\",\"dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn\"]},\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"recoverSapientSignatureCompact(bytes32,bytes)":"898bd921"}}}},"src/utils/LibBytes.sol":{"LibBytes":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar (aa@horizon.io), Michael Standen (mstan@horizon.io)\",\"details\":\"These functions do not check if the input index is within the bounds of the data array.Reading out of bounds may return dirty values.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for reading data from bytes arrays\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This library contains functions for reading data from bytes arrays.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/LibBytes.sol\":\"LibBytes\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/utils/LibBytes.sol\":{\"keccak256\":\"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c\",\"dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220a85ffa9e3ade302caa4978ea91e2fc168f2c0512807b43a7f8208a8f8a4df7d464736f6c634300081c0033","sourceMap":"432:3576:28:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"600080fdfea2646970667358221220a85ffa9e3ade302caa4978ea91e2fc168f2c0512807b43a7f8208a8f8a4df7d464736f6c634300081c0033","sourceMap":"432:3576:28:-:0;;","linkReferences":{}}}}},"src/utils/LibOptim.sol":{"LibOptim":{"abi":[],"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Agustin Aguilar\",\"kind\":\"dev\",\"methods\":{},\"title\":\"LibOptim\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Library for optimized EVM operations\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/LibOptim.sol\":\"LibOptim\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":4294967295},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":erc2470-libs/=lib/erc2470-libs/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/utils/LibOptim.sol\":{\"keccak256\":\"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81\",\"dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x\"]}},\"version\":1}","userdoc":{},"devdoc":{},"evm":{"bytecode":{"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212200398f15f5e9b603b352d431691aa165e3c5441cd70facd49709dc0030836d1fe64736f6c634300081c0033","sourceMap":"162:2030:29:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"600080fdfea26469706673582212200398f15f5e9b603b352d431691aa165e3c5441cd70facd49709dc0030836d1fe64736f6c634300081c0033","sourceMap":"162:2030:29:-:0;;","linkReferences":{}}}}}},"sources":{"src/Stage1Module.sol":{"id":0,"ast":{"absolutePath":"src/Stage1Module.sol","id":63,"exportedSymbols":{"Calls":[492],"ERC4337v07":[637],"Hooks":[963],"IAuth":[4532],"Stage1Auth":[4387],"Stage1Module":[62],"Stage2Module":[110]},"nodeType":"SourceUnit","src":"39:851:0","nodes":[{"id":1,"nodeType":"PragmaDirective","src":"39:24:0","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":3,"nodeType":"ImportDirective","src":"65:50:0","nodes":[],"absolutePath":"src/Stage2Module.sol","file":"./Stage2Module.sol","nameLocation":"-1:-1:-1","scope":63,"sourceUnit":111,"symbolAliases":[{"foreign":{"id":2,"name":"Stage2Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"74:12:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":5,"nodeType":"ImportDirective","src":"116:44:0","nodes":[],"absolutePath":"src/modules/Calls.sol","file":"./modules/Calls.sol","nameLocation":"-1:-1:-1","scope":63,"sourceUnit":493,"symbolAliases":[{"foreign":{"id":4,"name":"Calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":492,"src":"125:5:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":7,"nodeType":"ImportDirective","src":"162:54:0","nodes":[],"absolutePath":"src/modules/ERC4337v07.sol","file":"./modules/ERC4337v07.sol","nameLocation":"-1:-1:-1","scope":63,"sourceUnit":638,"symbolAliases":[{"foreign":{"id":6,"name":"ERC4337v07","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"171:10:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":9,"nodeType":"ImportDirective","src":"217:44:0","nodes":[],"absolutePath":"src/modules/Hooks.sol","file":"./modules/Hooks.sol","nameLocation":"-1:-1:-1","scope":63,"sourceUnit":964,"symbolAliases":[{"foreign":{"id":8,"name":"Hooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"226:5:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":11,"nodeType":"ImportDirective","src":"262:59:0","nodes":[],"absolutePath":"src/modules/auth/Stage1Auth.sol","file":"./modules/auth/Stage1Auth.sol","nameLocation":"-1:-1:-1","scope":63,"sourceUnit":4388,"symbolAliases":[{"foreign":{"id":10,"name":"Stage1Auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4387,"src":"271:10:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":13,"nodeType":"ImportDirective","src":"322:55:0","nodes":[],"absolutePath":"src/modules/interfaces/IAuth.sol","file":"./modules/interfaces/IAuth.sol","nameLocation":"-1:-1:-1","scope":63,"sourceUnit":4533,"symbolAliases":[{"foreign":{"id":12,"name":"IAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4532,"src":"331:5:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":62,"nodeType":"ContractDefinition","src":"475:414:0","nodes":[{"id":44,"nodeType":"FunctionDefinition","src":"542:151:0","nodes":[],"body":{"id":43,"nodeType":"Block","src":"690:3:0","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":29,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"616:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":35,"name":"_entryPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"651:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":34,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"634:16:0","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Stage2Module_$110_$","typeString":"function (address) returns (contract Stage2Module)"},"typeName":{"id":33,"nodeType":"UserDefinedTypeName","pathNode":{"id":32,"name":"Stage2Module","nameLocations":["638:12:0"],"nodeType":"IdentifierPath","referencedDeclaration":110,"src":"638:12:0"},"referencedDeclaration":110,"src":"638:12:0","typeDescriptions":{"typeIdentifier":"t_contract$_Stage2Module_$110","typeString":"contract Stage2Module"}}},"id":36,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"634:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Stage2Module_$110","typeString":"contract Stage2Module"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Stage2Module_$110","typeString":"contract Stage2Module"}],"id":31,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"626:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":30,"name":"address","nodeType":"ElementaryTypeName","src":"626:7:0","typeDescriptions":{}}},"id":37,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"626:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":38,"kind":"baseConstructorSpecifier","modifierName":{"id":28,"name":"Stage1Auth","nameLocations":["605:10:0"],"nodeType":"IdentifierPath","referencedDeclaration":4387,"src":"605:10:0"},"nodeType":"ModifierInvocation","src":"605:60:0"},{"arguments":[{"id":40,"name":"_entryPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"677:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":41,"kind":"baseConstructorSpecifier","modifierName":{"id":39,"name":"ERC4337v07","nameLocations":["666:10:0"],"nodeType":"IdentifierPath","referencedDeclaration":637,"src":"666:10:0"},"nodeType":"ModifierInvocation","src":"666:23:0"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":27,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"_factory","nameLocation":"567:8:0","nodeType":"VariableDeclaration","scope":44,"src":"559:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23,"name":"address","nodeType":"ElementaryTypeName","src":"559:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":26,"mutability":"mutable","name":"_entryPoint","nameLocation":"589:11:0","nodeType":"VariableDeclaration","scope":44,"src":"581:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":25,"name":"address","nodeType":"ElementaryTypeName","src":"581:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"553:51:0"},"returnParameters":{"id":42,"nodeType":"ParameterList","parameters":[],"src":"690:0:0"},"scope":62,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":61,"nodeType":"FunctionDefinition","src":"721:165:0","nodes":[],"body":{"id":60,"nodeType":"Block","src":"837:49:0","nodes":[],"statements":[{"expression":{"arguments":[{"id":57,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47,"src":"870:10:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"850:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Stage1Module_$62_$","typeString":"type(contract super Stage1Module)"}},"id":56,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"856:13:0","memberName":"_isValidImage","nodeType":"MemberAccess","referencedDeclaration":4386,"src":"850:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":58,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"850:31:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":54,"id":59,"nodeType":"Return","src":"843:38:0"}]},"baseFunctions":[4386,4526],"documentation":{"id":45,"nodeType":"StructuredDocumentation","src":"697:21:0","text":"@inheritdoc IAuth"},"implemented":true,"kind":"function","modifiers":[],"name":"_isValidImage","nameLocation":"730:13:0","overrides":{"id":51,"nodeType":"OverrideSpecifier","overrides":[{"id":49,"name":"IAuth","nameLocations":["803:5:0"],"nodeType":"IdentifierPath","referencedDeclaration":4532,"src":"803:5:0"},{"id":50,"name":"Stage1Auth","nameLocations":["810:10:0"],"nodeType":"IdentifierPath","referencedDeclaration":4387,"src":"810:10:0"}],"src":"794:27:0"},"parameters":{"id":48,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"mutability":"mutable","name":"_imageHash","nameLocation":"757:10:0","nodeType":"VariableDeclaration","scope":61,"src":"749:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":46,"name":"bytes32","nodeType":"ElementaryTypeName","src":"749:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"743:28:0"},"returnParameters":{"id":54,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61,"src":"831:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":52,"name":"bool","nodeType":"ElementaryTypeName","src":"831:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"830:6:0"},"scope":62,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":15,"name":"Calls","nameLocations":["500:5:0"],"nodeType":"IdentifierPath","referencedDeclaration":492,"src":"500:5:0"},"id":16,"nodeType":"InheritanceSpecifier","src":"500:5:0"},{"baseName":{"id":17,"name":"Stage1Auth","nameLocations":["507:10:0"],"nodeType":"IdentifierPath","referencedDeclaration":4387,"src":"507:10:0"},"id":18,"nodeType":"InheritanceSpecifier","src":"507:10:0"},{"baseName":{"id":19,"name":"Hooks","nameLocations":["519:5:0"],"nodeType":"IdentifierPath","referencedDeclaration":963,"src":"519:5:0"},"id":20,"nodeType":"InheritanceSpecifier","src":"519:5:0"},{"baseName":{"id":21,"name":"ERC4337v07","nameLocations":["526:10:0"],"nodeType":"IdentifierPath","referencedDeclaration":637,"src":"526:10:0"},"id":22,"nodeType":"InheritanceSpecifier","src":"526:10:0"}],"canonicalName":"Stage1Module","contractDependencies":[110],"contractKind":"contract","documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"379:96:0","text":"@title Stage1Module\n @author Agustin Aguilar\n @notice The initial stage of the wallet"},"fullyImplemented":true,"linearizedBaseContracts":[62,637,963,4659,4677,4697,4611,4387,492,1142,1027,2564,4241,4631,4749,4732,4532,4516,1987],"name":"Stage1Module","nameLocation":"484:12:0","scope":63,"usedErrors":[179,187,197,521,523,681,686,1048,1155,1158,1956,2100,2107,2114,2123,2631,2640,2647,2653,2658,2661,4222,4259],"usedEvents":[144,153,162,169,676,975,1039,2132,4280]}],"license":"Apache-2.0"}},"src/Stage2Module.sol":{"id":1,"ast":{"absolutePath":"src/Stage2Module.sol","id":111,"exportedSymbols":{"Calls":[492],"ERC4337v07":[637],"Hooks":[963],"IAuth":[4532],"Stage2Auth":[4480],"Stage2Module":[110]},"nodeType":"SourceUnit","src":"39:716:1","nodes":[{"id":64,"nodeType":"PragmaDirective","src":"39:24:1","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":66,"nodeType":"ImportDirective","src":"65:44:1","nodes":[],"absolutePath":"src/modules/Calls.sol","file":"./modules/Calls.sol","nameLocation":"-1:-1:-1","scope":111,"sourceUnit":493,"symbolAliases":[{"foreign":{"id":65,"name":"Calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":492,"src":"74:5:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":68,"nodeType":"ImportDirective","src":"111:54:1","nodes":[],"absolutePath":"src/modules/ERC4337v07.sol","file":"./modules/ERC4337v07.sol","nameLocation":"-1:-1:-1","scope":111,"sourceUnit":638,"symbolAliases":[{"foreign":{"id":67,"name":"ERC4337v07","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"120:10:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":70,"nodeType":"ImportDirective","src":"166:44:1","nodes":[],"absolutePath":"src/modules/Hooks.sol","file":"./modules/Hooks.sol","nameLocation":"-1:-1:-1","scope":111,"sourceUnit":964,"symbolAliases":[{"foreign":{"id":69,"name":"Hooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"175:5:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":72,"nodeType":"ImportDirective","src":"211:59:1","nodes":[],"absolutePath":"src/modules/auth/Stage2Auth.sol","file":"./modules/auth/Stage2Auth.sol","nameLocation":"-1:-1:-1","scope":111,"sourceUnit":4481,"symbolAliases":[{"foreign":{"id":71,"name":"Stage2Auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4480,"src":"220:10:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74,"nodeType":"ImportDirective","src":"271:55:1","nodes":[],"absolutePath":"src/modules/interfaces/IAuth.sol","file":"./modules/interfaces/IAuth.sol","nameLocation":"-1:-1:-1","scope":111,"sourceUnit":4533,"symbolAliases":[{"foreign":{"id":73,"name":"IAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4532,"src":"280:5:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":110,"nodeType":"ContractDefinition","src":"423:331:1","nodes":[{"id":92,"nodeType":"FunctionDefinition","src":"490:68:1","nodes":[],"body":{"id":91,"nodeType":"Block","src":"555:3:1","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":88,"name":"_entryPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":85,"src":"542:11:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":89,"kind":"baseConstructorSpecifier","modifierName":{"id":87,"name":"ERC4337v07","nameLocations":["531:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":637,"src":"531:10:1"},"nodeType":"ModifierInvocation","src":"531:23:1"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":86,"nodeType":"ParameterList","parameters":[{"constant":false,"id":85,"mutability":"mutable","name":"_entryPoint","nameLocation":"515:11:1","nodeType":"VariableDeclaration","scope":92,"src":"507:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84,"name":"address","nodeType":"ElementaryTypeName","src":"507:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"501:29:1"},"returnParameters":{"id":90,"nodeType":"ParameterList","parameters":[],"src":"555:0:1"},"scope":110,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":109,"nodeType":"FunctionDefinition","src":"586:165:1","nodes":[],"body":{"id":108,"nodeType":"Block","src":"702:49:1","nodes":[],"statements":[{"expression":{"arguments":[{"id":105,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":95,"src":"735:10:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":103,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"715:5:1","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_Stage2Module_$110_$","typeString":"type(contract super Stage2Module)"}},"id":104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"721:13:1","memberName":"_isValidImage","nodeType":"MemberAccess","referencedDeclaration":4450,"src":"715:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"715:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":102,"id":107,"nodeType":"Return","src":"708:38:1"}]},"baseFunctions":[4450,4526],"documentation":{"id":93,"nodeType":"StructuredDocumentation","src":"562:21:1","text":"@inheritdoc IAuth"},"implemented":true,"kind":"function","modifiers":[],"name":"_isValidImage","nameLocation":"595:13:1","overrides":{"id":99,"nodeType":"OverrideSpecifier","overrides":[{"id":97,"name":"IAuth","nameLocations":["668:5:1"],"nodeType":"IdentifierPath","referencedDeclaration":4532,"src":"668:5:1"},{"id":98,"name":"Stage2Auth","nameLocations":["675:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":4480,"src":"675:10:1"}],"src":"659:27:1"},"parameters":{"id":96,"nodeType":"ParameterList","parameters":[{"constant":false,"id":95,"mutability":"mutable","name":"_imageHash","nameLocation":"622:10:1","nodeType":"VariableDeclaration","scope":109,"src":"614:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":94,"name":"bytes32","nodeType":"ElementaryTypeName","src":"614:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"608:28:1"},"returnParameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":109,"src":"696:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":100,"name":"bool","nodeType":"ElementaryTypeName","src":"696:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"695:6:1"},"scope":110,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":76,"name":"Calls","nameLocations":["448:5:1"],"nodeType":"IdentifierPath","referencedDeclaration":492,"src":"448:5:1"},"id":77,"nodeType":"InheritanceSpecifier","src":"448:5:1"},{"baseName":{"id":78,"name":"Stage2Auth","nameLocations":["455:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":4480,"src":"455:10:1"},"id":79,"nodeType":"InheritanceSpecifier","src":"455:10:1"},{"baseName":{"id":80,"name":"Hooks","nameLocations":["467:5:1"],"nodeType":"IdentifierPath","referencedDeclaration":963,"src":"467:5:1"},"id":81,"nodeType":"InheritanceSpecifier","src":"467:5:1"},{"baseName":{"id":82,"name":"ERC4337v07","nameLocations":["474:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":637,"src":"474:10:1"},"id":83,"nodeType":"InheritanceSpecifier","src":"474:10:1"}],"canonicalName":"Stage2Module","contractDependencies":[],"contractKind":"contract","documentation":{"id":75,"nodeType":"StructuredDocumentation","src":"328:95:1","text":"@title Stage2Module\n @author Agustin Aguilar\n @notice The second stage of the wallet"},"fullyImplemented":true,"linearizedBaseContracts":[110,637,963,4659,4677,4697,4611,4480,492,1142,1027,2564,4241,4631,4749,4732,4532,4516,1987],"name":"Stage2Module","nameLocation":"432:12:1","scope":111,"usedErrors":[179,187,197,521,523,681,686,1048,1155,1158,1956,2100,2107,2114,2123,2631,2640,2647,2653,2658,2661,4222,4415],"usedEvents":[144,153,162,169,676,975,1039,2132,4412]}],"license":"Apache-2.0"}},"src/Wallet.sol":{"id":2,"ast":{"absolutePath":"src/Wallet.sol","id":117,"exportedSymbols":{"Wallet":[116]},"nodeType":"SourceUnit","src":"39:2242:2","nodes":[{"id":112,"nodeType":"PragmaDirective","src":"39:23:2","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":116,"nodeType":"ContractDefinition","src":"2114:166:2","nodes":[{"id":115,"nodeType":"VariableDeclaration","src":"2134:142:2","nodes":[],"constant":true,"mutability":"constant","name":"creationCode","nameLocation":"2158:12:2","scope":116,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":113,"name":"bytes","nodeType":"ElementaryTypeName","src":"2134:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":{"hexValue":"6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3","id":114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"2177:99:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_a10c2d3efe327c6d046c9fbe53303e89ce60bb19100cbff92695e3e7e56ea1fd","typeString":"literal_string hex\"6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3\""}},"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Wallet","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"linearizedBaseContracts":[116],"name":"Wallet","nameLocation":"2122:6:2","scope":117,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/Calls.sol":{"id":3,"ast":{"absolutePath":"src/modules/Calls.sol","id":493,"exportedSymbols":{"BaseAuth":[2564],"Calls":[492],"IDelegatedExtension":[4573],"LibOptim":[5019],"Nonce":[1142],"Payload":[1918],"ReentrancyGuard":[1987]},"nodeType":"SourceUnit","src":"39:4244:3","nodes":[{"id":118,"nodeType":"PragmaDirective","src":"39:24:3","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":120,"nodeType":"ImportDirective","src":"65:49:3","nodes":[],"absolutePath":"src/utils/LibOptim.sol","file":"../utils/LibOptim.sol","nameLocation":"-1:-1:-1","scope":493,"sourceUnit":5020,"symbolAliases":[{"foreign":{"id":119,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"74:8:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":122,"nodeType":"ImportDirective","src":"115:36:3","nodes":[],"absolutePath":"src/modules/Nonce.sol","file":"./Nonce.sol","nameLocation":"-1:-1:-1","scope":493,"sourceUnit":1143,"symbolAliases":[{"foreign":{"id":121,"name":"Nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"124:5:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":124,"nodeType":"ImportDirective","src":"152:40:3","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"./Payload.sol","nameLocation":"-1:-1:-1","scope":493,"sourceUnit":1919,"symbolAliases":[{"foreign":{"id":123,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"161:7:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":126,"nodeType":"ImportDirective","src":"194:56:3","nodes":[],"absolutePath":"src/modules/ReentrancyGuard.sol","file":"./ReentrancyGuard.sol","nameLocation":"-1:-1:-1","scope":493,"sourceUnit":1988,"symbolAliases":[{"foreign":{"id":125,"name":"ReentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"203:15:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":128,"nodeType":"ImportDirective","src":"251:47:3","nodes":[],"absolutePath":"src/modules/auth/BaseAuth.sol","file":"./auth/BaseAuth.sol","nameLocation":"-1:-1:-1","scope":493,"sourceUnit":2565,"symbolAliases":[{"foreign":{"id":127,"name":"BaseAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2564,"src":"260:8:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":130,"nodeType":"ImportDirective","src":"299:75:3","nodes":[],"absolutePath":"src/modules/interfaces/IDelegatedExtension.sol","file":"./interfaces/IDelegatedExtension.sol","nameLocation":"-1:-1:-1","scope":493,"sourceUnit":4574,"symbolAliases":[{"foreign":{"id":129,"name":"IDelegatedExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"308:19:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":492,"nodeType":"ContractDefinition","src":"492:3790:3","nodes":[{"id":144,"nodeType":"EventDefinition","src":"600:61:3","nodes":[],"anonymous":false,"documentation":{"id":138,"nodeType":"StructuredDocumentation","src":"557:40:3","text":"@notice Emitted when a call succeeds"},"eventSelector":"5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a","name":"CallSucceeded","nameLocation":"606:13:3","parameters":{"id":143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":140,"indexed":true,"mutability":"mutable","name":"_opHash","nameLocation":"636:7:3","nodeType":"VariableDeclaration","scope":144,"src":"620:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":139,"name":"bytes32","nodeType":"ElementaryTypeName","src":"620:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":142,"indexed":false,"mutability":"mutable","name":"_index","nameLocation":"653:6:3","nodeType":"VariableDeclaration","scope":144,"src":"645:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":141,"name":"uint256","nodeType":"ElementaryTypeName","src":"645:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"619:41:3"}},{"id":153,"nodeType":"EventDefinition","src":"704:77:3","nodes":[],"anonymous":false,"documentation":{"id":145,"nodeType":"StructuredDocumentation","src":"664:37:3","text":"@notice Emitted when a call fails"},"eventSelector":"115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d","name":"CallFailed","nameLocation":"710:10:3","parameters":{"id":152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":147,"indexed":true,"mutability":"mutable","name":"_opHash","nameLocation":"737:7:3","nodeType":"VariableDeclaration","scope":153,"src":"721:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":146,"name":"bytes32","nodeType":"ElementaryTypeName","src":"721:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":149,"indexed":false,"mutability":"mutable","name":"_index","nameLocation":"754:6:3","nodeType":"VariableDeclaration","scope":153,"src":"746:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":148,"name":"uint256","nodeType":"ElementaryTypeName","src":"746:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":151,"indexed":false,"mutability":"mutable","name":"_returnData","nameLocation":"768:11:3","nodeType":"VariableDeclaration","scope":153,"src":"762:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":150,"name":"bytes","nodeType":"ElementaryTypeName","src":"762:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"720:60:3"}},{"id":162,"nodeType":"EventDefinition","src":"829:78:3","nodes":[],"anonymous":false,"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"784:42:3","text":"@notice Emitted when a call is aborted"},"eventSelector":"c2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b","name":"CallAborted","nameLocation":"835:11:3","parameters":{"id":161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"indexed":true,"mutability":"mutable","name":"_opHash","nameLocation":"863:7:3","nodeType":"VariableDeclaration","scope":162,"src":"847:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":155,"name":"bytes32","nodeType":"ElementaryTypeName","src":"847:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":158,"indexed":false,"mutability":"mutable","name":"_index","nameLocation":"880:6:3","nodeType":"VariableDeclaration","scope":162,"src":"872:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":157,"name":"uint256","nodeType":"ElementaryTypeName","src":"872:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":160,"indexed":false,"mutability":"mutable","name":"_returnData","nameLocation":"894:11:3","nodeType":"VariableDeclaration","scope":162,"src":"888:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":159,"name":"bytes","nodeType":"ElementaryTypeName","src":"888:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"846:60:3"}},{"id":169,"nodeType":"EventDefinition","src":"955:59:3","nodes":[],"anonymous":false,"documentation":{"id":163,"nodeType":"StructuredDocumentation","src":"910:42:3","text":"@notice Emitted when a call is skipped"},"eventSelector":"9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b","name":"CallSkipped","nameLocation":"961:11:3","parameters":{"id":168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":165,"indexed":true,"mutability":"mutable","name":"_opHash","nameLocation":"989:7:3","nodeType":"VariableDeclaration","scope":169,"src":"973:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":164,"name":"bytes32","nodeType":"ElementaryTypeName","src":"973:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":167,"indexed":false,"mutability":"mutable","name":"_index","nameLocation":"1006:6:3","nodeType":"VariableDeclaration","scope":169,"src":"998:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":166,"name":"uint256","nodeType":"ElementaryTypeName","src":"998:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"972:41:3"}},{"id":179,"nodeType":"ErrorDefinition","src":"1065:76:3","nodes":[],"documentation":{"id":170,"nodeType":"StructuredDocumentation","src":"1018:44:3","text":"@notice Error thrown when a call reverts"},"errorSelector":"7f6b0bb1","name":"Reverted","nameLocation":"1071:8:3","parameters":{"id":178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":173,"mutability":"mutable","name":"_payload","nameLocation":"1096:8:3","nodeType":"VariableDeclaration","scope":179,"src":"1080:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":172,"nodeType":"UserDefinedTypeName","pathNode":{"id":171,"name":"Payload.Decoded","nameLocations":["1080:7:3","1088:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"1080:15:3"},"referencedDeclaration":1284,"src":"1080:15:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":175,"mutability":"mutable","name":"_index","nameLocation":"1114:6:3","nodeType":"VariableDeclaration","scope":179,"src":"1106:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":174,"name":"uint256","nodeType":"ElementaryTypeName","src":"1106:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":177,"mutability":"mutable","name":"_returnData","nameLocation":"1128:11:3","nodeType":"VariableDeclaration","scope":179,"src":"1122:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":176,"name":"bytes","nodeType":"ElementaryTypeName","src":"1122:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1079:61:3"}},{"id":187,"nodeType":"ErrorDefinition","src":"1199:67:3","nodes":[],"documentation":{"id":180,"nodeType":"StructuredDocumentation","src":"1144:52:3","text":"@notice Error thrown when a signature is invalid"},"errorSelector":"a2b6d61b","name":"InvalidSignature","nameLocation":"1205:16:3","parameters":{"id":186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":183,"mutability":"mutable","name":"_payload","nameLocation":"1238:8:3","nodeType":"VariableDeclaration","scope":187,"src":"1222:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":182,"nodeType":"UserDefinedTypeName","pathNode":{"id":181,"name":"Payload.Decoded","nameLocations":["1222:7:3","1230:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"1222:15:3"},"referencedDeclaration":1284,"src":"1222:15:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":185,"mutability":"mutable","name":"_signature","nameLocation":"1254:10:3","nodeType":"VariableDeclaration","scope":187,"src":"1248:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":184,"name":"bytes","nodeType":"ElementaryTypeName","src":"1248:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1221:44:3"}},{"id":197,"nodeType":"ErrorDefinition","src":"1325:79:3","nodes":[],"documentation":{"id":188,"nodeType":"StructuredDocumentation","src":"1269:53:3","text":"@notice Error thrown when there is not enough gas"},"errorSelector":"21395274","name":"NotEnoughGas","nameLocation":"1331:12:3","parameters":{"id":196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":191,"mutability":"mutable","name":"_payload","nameLocation":"1360:8:3","nodeType":"VariableDeclaration","scope":197,"src":"1344:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":190,"nodeType":"UserDefinedTypeName","pathNode":{"id":189,"name":"Payload.Decoded","nameLocations":["1344:7:3","1352:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"1344:15:3"},"referencedDeclaration":1284,"src":"1344:15:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":193,"mutability":"mutable","name":"_index","nameLocation":"1378:6:3","nodeType":"VariableDeclaration","scope":197,"src":"1370:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":192,"name":"uint256","nodeType":"ElementaryTypeName","src":"1370:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":195,"mutability":"mutable","name":"_gasLeft","nameLocation":"1394:8:3","nodeType":"VariableDeclaration","scope":197,"src":"1386:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":194,"name":"uint256","nodeType":"ElementaryTypeName","src":"1386:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1343:60:3"}},{"id":254,"nodeType":"FunctionDefinition","src":"1509:486:3","nodes":[],"body":{"id":253,"nodeType":"Block","src":"1628:367:3","nodes":[],"statements":[{"assignments":[208],"declarations":[{"constant":false,"id":208,"mutability":"mutable","name":"startingGas","nameLocation":"1642:11:3","nodeType":"VariableDeclaration","scope":253,"src":"1634:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":207,"name":"uint256","nodeType":"ElementaryTypeName","src":"1634:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":211,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":209,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"1656:7:3","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1656:9:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1634:31:3"},{"assignments":[216],"declarations":[{"constant":false,"id":216,"mutability":"mutable","name":"decoded","nameLocation":"1694:7:3","nodeType":"VariableDeclaration","scope":253,"src":"1671:30:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":215,"nodeType":"UserDefinedTypeName","pathNode":{"id":214,"name":"Payload.Decoded","nameLocations":["1671:7:3","1679:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"1671:15:3"},"referencedDeclaration":1284,"src":"1671:15:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"id":221,"initialValue":{"arguments":[{"id":219,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":200,"src":"1728:8:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":217,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"1704:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1918_$","typeString":"type(library Payload)"}},"id":218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1712:15:3","memberName":"fromPackedCalls","nodeType":"MemberAccess","referencedDeclaration":1663,"src":"1704:23:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Decoded_$1284_memory_ptr_$","typeString":"function (bytes calldata) view returns (struct Payload.Decoded memory)"}},"id":220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1704:33:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"nodeType":"VariableDeclarationStatement","src":"1671:66:3"},{"expression":{"arguments":[{"expression":{"id":223,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"1758:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":224,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1766:5:3","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":1272,"src":"1758:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":225,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"1773:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":226,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1781:5:3","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":1274,"src":"1773:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":222,"name":"_consumeNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1141,"src":"1744:13:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1744:43:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":228,"nodeType":"ExpressionStatement","src":"1744:43:3"},{"assignments":[230,232],"declarations":[{"constant":false,"id":230,"mutability":"mutable","name":"isValid","nameLocation":"1799:7:3","nodeType":"VariableDeclaration","scope":253,"src":"1794:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":229,"name":"bool","nodeType":"ElementaryTypeName","src":"1794:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":232,"mutability":"mutable","name":"opHash","nameLocation":"1816:6:3","nodeType":"VariableDeclaration","scope":253,"src":"1808:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":231,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1808:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":237,"initialValue":{"arguments":[{"id":234,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"1846:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":235,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"1855:10:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":233,"name":"signatureValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"1826:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata) view returns (bool,bytes32)"}},"id":236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:40:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"1793:73:3"},{"condition":{"id":239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1877:8:3","subExpression":{"id":238,"name":"isValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":230,"src":"1878:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":246,"nodeType":"IfStatement","src":"1873:73:3","trueBody":{"id":245,"nodeType":"Block","src":"1887:59:3","statements":[{"errorCall":{"arguments":[{"id":241,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"1919:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":242,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"1928:10:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":240,"name":"InvalidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":187,"src":"1902:16:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (struct Payload.Decoded memory,bytes memory) pure returns (error)"}},"id":243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1902:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":244,"nodeType":"RevertStatement","src":"1895:44:3"}]}},{"expression":{"arguments":[{"id":248,"name":"startingGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":208,"src":"1961:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":249,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":232,"src":"1974:6:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":250,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"1982:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}],"id":247,"name":"_execute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"1952:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_struct$_Decoded_$1284_memory_ptr_$returns$__$","typeString":"function (uint256,bytes32,struct Payload.Decoded memory)"}},"id":251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1952:38:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":252,"nodeType":"ExpressionStatement","src":"1952:38:3"}]},"documentation":{"id":198,"nodeType":"StructuredDocumentation","src":"1408:98:3","text":"@notice Execute a call\n @param _payload The payload\n @param _signature The signature"},"functionSelector":"1f6a1eb9","implemented":true,"kind":"function","modifiers":[{"id":205,"kind":"modifierInvocation","modifierName":{"id":204,"name":"nonReentrant","nameLocations":["1615:12:3"],"nodeType":"IdentifierPath","referencedDeclaration":1986,"src":"1615:12:3"},"nodeType":"ModifierInvocation","src":"1615:12:3"}],"name":"execute","nameLocation":"1518:7:3","parameters":{"id":203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":200,"mutability":"mutable","name":"_payload","nameLocation":"1546:8:3","nodeType":"VariableDeclaration","scope":254,"src":"1531:23:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":199,"name":"bytes","nodeType":"ElementaryTypeName","src":"1531:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":202,"mutability":"mutable","name":"_signature","nameLocation":"1575:10:3","nodeType":"VariableDeclaration","scope":254,"src":"1560:25:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":201,"name":"bytes","nodeType":"ElementaryTypeName","src":"1560:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1525:64:3"},"returnParameters":{"id":206,"nodeType":"ParameterList","parameters":[],"src":"1628:0:3"},"scope":492,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":291,"nodeType":"FunctionDefinition","src":"2110:290:3","nodes":[],"body":{"id":290,"nodeType":"Block","src":"2198:202:3","nodes":[],"statements":[{"assignments":[263],"declarations":[{"constant":false,"id":263,"mutability":"mutable","name":"startingGas","nameLocation":"2212:11:3","nodeType":"VariableDeclaration","scope":290,"src":"2204:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint256","nodeType":"ElementaryTypeName","src":"2204:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":266,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":264,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2226:7:3","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:9:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2204:31:3"},{"assignments":[271],"declarations":[{"constant":false,"id":271,"mutability":"mutable","name":"decoded","nameLocation":"2264:7:3","nodeType":"VariableDeclaration","scope":290,"src":"2241:30:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":270,"nodeType":"UserDefinedTypeName","pathNode":{"id":269,"name":"Payload.Decoded","nameLocations":["2241:7:3","2249:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"2241:15:3"},"referencedDeclaration":1284,"src":"2241:15:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"id":276,"initialValue":{"arguments":[{"id":274,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"2298:8:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":272,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"2274:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1918_$","typeString":"type(library Payload)"}},"id":273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2282:15:3","memberName":"fromPackedCalls","nodeType":"MemberAccess","referencedDeclaration":1663,"src":"2274:23:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_calldata_ptr_$returns$_t_struct$_Decoded_$1284_memory_ptr_$","typeString":"function (bytes calldata) view returns (struct Payload.Decoded memory)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2274:33:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"nodeType":"VariableDeclarationStatement","src":"2241:66:3"},{"assignments":[278],"declarations":[{"constant":false,"id":278,"mutability":"mutable","name":"opHash","nameLocation":"2321:6:3","nodeType":"VariableDeclaration","scope":290,"src":"2313:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":277,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2313:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":283,"initialValue":{"arguments":[{"id":281,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"2343:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}],"expression":{"id":279,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"2330:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1918_$","typeString":"type(library Payload)"}},"id":280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2338:4:3","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":1883,"src":"2330:12:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory) view returns (bytes32)"}},"id":282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2330:21:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2313:38:3"},{"expression":{"arguments":[{"id":285,"name":"startingGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"2366:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":286,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":278,"src":"2379:6:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":287,"name":"decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"2387:7:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}],"id":284,"name":"_execute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"2357:8:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_struct$_Decoded_$1284_memory_ptr_$returns$__$","typeString":"function (uint256,bytes32,struct Payload.Decoded memory)"}},"id":288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:38:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":289,"nodeType":"ExpressionStatement","src":"2357:38:3"}]},"documentation":{"id":255,"nodeType":"StructuredDocumentation","src":"1999:108:3","text":"@notice Execute a call\n @dev Callable only by the contract itself\n @param _payload The payload"},"functionSelector":"6ea44577","implemented":true,"kind":"function","modifiers":[{"id":260,"kind":"modifierInvocation","modifierName":{"id":259,"name":"onlySelf","nameLocations":["2189:8:3"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"2189:8:3"},"nodeType":"ModifierInvocation","src":"2189:8:3"}],"name":"selfExecute","nameLocation":"2119:11:3","parameters":{"id":258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":257,"mutability":"mutable","name":"_payload","nameLocation":"2151:8:3","nodeType":"VariableDeclaration","scope":291,"src":"2136:23:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":256,"name":"bytes","nodeType":"ElementaryTypeName","src":"2136:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2130:33:3"},"returnParameters":{"id":261,"nodeType":"ParameterList","parameters":[],"src":"2198:0:3"},"scope":492,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":491,"nodeType":"FunctionDefinition","src":"2404:1875:3","nodes":[],"body":{"id":490,"nodeType":"Block","src":"2518:1761:3","nodes":[],"statements":[{"assignments":[302],"declarations":[{"constant":false,"id":302,"mutability":"mutable","name":"errorFlag","nameLocation":"2529:9:3","nodeType":"VariableDeclaration","scope":490,"src":"2524:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":301,"name":"bool","nodeType":"ElementaryTypeName","src":"2524:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":304,"initialValue":{"hexValue":"66616c7365","id":303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2541:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"nodeType":"VariableDeclarationStatement","src":"2524:22:3"},{"assignments":[306],"declarations":[{"constant":false,"id":306,"mutability":"mutable","name":"numCalls","nameLocation":"2561:8:3","nodeType":"VariableDeclaration","scope":490,"src":"2553:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":305,"name":"uint256","nodeType":"ElementaryTypeName","src":"2553:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":310,"initialValue":{"expression":{"expression":{"id":307,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"2572:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2581:5:3","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"2572:14:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2587:6:3","memberName":"length","nodeType":"MemberAccess","src":"2572:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2553:40:3"},{"body":{"id":488,"nodeType":"Block","src":"2638:1637:3","statements":[{"assignments":[325],"declarations":[{"constant":false,"id":325,"mutability":"mutable","name":"call","nameLocation":"2666:4:3","nodeType":"VariableDeclaration","scope":488,"src":"2646:24:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call"},"typeName":{"id":324,"nodeType":"UserDefinedTypeName","pathNode":{"id":323,"name":"Payload.Call","nameLocations":["2646:7:3","2654:4:3"],"nodeType":"IdentifierPath","referencedDeclaration":1261,"src":"2646:12:3"},"referencedDeclaration":1261,"src":"2646:12:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_storage_ptr","typeString":"struct Payload.Call"}},"visibility":"internal"}],"id":330,"initialValue":{"baseExpression":{"expression":{"id":326,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"2673:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":327,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2682:5:3","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"2673:14:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":329,"indexExpression":{"id":328,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"2688:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2673:17:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"nodeType":"VariableDeclarationStatement","src":"2646:44:3"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":331,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"2757:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":332,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2762:12:3","memberName":"onlyFallback","nodeType":"MemberAccess","referencedDeclaration":1258,"src":"2757:17:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2778:10:3","subExpression":{"id":333,"name":"errorFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"2779:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2757:31:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":343,"nodeType":"IfStatement","src":"2753:102:3","trueBody":{"id":342,"nodeType":"Block","src":"2790:65:3","statements":[{"eventCall":{"arguments":[{"id":337,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"2817:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":338,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"2826:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":336,"name":"CallSkipped","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":169,"src":"2805:11:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2805:23:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":340,"nodeType":"EmitStatement","src":"2800:28:3"},{"id":341,"nodeType":"Continue","src":"2838:8:3"}]}},{"expression":{"id":346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":344,"name":"errorFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"2981:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2993:5:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2981:17:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":347,"nodeType":"ExpressionStatement","src":"2981:17:3"},{"assignments":[349],"declarations":[{"constant":false,"id":349,"mutability":"mutable","name":"gasLimit","nameLocation":"3015:8:3","nodeType":"VariableDeclaration","scope":488,"src":"3007:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":348,"name":"uint256","nodeType":"ElementaryTypeName","src":"3007:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":352,"initialValue":{"expression":{"id":350,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"3026:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3031:8:3","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":1254,"src":"3026:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3007:32:3"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":353,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"3051:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3063:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3051:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":356,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3068:7:3","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3068:9:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":358,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"3080:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3068:20:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3051:37:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":369,"nodeType":"IfStatement","src":"3047:105:3","trueBody":{"id":368,"nodeType":"Block","src":"3090:62:3","statements":[{"errorCall":{"arguments":[{"id":362,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"3120:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":363,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"3130:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":364,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3133:7:3","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3133:9:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":361,"name":"NotEnoughGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":197,"src":"3107:12:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Decoded_$1284_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (struct Payload.Decoded memory,uint256,uint256) pure returns (error)"}},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3107:36:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":367,"nodeType":"RevertStatement","src":"3100:43:3"}]}},{"assignments":[371],"declarations":[{"constant":false,"id":371,"mutability":"mutable","name":"success","nameLocation":"3165:7:3","nodeType":"VariableDeclaration","scope":488,"src":"3160:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":370,"name":"bool","nodeType":"ElementaryTypeName","src":"3160:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":372,"nodeType":"VariableDeclarationStatement","src":"3160:12:3"},{"condition":{"expression":{"id":373,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"3184:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":374,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3189:12:3","memberName":"delegateCall","nodeType":"MemberAccess","referencedDeclaration":1256,"src":"3184:17:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":426,"nodeType":"Block","src":"3588:114:3","statements":[{"expression":{"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":406,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":371,"src":"3599:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":407,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3598:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":410,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"3624:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":411,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3629:2:3","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":1248,"src":"3624:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":412,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"3633:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":413,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3638:5:3","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1250,"src":"3633:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":414,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"3645:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3657:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3645:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":419,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"3673:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3645:36:3","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":417,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3661:7:3","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3661:9:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":421,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"3683:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":422,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3688:4:3","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":1252,"src":"3683:9:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":408,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"3610:8:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3619:4:3","memberName":"call","nodeType":"MemberAccess","referencedDeclaration":5004,"src":"3610:13:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,uint256,bytes memory) returns (bool)"}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3610:83:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3598:95:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":425,"nodeType":"ExpressionStatement","src":"3598:95:3"}]},"id":427,"nodeType":"IfStatement","src":"3180:522:3","trueBody":{"id":405,"nodeType":"Block","src":"3203:379:3","statements":[{"expression":{"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":375,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":371,"src":"3214:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":376,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3213:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":379,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"3258:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":380,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3263:2:3","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":1248,"src":"3258:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":381,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"3277:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3289:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3277:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":386,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":349,"src":"3305:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3277:36:3","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":384,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"3293:7:3","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3293:9:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"expression":{"id":390,"name":"IDelegatedExtension","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"3361:19:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDelegatedExtension_$4573_$","typeString":"type(contract IDelegatedExtension)"}},"id":391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3381:26:3","memberName":"handleSequenceDelegateCall","nodeType":"MemberAccess","referencedDeclaration":4572,"src":"3361:46:3","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function IDelegatedExtension.handleSequenceDelegateCall(bytes32,uint256,uint256,uint256,uint256,bytes calldata)"}},"id":392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3408:8:3","memberName":"selector","nodeType":"MemberAccess","src":"3361:55:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":393,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3430:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":394,"name":"_startingGas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"3451:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":395,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"3477:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":396,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":306,"src":"3492:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":397,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"3514:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":398,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3523:5:3","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":1272,"src":"3514:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":399,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"3542:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":400,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3547:4:3","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":1252,"src":"3542:9:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":388,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3325:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":389,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3329:18:3","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3325:22:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:238:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":377,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"3225:8:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3234:12:3","memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":5018,"src":"3225:21:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) returns (bool)"}},"id":402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3225:348:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3213:360:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":404,"nodeType":"ExpressionStatement","src":"3213:360:3"}]}},{"condition":{"id":429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3714:8:3","subExpression":{"id":428,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":371,"src":"3715:7:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":482,"nodeType":"IfStatement","src":"3710:520:3","trueBody":{"id":481,"nodeType":"Block","src":"3724:506:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":430,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"3738:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":431,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3743:15:3","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":1260,"src":"3738:20:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":432,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"3762:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1918_$","typeString":"type(library Payload)"}},"id":433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3770:21:3","memberName":"BEHAVIOR_IGNORE_ERROR","nodeType":"MemberAccess","referencedDeclaration":1237,"src":"3762:29:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3738:53:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":449,"nodeType":"IfStatement","src":"3734:180:3","trueBody":{"id":448,"nodeType":"Block","src":"3793:121:3","statements":[{"expression":{"id":437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":435,"name":"errorFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"3805:9:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3817:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3805:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":438,"nodeType":"ExpressionStatement","src":"3805:16:3"},{"eventCall":{"arguments":[{"id":440,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3849:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":441,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"3858:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":442,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"3861:8:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3870:10:3","memberName":"returnData","nodeType":"MemberAccess","referencedDeclaration":4988,"src":"3861:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3861:21:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":439,"name":"CallFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":153,"src":"3838:10:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes32,uint256,bytes memory)"}},"id":445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3838:45:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":446,"nodeType":"EmitStatement","src":"3833:50:3"},{"id":447,"nodeType":"Continue","src":"3895:8:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":450,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"3928:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":451,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3933:15:3","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":1260,"src":"3928:20:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":452,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"3952:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1918_$","typeString":"type(library Payload)"}},"id":453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3960:24:3","memberName":"BEHAVIOR_REVERT_ON_ERROR","nodeType":"MemberAccess","referencedDeclaration":1241,"src":"3952:32:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3928:56:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":464,"nodeType":"IfStatement","src":"3924:136:3","trueBody":{"id":463,"nodeType":"Block","src":"3986:74:3","statements":[{"errorCall":{"arguments":[{"id":456,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":298,"src":"4014:8:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":457,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"4024:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":458,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"4027:8:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4036:10:3","memberName":"returnData","nodeType":"MemberAccess","referencedDeclaration":4988,"src":"4027:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4027:21:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":455,"name":"Reverted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"4005:8:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Decoded_$1284_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (struct Payload.Decoded memory,uint256,bytes memory) pure returns (error)"}},"id":461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4005:44:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":462,"nodeType":"RevertStatement","src":"3998:51:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":465,"name":"call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"4074:4:3","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":466,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4079:15:3","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":1260,"src":"4074:20:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":467,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"4098:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1918_$","typeString":"type(library Payload)"}},"id":468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4106:23:3","memberName":"BEHAVIOR_ABORT_ON_ERROR","nodeType":"MemberAccess","referencedDeclaration":1245,"src":"4098:31:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4074:55:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":480,"nodeType":"IfStatement","src":"4070:152:3","trueBody":{"id":479,"nodeType":"Block","src":"4131:91:3","statements":[{"eventCall":{"arguments":[{"id":471,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"4160:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":472,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"4169:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":473,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"4172:8:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4181:10:3","memberName":"returnData","nodeType":"MemberAccess","referencedDeclaration":4988,"src":"4172:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4172:21:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":470,"name":"CallAborted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":162,"src":"4148:11:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes32,uint256,bytes memory)"}},"id":476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4148:46:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":477,"nodeType":"EmitStatement","src":"4143:51:3"},{"id":478,"nodeType":"Break","src":"4206:5:3"}]}}]}},{"eventCall":{"arguments":[{"id":484,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"4257:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":485,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"4266:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":483,"name":"CallSucceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":144,"src":"4243:13:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4243:25:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":487,"nodeType":"EmitStatement","src":"4238:30:3"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":315,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"2619:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":316,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":306,"src":"2623:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2619:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":489,"initializationExpression":{"assignments":[312],"declarations":[{"constant":false,"id":312,"mutability":"mutable","name":"i","nameLocation":"2612:1:3","nodeType":"VariableDeclaration","scope":489,"src":"2604:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":311,"name":"uint256","nodeType":"ElementaryTypeName","src":"2604:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":314,"initialValue":{"hexValue":"30","id":313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2616:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2604:13:3"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2633:3:3","subExpression":{"id":318,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"2633:1:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":320,"nodeType":"ExpressionStatement","src":"2633:3:3"},"nodeType":"ForStatement","src":"2599:1676:3"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"2413:8:3","parameters":{"id":299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":293,"mutability":"mutable","name":"_startingGas","nameLocation":"2435:12:3","nodeType":"VariableDeclaration","scope":491,"src":"2427:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":292,"name":"uint256","nodeType":"ElementaryTypeName","src":"2427:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":295,"mutability":"mutable","name":"_opHash","nameLocation":"2461:7:3","nodeType":"VariableDeclaration","scope":491,"src":"2453:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":294,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2453:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":298,"mutability":"mutable","name":"_decoded","nameLocation":"2497:8:3","nodeType":"VariableDeclaration","scope":491,"src":"2474:31:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":297,"nodeType":"UserDefinedTypeName","pathNode":{"id":296,"name":"Payload.Decoded","nameLocations":["2474:7:3","2482:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"2474:15:3"},"referencedDeclaration":1284,"src":"2474:15:3","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"2421:88:3"},"returnParameters":{"id":300,"nodeType":"ParameterList","parameters":[],"src":"2518:0:3"},"scope":492,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":true,"baseContracts":[{"baseName":{"id":132,"name":"ReentrancyGuard","nameLocations":["519:15:3"],"nodeType":"IdentifierPath","referencedDeclaration":1987,"src":"519:15:3"},"id":133,"nodeType":"InheritanceSpecifier","src":"519:15:3"},{"baseName":{"id":134,"name":"BaseAuth","nameLocations":["536:8:3"],"nodeType":"IdentifierPath","referencedDeclaration":2564,"src":"536:8:3"},"id":135,"nodeType":"InheritanceSpecifier","src":"536:8:3"},{"baseName":{"id":136,"name":"Nonce","nameLocations":["546:5:3"],"nodeType":"IdentifierPath","referencedDeclaration":1142,"src":"546:5:3"},"id":137,"nodeType":"InheritanceSpecifier","src":"546:5:3"}],"canonicalName":"Calls","contractDependencies":[],"contractKind":"contract","documentation":{"id":131,"nodeType":"StructuredDocumentation","src":"376:116:3","text":"@title Calls\n @author Agustin Aguilar, Michael Standen, William Hua\n @notice Contract for executing calls"},"fullyImplemented":false,"linearizedBaseContracts":[492,1142,2564,4241,4631,4749,4732,4532,1987],"name":"Calls","nameLocation":"510:5:3","scope":493,"usedErrors":[179,187,197,1048,1155,1158,1956,2100,2107,2114,2123,2631,2640,2647,2653,2658,2661,4222],"usedEvents":[144,153,162,169,1039,2132]}],"license":"Apache-2.0"}},"src/modules/ERC4337v07.sol":{"id":4,"ast":{"absolutePath":"src/modules/ERC4337v07.sol","id":638,"exportedSymbols":{"Calls":[492],"ERC4337v07":[637],"IAccount":[4516],"IERC1271_MAGIC_VALUE_HASH":[4616],"IEntryPoint":[4705],"PackedUserOperation":[4502],"ReentrancyGuard":[1987]},"nodeType":"SourceUnit","src":"39:1868:4","nodes":[{"id":494,"nodeType":"PragmaDirective","src":"39:24:4","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":496,"nodeType":"ImportDirective","src":"65:36:4","nodes":[],"absolutePath":"src/modules/Calls.sol","file":"./Calls.sol","nameLocation":"-1:-1:-1","scope":638,"sourceUnit":493,"symbolAliases":[{"foreign":{"id":495,"name":"Calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":492,"src":"74:5:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":498,"nodeType":"ImportDirective","src":"103:56:4","nodes":[],"absolutePath":"src/modules/ReentrancyGuard.sol","file":"./ReentrancyGuard.sol","nameLocation":"-1:-1:-1","scope":638,"sourceUnit":1988,"symbolAliases":[{"foreign":{"id":497,"name":"ReentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1987,"src":"112:15:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":501,"nodeType":"ImportDirective","src":"160:74:4","nodes":[],"absolutePath":"src/modules/interfaces/IAccount.sol","file":"./interfaces/IAccount.sol","nameLocation":"-1:-1:-1","scope":638,"sourceUnit":4517,"symbolAliases":[{"foreign":{"id":499,"name":"IAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4516,"src":"169:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":500,"name":"PackedUserOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4502,"src":"179:19:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":503,"nodeType":"ImportDirective","src":"235:70:4","nodes":[],"absolutePath":"src/modules/interfaces/IERC1271.sol","file":"./interfaces/IERC1271.sol","nameLocation":"-1:-1:-1","scope":638,"sourceUnit":4644,"symbolAliases":[{"foreign":{"id":502,"name":"IERC1271_MAGIC_VALUE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"244:25:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":505,"nodeType":"ImportDirective","src":"306:59:4","nodes":[],"absolutePath":"src/modules/interfaces/IEntryPoint.sol","file":"./interfaces/IEntryPoint.sol","nameLocation":"-1:-1:-1","scope":638,"sourceUnit":4706,"symbolAliases":[{"foreign":{"id":504,"name":"IEntryPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4705,"src":"315:11:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":637,"nodeType":"ContractDefinition","src":"465:1441:4","nodes":[{"id":515,"nodeType":"VariableDeclaration","src":"535:51:4","nodes":[],"constant":true,"mutability":"constant","name":"SIG_VALIDATION_FAILED","nameLocation":"561:21:4","scope":637,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":513,"name":"uint256","nodeType":"ElementaryTypeName","src":"535:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"585:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"id":517,"nodeType":"VariableDeclaration","src":"591:35:4","nodes":[],"constant":false,"functionSelector":"a65d69d4","mutability":"immutable","name":"entrypoint","nameLocation":"616:10:4","scope":637,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":516,"name":"address","nodeType":"ElementaryTypeName","src":"591:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":521,"nodeType":"ErrorDefinition","src":"631:45:4","nodes":[],"errorSelector":"1d6ddbf4","name":"InvalidEntryPoint","nameLocation":"637:17:4","parameters":{"id":520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":519,"mutability":"mutable","name":"_entrypoint","nameLocation":"663:11:4","nodeType":"VariableDeclaration","scope":521,"src":"655:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":518,"name":"address","nodeType":"ElementaryTypeName","src":"655:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"654:21:4"}},{"id":523,"nodeType":"ErrorDefinition","src":"679:24:4","nodes":[],"errorSelector":"d13d7835","name":"ERC4337Disabled","nameLocation":"685:15:4","parameters":{"id":522,"nodeType":"ParameterList","parameters":[],"src":"700:2:4"}},{"id":533,"nodeType":"FunctionDefinition","src":"707:76:4","nodes":[],"body":{"id":532,"nodeType":"Block","src":"748:35:4","nodes":[],"statements":[{"expression":{"id":530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":528,"name":"entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"754:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":529,"name":"_entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"767:11:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"754:24:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":531,"nodeType":"ExpressionStatement","src":"754:24:4"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":525,"mutability":"mutable","name":"_entrypoint","nameLocation":"732:11:4","nodeType":"VariableDeclaration","scope":533,"src":"724:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":524,"name":"address","nodeType":"ElementaryTypeName","src":"724:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"718:29:4"},"returnParameters":{"id":527,"nodeType":"ParameterList","parameters":[],"src":"748:0:4"},"scope":637,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":599,"nodeType":"FunctionDefinition","src":"814:660:4","nodes":[],"body":{"id":598,"nodeType":"Block","src":"982:492:4","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":546,"name":"entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"992:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1014:1:4","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":548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1006:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":547,"name":"address","nodeType":"ElementaryTypeName","src":"1006:7:4","typeDescriptions":{}}},"id":550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1006:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"992:24:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":556,"nodeType":"IfStatement","src":"988:69:4","trueBody":{"id":555,"nodeType":"Block","src":"1018:39:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":552,"name":"ERC4337Disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"1033:15:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1033:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":554,"nodeType":"RevertStatement","src":"1026:24:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":557,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1067:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1071:6:4","memberName":"sender","nodeType":"MemberAccess","src":"1067:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":559,"name":"entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"1081:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1067:24:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":567,"nodeType":"IfStatement","src":"1063:81:4","trueBody":{"id":566,"nodeType":"Block","src":"1093:51:4","statements":[{"errorCall":{"arguments":[{"expression":{"id":562,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1126:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1130:6:4","memberName":"sender","nodeType":"MemberAccess","src":"1126:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":561,"name":"InvalidEntryPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":521,"src":"1108:17:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1108:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":565,"nodeType":"RevertStatement","src":"1101:36:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":568,"name":"missingAccountFunds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":541,"src":"1206:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1229:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1206:24:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":584,"nodeType":"IfStatement","src":"1202:123:4","trueBody":{"id":583,"nodeType":"Block","src":"1232:93:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":579,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1312:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4337v07_$637","typeString":"contract ERC4337v07"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4337v07_$637","typeString":"contract ERC4337v07"}],"id":578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1304:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":577,"name":"address","nodeType":"ElementaryTypeName","src":"1304:7:4","typeDescriptions":{}}},"id":580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1304:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":572,"name":"entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"1252:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":571,"name":"IEntryPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4705,"src":"1240:11:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IEntryPoint_$4705_$","typeString":"type(contract IEntryPoint)"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1240:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IEntryPoint_$4705","typeString":"contract IEntryPoint"}},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1264:9:4","memberName":"depositTo","nodeType":"MemberAccess","referencedDeclaration":4704,"src":"1240:33:4","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$__$","typeString":"function (address) payable external"}},"id":576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":575,"name":"missingAccountFunds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":541,"src":"1282:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1240:63:4","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$__$value","typeString":"function (address) payable external"}},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1240:78:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":582,"nodeType":"ExpressionStatement","src":"1240:78:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":586,"name":"userOpHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":539,"src":"1352:10:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":587,"name":"userOp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":537,"src":"1364:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_PackedUserOperation_$4502_calldata_ptr","typeString":"struct PackedUserOperation calldata"}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1371:9:4","memberName":"signature","nodeType":"MemberAccess","referencedDeclaration":4501,"src":"1364:16:4","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":585,"name":"isValidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"1335:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes32,bytes calldata) view returns (bytes4)"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1335:46:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":590,"name":"IERC1271_MAGIC_VALUE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"1385:25:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1335:75:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":595,"nodeType":"IfStatement","src":"1331:124:4","trueBody":{"id":594,"nodeType":"Block","src":"1412:43:4","statements":[{"expression":{"id":592,"name":"SIG_VALIDATION_FAILED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"1427:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":545,"id":593,"nodeType":"Return","src":"1420:28:4"}]}},{"expression":{"hexValue":"30","id":596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1468:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":545,"id":597,"nodeType":"Return","src":"1461:8:4"}]},"baseFunctions":[4515],"documentation":{"id":534,"nodeType":"StructuredDocumentation","src":"787:24:4","text":"@inheritdoc IAccount"},"functionSelector":"19822f7c","implemented":true,"kind":"function","modifiers":[],"name":"validateUserOp","nameLocation":"823:14:4","parameters":{"id":542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":537,"mutability":"mutable","name":"userOp","nameLocation":"872:6:4","nodeType":"VariableDeclaration","scope":599,"src":"843:35:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PackedUserOperation_$4502_calldata_ptr","typeString":"struct PackedUserOperation"},"typeName":{"id":536,"nodeType":"UserDefinedTypeName","pathNode":{"id":535,"name":"PackedUserOperation","nameLocations":["843:19:4"],"nodeType":"IdentifierPath","referencedDeclaration":4502,"src":"843:19:4"},"referencedDeclaration":4502,"src":"843:19:4","typeDescriptions":{"typeIdentifier":"t_struct$_PackedUserOperation_$4502_storage_ptr","typeString":"struct PackedUserOperation"}},"visibility":"internal"},{"constant":false,"id":539,"mutability":"mutable","name":"userOpHash","nameLocation":"892:10:4","nodeType":"VariableDeclaration","scope":599,"src":"884:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":538,"name":"bytes32","nodeType":"ElementaryTypeName","src":"884:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":541,"mutability":"mutable","name":"missingAccountFunds","nameLocation":"916:19:4","nodeType":"VariableDeclaration","scope":599,"src":"908:27:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":540,"name":"uint256","nodeType":"ElementaryTypeName","src":"908:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"837:102:4"},"returnParameters":{"id":545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":544,"mutability":"mutable","name":"validationData","nameLocation":"966:14:4","nodeType":"VariableDeclaration","scope":599,"src":"958:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":543,"name":"uint256","nodeType":"ElementaryTypeName","src":"958:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"957:24:4"},"scope":637,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":636,"nodeType":"FunctionDefinition","src":"1626:277:4","nodes":[],"body":{"id":635,"nodeType":"Block","src":"1704:199:4","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":607,"name":"entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"1714:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1736:1:4","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":609,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1728:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":608,"name":"address","nodeType":"ElementaryTypeName","src":"1728:7:4","typeDescriptions":{}}},"id":611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1728:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1714:24:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":617,"nodeType":"IfStatement","src":"1710:69:4","trueBody":{"id":616,"nodeType":"Block","src":"1740:39:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":613,"name":"ERC4337Disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"1755:15:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1755:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":615,"nodeType":"RevertStatement","src":"1748:24:4"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":618,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1789:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1793:6:4","memberName":"sender","nodeType":"MemberAccess","src":"1789:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":620,"name":"entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":517,"src":"1803:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1789:24:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":628,"nodeType":"IfStatement","src":"1785:81:4","trueBody":{"id":627,"nodeType":"Block","src":"1815:51:4","statements":[{"errorCall":{"arguments":[{"expression":{"id":623,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1848:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1852:6:4","memberName":"sender","nodeType":"MemberAccess","src":"1848:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":622,"name":"InvalidEntryPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":521,"src":"1830:17:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1830:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":626,"nodeType":"RevertStatement","src":"1823:36:4"}]}},{"expression":{"arguments":[{"id":632,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":602,"src":"1889:8:4","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":629,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1872:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4337v07_$637","typeString":"contract ERC4337v07"}},"id":631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1877:11:4","memberName":"selfExecute","nodeType":"MemberAccess","referencedDeclaration":291,"src":"1872:16:4","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) payable external"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1872:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":634,"nodeType":"ExpressionStatement","src":"1872:26:4"}]},"documentation":{"id":600,"nodeType":"StructuredDocumentation","src":"1478:145:4","text":"@notice Execute a user operation\n @param _payload The packed payload\n @dev This is the execute function for the EntryPoint to call."},"functionSelector":"9c145aed","implemented":true,"kind":"function","modifiers":[{"id":605,"kind":"modifierInvocation","modifierName":{"id":604,"name":"nonReentrant","nameLocations":["1691:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":1986,"src":"1691:12:4"},"nodeType":"ModifierInvocation","src":"1691:12:4"}],"name":"executeUserOp","nameLocation":"1635:13:4","parameters":{"id":603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":602,"mutability":"mutable","name":"_payload","nameLocation":"1669:8:4","nodeType":"VariableDeclaration","scope":636,"src":"1654:23:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":601,"name":"bytes","nodeType":"ElementaryTypeName","src":"1654:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1648:33:4"},"returnParameters":{"id":606,"nodeType":"ParameterList","parameters":[],"src":"1704:0:4"},"scope":637,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":true,"baseContracts":[{"baseName":{"id":507,"name":"ReentrancyGuard","nameLocations":["497:15:4"],"nodeType":"IdentifierPath","referencedDeclaration":1987,"src":"497:15:4"},"id":508,"nodeType":"InheritanceSpecifier","src":"497:15:4"},{"baseName":{"id":509,"name":"IAccount","nameLocations":["514:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":4516,"src":"514:8:4"},"id":510,"nodeType":"InheritanceSpecifier","src":"514:8:4"},{"baseName":{"id":511,"name":"Calls","nameLocations":["524:5:4"],"nodeType":"IdentifierPath","referencedDeclaration":492,"src":"524:5:4"},"id":512,"nodeType":"InheritanceSpecifier","src":"524:5:4"}],"canonicalName":"ERC4337v07","contractDependencies":[],"contractKind":"contract","documentation":{"id":506,"nodeType":"StructuredDocumentation","src":"367:98:4","text":"@title ERC4337v07\n @author Agustin Aguilar, Michael Standen\n @notice ERC4337 v7 support"},"fullyImplemented":false,"linearizedBaseContracts":[637,492,1142,2564,4241,4631,4749,4732,4532,4516,1987],"name":"ERC4337v07","nameLocation":"483:10:4","scope":638,"usedErrors":[179,187,197,521,523,1048,1155,1158,1956,2100,2107,2114,2123,2631,2640,2647,2653,2658,2661,4222],"usedEvents":[144,153,162,169,1039,2132]}],"license":"Apache-2.0"}},"src/modules/Hooks.sol":{"id":5,"ast":{"absolutePath":"src/modules/Hooks.sol","id":964,"exportedSymbols":{"Hooks":[963],"IERC1155Receiver":[4611],"IERC223Receiver":[4659],"IERC721Receiver":[4677],"IERC777Receiver":[4697],"SelfAuth":[4241],"Storage":[2051]},"nodeType":"SourceUnit","src":"39:4065:5","nodes":[{"id":639,"nodeType":"PragmaDirective","src":"39:24:5","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":641,"nodeType":"ImportDirective","src":"65:40:5","nodes":[],"absolutePath":"src/modules/Storage.sol","file":"./Storage.sol","nameLocation":"-1:-1:-1","scope":964,"sourceUnit":2052,"symbolAliases":[{"foreign":{"id":640,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"74:7:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":643,"nodeType":"ImportDirective","src":"106:47:5","nodes":[],"absolutePath":"src/modules/auth/SelfAuth.sol","file":"./auth/SelfAuth.sol","nameLocation":"-1:-1:-1","scope":964,"sourceUnit":4242,"symbolAliases":[{"foreign":{"id":642,"name":"SelfAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"115:8:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":645,"nodeType":"ImportDirective","src":"154:69:5","nodes":[],"absolutePath":"src/modules/interfaces/IERC1155Receiver.sol","file":"./interfaces/IERC1155Receiver.sol","nameLocation":"-1:-1:-1","scope":964,"sourceUnit":4612,"symbolAliases":[{"foreign":{"id":644,"name":"IERC1155Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4611,"src":"163:16:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":647,"nodeType":"ImportDirective","src":"224:67:5","nodes":[],"absolutePath":"src/modules/interfaces/IERC223Receiver.sol","file":"./interfaces/IERC223Receiver.sol","nameLocation":"-1:-1:-1","scope":964,"sourceUnit":4660,"symbolAliases":[{"foreign":{"id":646,"name":"IERC223Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"233:15:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":649,"nodeType":"ImportDirective","src":"292:67:5","nodes":[],"absolutePath":"src/modules/interfaces/IERC721Receiver.sol","file":"./interfaces/IERC721Receiver.sol","nameLocation":"-1:-1:-1","scope":964,"sourceUnit":4678,"symbolAliases":[{"foreign":{"id":648,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4677,"src":"301:15:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":651,"nodeType":"ImportDirective","src":"360:67:5","nodes":[],"absolutePath":"src/modules/interfaces/IERC777Receiver.sol","file":"./interfaces/IERC777Receiver.sol","nameLocation":"-1:-1:-1","scope":964,"sourceUnit":4698,"symbolAliases":[{"foreign":{"id":650,"name":"IERC777Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4697,"src":"369:15:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":963,"nodeType":"ContractDefinition","src":"551:3552:5","nodes":[{"id":669,"nodeType":"VariableDeclaration","src":"708:112:5","nodes":[],"constant":true,"documentation":{"id":663,"nodeType":"StructuredDocumentation","src":"652:53:5","text":"@dev keccak256(\"org.arcadeum.module.hooks.hooks\")"},"mutability":"constant","name":"HOOKS_KEY","nameLocation":"733:9:5","scope":963,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":664,"name":"bytes32","nodeType":"ElementaryTypeName","src":"708:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"307862653237613331396566633837333465383965323662613462633935663563373838353834313633623935396630336661303465326437616234623961313230","id":667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"753:66:5","typeDescriptions":{"typeIdentifier":"t_rational_86009473950252262547969855836806914577326462884811868808560270444109208592672_by_1","typeString":"int_const 8600...(69 digits omitted)...2672"},"value":"0xbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a120"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_86009473950252262547969855836806914577326462884811868808560270444109208592672_by_1","typeString":"int_const 8600...(69 digits omitted)...2672"}],"id":666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"745:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":665,"name":"bytes32","nodeType":"ElementaryTypeName","src":"745:7:5","typeDescriptions":{}}},"id":668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"745:75:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":676,"nodeType":"EventDefinition","src":"870:59:5","nodes":[],"anonymous":false,"documentation":{"id":670,"nodeType":"StructuredDocumentation","src":"825:42:5","text":"@notice Emitted when a hook is defined"},"eventSelector":"0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed1","name":"DefinedHook","nameLocation":"876:11:5","parameters":{"id":675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":672,"indexed":false,"mutability":"mutable","name":"selector","nameLocation":"895:8:5","nodeType":"VariableDeclaration","scope":676,"src":"888:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":671,"name":"bytes4","nodeType":"ElementaryTypeName","src":"888:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":674,"indexed":false,"mutability":"mutable","name":"implementation","nameLocation":"913:14:5","nodeType":"VariableDeclaration","scope":676,"src":"905:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":673,"name":"address","nodeType":"ElementaryTypeName","src":"905:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"887:41:5"}},{"id":681,"nodeType":"ErrorDefinition","src":"987:41:5","nodes":[],"documentation":{"id":677,"nodeType":"StructuredDocumentation","src":"933:51:5","text":"@notice Error thrown when a hook already exists"},"errorSelector":"5b4d6d6a","name":"HookAlreadyExists","nameLocation":"993:17:5","parameters":{"id":680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":679,"mutability":"mutable","name":"selector","nameLocation":"1018:8:5","nodeType":"VariableDeclaration","scope":681,"src":"1011:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":678,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1011:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1010:17:5"}},{"id":686,"nodeType":"ErrorDefinition","src":"1085:40:5","nodes":[],"documentation":{"id":682,"nodeType":"StructuredDocumentation","src":"1031:51:5","text":"@notice Error thrown when a hook does not exist"},"errorSelector":"1c3812cc","name":"HookDoesNotExist","nameLocation":"1091:16:5","parameters":{"id":685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":684,"mutability":"mutable","name":"selector","nameLocation":"1115:8:5","nodeType":"VariableDeclaration","scope":686,"src":"1108:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":683,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1108:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1107:17:5"}},{"id":699,"nodeType":"FunctionDefinition","src":"1270:112:5","nodes":[],"body":{"id":698,"nodeType":"Block","src":"1345:37:5","nodes":[],"statements":[{"expression":{"arguments":[{"id":695,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":689,"src":"1368:8:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":694,"name":"_readHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"1358:9:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_address_$","typeString":"function (bytes4) view returns (address)"}},"id":696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1358:19:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":693,"id":697,"nodeType":"Return","src":"1351:26:5"}]},"documentation":{"id":687,"nodeType":"StructuredDocumentation","src":"1129:138:5","text":"@notice Read a hook\n @param selector The selector of the hook\n @return implementation The implementation address of the hook"},"functionSelector":"1a9b2337","implemented":true,"kind":"function","modifiers":[],"name":"readHook","nameLocation":"1279:8:5","parameters":{"id":690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":689,"mutability":"mutable","name":"selector","nameLocation":"1300:8:5","nodeType":"VariableDeclaration","scope":699,"src":"1293:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":688,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1293:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1287:25:5"},"returnParameters":{"id":693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":699,"src":"1336:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":691,"name":"address","nodeType":"ElementaryTypeName","src":"1336:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1335:9:5"},"scope":963,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":729,"nodeType":"FunctionDefinition","src":"1573:224:5","nodes":[],"body":{"id":728,"nodeType":"Block","src":"1657:140:5","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":710,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"1677:8:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":709,"name":"_readHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"1667:9:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_address_$","typeString":"function (bytes4) view returns (address)"}},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1667:19:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1698:1:5","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":713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1690:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":712,"name":"address","nodeType":"ElementaryTypeName","src":"1690:7:5","typeDescriptions":{}}},"id":715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1690:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1667:33:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":722,"nodeType":"IfStatement","src":"1663:88:5","trueBody":{"id":721,"nodeType":"Block","src":"1702:49:5","statements":[{"errorCall":{"arguments":[{"id":718,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"1735:8:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":717,"name":"HookAlreadyExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":681,"src":"1717:17:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes4_$returns$_t_error_$","typeString":"function (bytes4) pure returns (error)"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1717:27:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":720,"nodeType":"RevertStatement","src":"1710:34:5"}]}},{"expression":{"arguments":[{"id":724,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"1767:8:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":725,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":704,"src":"1777:14:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"id":723,"name":"_writeHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"1756:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$","typeString":"function (bytes4,address)"}},"id":726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1756:36:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":727,"nodeType":"ExpressionStatement","src":"1756:36:5"}]},"documentation":{"id":700,"nodeType":"StructuredDocumentation","src":"1386:184:5","text":"@notice Add a hook\n @param selector The selector of the hook\n @param implementation The implementation address of the hook\n @dev Callable only by the contract itself"},"functionSelector":"b93ea7ad","implemented":true,"kind":"function","modifiers":[{"id":707,"kind":"modifierInvocation","modifierName":{"id":706,"name":"onlySelf","nameLocations":["1648:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"1648:8:5"},"nodeType":"ModifierInvocation","src":"1648:8:5"}],"name":"addHook","nameLocation":"1582:7:5","parameters":{"id":705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":702,"mutability":"mutable","name":"selector","nameLocation":"1597:8:5","nodeType":"VariableDeclaration","scope":729,"src":"1590:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":701,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1590:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":704,"mutability":"mutable","name":"implementation","nameLocation":"1615:14:5","nodeType":"VariableDeclaration","scope":729,"src":"1607:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":703,"name":"address","nodeType":"ElementaryTypeName","src":"1607:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1589:41:5"},"returnParameters":{"id":708,"nodeType":"ParameterList","parameters":[],"src":"1657:0:5"},"scope":963,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":760,"nodeType":"FunctionDefinition","src":"1924:206:5","nodes":[],"body":{"id":759,"nodeType":"Block","src":"1995:135:5","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":738,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":732,"src":"2015:8:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":737,"name":"_readHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"2005:9:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_address_$","typeString":"function (bytes4) view returns (address)"}},"id":739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2005:19:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2036:1:5","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":741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2028:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":740,"name":"address","nodeType":"ElementaryTypeName","src":"2028:7:5","typeDescriptions":{}}},"id":743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2028:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2005:33:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":750,"nodeType":"IfStatement","src":"2001:87:5","trueBody":{"id":749,"nodeType":"Block","src":"2040:48:5","statements":[{"errorCall":{"arguments":[{"id":746,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":732,"src":"2072:8:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":745,"name":"HookDoesNotExist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"2055:16:5","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes4_$returns$_t_error_$","typeString":"function (bytes4) pure returns (error)"}},"id":747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2055:26:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":748,"nodeType":"RevertStatement","src":"2048:33:5"}]}},{"expression":{"arguments":[{"id":752,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":732,"src":"2104:8:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[{"hexValue":"30","id":755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2122:1:5","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":754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2114:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":753,"name":"address","nodeType":"ElementaryTypeName","src":"2114:7:5","typeDescriptions":{}}},"id":756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2114:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"id":751,"name":"_writeHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"2093:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes4_$_t_address_$returns$__$","typeString":"function (bytes4,address)"}},"id":757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2093:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":758,"nodeType":"ExpressionStatement","src":"2093:32:5"}]},"documentation":{"id":730,"nodeType":"StructuredDocumentation","src":"1801:120:5","text":"@notice Remove a hook\n @param selector The selector of the hook\n @dev Callable only by the contract itself"},"functionSelector":"4fcf3eca","implemented":true,"kind":"function","modifiers":[{"id":735,"kind":"modifierInvocation","modifierName":{"id":734,"name":"onlySelf","nameLocations":["1986:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"1986:8:5"},"nodeType":"ModifierInvocation","src":"1986:8:5"}],"name":"removeHook","nameLocation":"1933:10:5","parameters":{"id":733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":732,"mutability":"mutable","name":"selector","nameLocation":"1956:8:5","nodeType":"VariableDeclaration","scope":760,"src":"1949:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":731,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1949:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1943:25:5"},"returnParameters":{"id":736,"nodeType":"ParameterList","parameters":[],"src":"1995:0:5"},"scope":963,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":786,"nodeType":"FunctionDefinition","src":"2134:172:5","nodes":[],"body":{"id":785,"nodeType":"Block","src":"2209:97:5","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":775,"name":"HOOKS_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"2269:9:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":778,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":762,"src":"2288:8:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2280:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":776,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2280:7:5","typeDescriptions":{}}},"id":779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2280:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":773,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"2246:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2254:14:5","memberName":"readBytes32Map","nodeType":"MemberAccess","referencedDeclaration":2050,"src":"2246:22:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) view returns (bytes32)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2246:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2238:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":771,"name":"uint256","nodeType":"ElementaryTypeName","src":"2238:7:5","typeDescriptions":{}}},"id":781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2238:61:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2230:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":769,"name":"uint160","nodeType":"ElementaryTypeName","src":"2230:7:5","typeDescriptions":{}}},"id":782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2230:70:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2222:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":767,"name":"address","nodeType":"ElementaryTypeName","src":"2222:7:5","typeDescriptions":{}}},"id":783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2222:79:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":766,"id":784,"nodeType":"Return","src":"2215:86:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_readHook","nameLocation":"2143:9:5","parameters":{"id":763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":762,"mutability":"mutable","name":"selector","nameLocation":"2165:8:5","nodeType":"VariableDeclaration","scope":786,"src":"2158:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":761,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2158:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2152:25:5"},"returnParameters":{"id":766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":765,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":786,"src":"2200:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":764,"name":"address","nodeType":"ElementaryTypeName","src":"2200:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2199:9:5"},"scope":963,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":819,"nodeType":"FunctionDefinition","src":"2310:224:5","nodes":[],"body":{"id":818,"nodeType":"Block","src":"2379:155:5","nodes":[],"statements":[{"expression":{"arguments":[{"id":796,"name":"HOOKS_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"2409:9:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":799,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"2428:8:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2420:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":797,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2420:7:5","typeDescriptions":{}}},"id":800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2420:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"arguments":[{"id":807,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"2463:14:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2455:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":805,"name":"uint160","nodeType":"ElementaryTypeName","src":"2455:7:5","typeDescriptions":{}}},"id":808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2455:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2447:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":803,"name":"uint256","nodeType":"ElementaryTypeName","src":"2447:7:5","typeDescriptions":{}}},"id":809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2447:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2439:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":801,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2439:7:5","typeDescriptions":{}}},"id":810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2439:41:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":793,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"2385:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2393:15:5","memberName":"writeBytes32Map","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"2385:23:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2385:96:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":812,"nodeType":"ExpressionStatement","src":"2385:96:5"},{"eventCall":{"arguments":[{"id":814,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"2504:8:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":815,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"2514:14:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"id":813,"name":"DefinedHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"2492:11:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes4_$_t_address_$returns$__$","typeString":"function (bytes4,address)"}},"id":816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2492:37:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":817,"nodeType":"EmitStatement","src":"2487:42:5"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_writeHook","nameLocation":"2319:10:5","parameters":{"id":791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":788,"mutability":"mutable","name":"selector","nameLocation":"2337:8:5","nodeType":"VariableDeclaration","scope":819,"src":"2330:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":787,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2330:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":790,"mutability":"mutable","name":"implementation","nameLocation":"2355:14:5","nodeType":"VariableDeclaration","scope":819,"src":"2347:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":789,"name":"address","nodeType":"ElementaryTypeName","src":"2347:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2329:41:5"},"returnParameters":{"id":792,"nodeType":"ParameterList","parameters":[],"src":"2379:0:5"},"scope":963,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":840,"nodeType":"FunctionDefinition","src":"2573:160:5","nodes":[],"body":{"id":839,"nodeType":"Block","src":"2683:50:5","nodes":[],"statements":[{"expression":{"expression":{"expression":{"id":835,"name":"Hooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"2696:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hooks_$963_$","typeString":"type(contract Hooks)"}},"id":836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2702:17:5","memberName":"onERC1155Received","nodeType":"MemberAccess","referencedDeclaration":840,"src":"2696:23:5","typeDescriptions":{"typeIdentifier":"t_function_declaration_pure$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function Hooks.onERC1155Received(address,address,uint256,uint256,bytes calldata) pure returns (bytes4)"}},"id":837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2720:8:5","memberName":"selector","nodeType":"MemberAccess","src":"2696:32:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":834,"id":838,"nodeType":"Return","src":"2689:39:5"}]},"baseFunctions":[4592],"documentation":{"id":820,"nodeType":"StructuredDocumentation","src":"2538:32:5","text":"@inheritdoc IERC1155Receiver"},"functionSelector":"f23a6e61","implemented":true,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"2582:17:5","parameters":{"id":831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":822,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":840,"src":"2600:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":821,"name":"address","nodeType":"ElementaryTypeName","src":"2600:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":840,"src":"2609:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":823,"name":"address","nodeType":"ElementaryTypeName","src":"2609:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":826,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":840,"src":"2618:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":825,"name":"uint256","nodeType":"ElementaryTypeName","src":"2618:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":828,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":840,"src":"2627:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":827,"name":"uint256","nodeType":"ElementaryTypeName","src":"2627:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":830,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":840,"src":"2636:14:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":829,"name":"bytes","nodeType":"ElementaryTypeName","src":"2636:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2599:52:5"},"returnParameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":833,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":840,"src":"2675:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":832,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2675:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2674:8:5"},"scope":963,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":863,"nodeType":"FunctionDefinition","src":"2772:216:5","nodes":[],"body":{"id":862,"nodeType":"Block","src":"2933:55:5","nodes":[],"statements":[{"expression":{"expression":{"expression":{"id":858,"name":"Hooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"2946:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hooks_$963_$","typeString":"type(contract Hooks)"}},"id":859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2952:22:5","memberName":"onERC1155BatchReceived","nodeType":"MemberAccess","referencedDeclaration":863,"src":"2946:28:5","typeDescriptions":{"typeIdentifier":"t_function_declaration_pure$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function Hooks.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) pure returns (bytes4)"}},"id":860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2975:8:5","memberName":"selector","nodeType":"MemberAccess","src":"2946:37:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":857,"id":861,"nodeType":"Return","src":"2939:44:5"}]},"baseFunctions":[4610],"documentation":{"id":841,"nodeType":"StructuredDocumentation","src":"2737:32:5","text":"@inheritdoc IERC1155Receiver"},"functionSelector":"bc197c81","implemented":true,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"2781:22:5","parameters":{"id":854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":863,"src":"2809:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":842,"name":"address","nodeType":"ElementaryTypeName","src":"2809:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":845,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":863,"src":"2822:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":844,"name":"address","nodeType":"ElementaryTypeName","src":"2822:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":848,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":863,"src":"2835:18:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":846,"name":"uint256","nodeType":"ElementaryTypeName","src":"2835:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":847,"nodeType":"ArrayTypeName","src":"2835:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":863,"src":"2859:18:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":849,"name":"uint256","nodeType":"ElementaryTypeName","src":"2859:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":850,"nodeType":"ArrayTypeName","src":"2859:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":853,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":863,"src":"2883:14:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":852,"name":"bytes","nodeType":"ElementaryTypeName","src":"2883:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2803:98:5"},"returnParameters":{"id":857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":863,"src":"2925:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":855,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2925:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2924:8:5"},"scope":963,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":880,"nodeType":"FunctionDefinition","src":"3026:174:5","nodes":[],"body":{"id":879,"nodeType":"Block","src":"3197:3:5","nodes":[],"statements":[]},"baseFunctions":[4696],"documentation":{"id":864,"nodeType":"StructuredDocumentation","src":"2992:31:5","text":"@inheritdoc IERC777Receiver"},"functionSelector":"0023de29","implemented":true,"kind":"function","modifiers":[],"name":"tokensReceived","nameLocation":"3035:14:5","parameters":{"id":877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":866,"mutability":"mutable","name":"operator","nameLocation":"3063:8:5","nodeType":"VariableDeclaration","scope":880,"src":"3055:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":865,"name":"address","nodeType":"ElementaryTypeName","src":"3055:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":868,"mutability":"mutable","name":"from","nameLocation":"3085:4:5","nodeType":"VariableDeclaration","scope":880,"src":"3077:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":867,"name":"address","nodeType":"ElementaryTypeName","src":"3077:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":870,"mutability":"mutable","name":"to","nameLocation":"3103:2:5","nodeType":"VariableDeclaration","scope":880,"src":"3095:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":869,"name":"address","nodeType":"ElementaryTypeName","src":"3095:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":872,"mutability":"mutable","name":"amount","nameLocation":"3119:6:5","nodeType":"VariableDeclaration","scope":880,"src":"3111:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":871,"name":"uint256","nodeType":"ElementaryTypeName","src":"3111:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":874,"mutability":"mutable","name":"data","nameLocation":"3146:4:5","nodeType":"VariableDeclaration","scope":880,"src":"3131:19:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":873,"name":"bytes","nodeType":"ElementaryTypeName","src":"3131:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":876,"mutability":"mutable","name":"operatorData","nameLocation":"3171:12:5","nodeType":"VariableDeclaration","scope":880,"src":"3156:27:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":875,"name":"bytes","nodeType":"ElementaryTypeName","src":"3156:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3049:138:5"},"returnParameters":{"id":878,"nodeType":"ParameterList","parameters":[],"src":"3197:0:5"},"scope":963,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":899,"nodeType":"FunctionDefinition","src":"3238:149:5","nodes":[],"body":{"id":898,"nodeType":"Block","src":"3338:49:5","nodes":[],"statements":[{"expression":{"expression":{"expression":{"id":894,"name":"Hooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"3351:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hooks_$963_$","typeString":"type(contract Hooks)"}},"id":895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3357:16:5","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":899,"src":"3351:22:5","typeDescriptions":{"typeIdentifier":"t_function_declaration_pure$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function Hooks.onERC721Received(address,address,uint256,bytes calldata) pure returns (bytes4)"}},"id":896,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3374:8:5","memberName":"selector","nodeType":"MemberAccess","src":"3351:31:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":893,"id":897,"nodeType":"Return","src":"3344:38:5"}]},"baseFunctions":[4676],"documentation":{"id":881,"nodeType":"StructuredDocumentation","src":"3204:31:5","text":"@inheritdoc IERC721Receiver"},"functionSelector":"150b7a02","implemented":true,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"3247:16:5","parameters":{"id":890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":899,"src":"3264:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":882,"name":"address","nodeType":"ElementaryTypeName","src":"3264:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":885,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":899,"src":"3273:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":884,"name":"address","nodeType":"ElementaryTypeName","src":"3273:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":899,"src":"3282:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":886,"name":"uint256","nodeType":"ElementaryTypeName","src":"3282:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":889,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":899,"src":"3291:14:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":888,"name":"bytes","nodeType":"ElementaryTypeName","src":"3291:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3263:43:5"},"returnParameters":{"id":893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":892,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":899,"src":"3330:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":891,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3330:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3329:8:5"},"scope":963,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":916,"nodeType":"FunctionDefinition","src":"3425:134:5","nodes":[],"body":{"id":915,"nodeType":"Block","src":"3513:46:5","nodes":[],"statements":[{"expression":{"expression":{"expression":{"id":911,"name":"Hooks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"3526:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Hooks_$963_$","typeString":"type(contract Hooks)"}},"id":912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3532:13:5","memberName":"tokenReceived","nodeType":"MemberAccess","referencedDeclaration":916,"src":"3526:19:5","typeDescriptions":{"typeIdentifier":"t_function_declaration_pure$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function Hooks.tokenReceived(address,uint256,bytes calldata) pure returns (bytes4)"}},"id":913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3546:8:5","memberName":"selector","nodeType":"MemberAccess","src":"3526:28:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":910,"id":914,"nodeType":"Return","src":"3519:35:5"}]},"baseFunctions":[4658],"documentation":{"id":900,"nodeType":"StructuredDocumentation","src":"3391:31:5","text":"@inheritdoc IERC223Receiver"},"functionSelector":"8943ec02","implemented":true,"kind":"function","modifiers":[],"name":"tokenReceived","nameLocation":"3434:13:5","parameters":{"id":907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":902,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":916,"src":"3448:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":901,"name":"address","nodeType":"ElementaryTypeName","src":"3448:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":916,"src":"3457:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":903,"name":"uint256","nodeType":"ElementaryTypeName","src":"3457:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":906,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":916,"src":"3466:14:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":905,"name":"bytes","nodeType":"ElementaryTypeName","src":"3466:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3447:34:5"},"returnParameters":{"id":910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":916,"src":"3505:6:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":908,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3505:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3504:8:5"},"scope":963,"stateMutability":"pure","virtual":false,"visibility":"external"},{"id":957,"nodeType":"FunctionDefinition","src":"3638:392:5","nodes":[],"body":{"id":956,"nodeType":"Block","src":"3666:364:5","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":920,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3676:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3680:4:5","memberName":"data","nodeType":"MemberAccess","src":"3676:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3685:6:5","memberName":"length","nodeType":"MemberAccess","src":"3676:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"34","id":923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3695:1:5","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"3676:20:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":955,"nodeType":"IfStatement","src":"3672:354:5","trueBody":{"id":954,"nodeType":"Block","src":"3698:328:5","statements":[{"assignments":[926],"declarations":[{"constant":false,"id":926,"mutability":"mutable","name":"target","nameLocation":"3714:6:5","nodeType":"VariableDeclaration","scope":954,"src":"3706:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":925,"name":"address","nodeType":"ElementaryTypeName","src":"3706:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":934,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":930,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3740:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3744:4:5","memberName":"data","nodeType":"MemberAccess","src":"3740:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3733:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":928,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3733:6:5","typeDescriptions":{}}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3733:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":927,"name":"_readHook","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"3723:9:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_address_$","typeString":"function (bytes4) view returns (address)"}},"id":933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3723:27:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3706:44:5"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":935,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":926,"src":"3762:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3780:1:5","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":937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3772:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":936,"name":"address","nodeType":"ElementaryTypeName","src":"3772:7:5","typeDescriptions":{}}},"id":939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3772:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3762:20:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":953,"nodeType":"IfStatement","src":"3758:262:5","trueBody":{"id":952,"nodeType":"Block","src":"3784:236:5","statements":[{"assignments":[942,944],"declarations":[{"constant":false,"id":942,"mutability":"mutable","name":"success","nameLocation":"3800:7:5","nodeType":"VariableDeclaration","scope":952,"src":"3795:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":941,"name":"bool","nodeType":"ElementaryTypeName","src":"3795:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":944,"mutability":"mutable","name":"result","nameLocation":"3822:6:5","nodeType":"VariableDeclaration","scope":952,"src":"3809:19:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":943,"name":"bytes","nodeType":"ElementaryTypeName","src":"3809:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":950,"initialValue":{"arguments":[{"expression":{"id":947,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3852:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3856:4:5","memberName":"data","nodeType":"MemberAccess","src":"3852:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":945,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":926,"src":"3832:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3839:12:5","memberName":"delegatecall","nodeType":"MemberAccess","src":"3832:19:5","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":949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3832:29:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3794:67:5"},{"AST":{"nativeSrc":"3880:132:5","nodeType":"YulBlock","src":"3880:132:5","statements":[{"body":{"nativeSrc":"3911:42:5","nodeType":"YulBlock","src":"3911:42:5","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"3924:6:5","nodeType":"YulIdentifier","src":"3924:6:5"},{"kind":"number","nativeSrc":"3932:2:5","nodeType":"YulLiteral","src":"3932:2:5","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3920:3:5","nodeType":"YulIdentifier","src":"3920:3:5"},"nativeSrc":"3920:15:5","nodeType":"YulFunctionCall","src":"3920:15:5"},{"arguments":[{"name":"result","nativeSrc":"3943:6:5","nodeType":"YulIdentifier","src":"3943:6:5"}],"functionName":{"name":"mload","nativeSrc":"3937:5:5","nodeType":"YulIdentifier","src":"3937:5:5"},"nativeSrc":"3937:13:5","nodeType":"YulFunctionCall","src":"3937:13:5"}],"functionName":{"name":"revert","nativeSrc":"3913:6:5","nodeType":"YulIdentifier","src":"3913:6:5"},"nativeSrc":"3913:38:5","nodeType":"YulFunctionCall","src":"3913:38:5"},"nativeSrc":"3913:38:5","nodeType":"YulExpressionStatement","src":"3913:38:5"}]},"condition":{"arguments":[{"name":"success","nativeSrc":"3902:7:5","nodeType":"YulIdentifier","src":"3902:7:5"}],"functionName":{"name":"iszero","nativeSrc":"3895:6:5","nodeType":"YulIdentifier","src":"3895:6:5"},"nativeSrc":"3895:15:5","nodeType":"YulFunctionCall","src":"3895:15:5"},"nativeSrc":"3892:61:5","nodeType":"YulIf","src":"3892:61:5"},{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"3975:6:5","nodeType":"YulIdentifier","src":"3975:6:5"},{"kind":"number","nativeSrc":"3983:2:5","nodeType":"YulLiteral","src":"3983:2:5","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3971:3:5","nodeType":"YulIdentifier","src":"3971:3:5"},"nativeSrc":"3971:15:5","nodeType":"YulFunctionCall","src":"3971:15:5"},{"arguments":[{"name":"result","nativeSrc":"3994:6:5","nodeType":"YulIdentifier","src":"3994:6:5"}],"functionName":{"name":"mload","nativeSrc":"3988:5:5","nodeType":"YulIdentifier","src":"3988:5:5"},"nativeSrc":"3988:13:5","nodeType":"YulFunctionCall","src":"3988:13:5"}],"functionName":{"name":"return","nativeSrc":"3964:6:5","nodeType":"YulIdentifier","src":"3964:6:5"},"nativeSrc":"3964:38:5","nodeType":"YulFunctionCall","src":"3964:38:5"},"nativeSrc":"3964:38:5","nodeType":"YulExpressionStatement","src":"3964:38:5"}]},"evmVersion":"paris","externalReferences":[{"declaration":944,"isOffset":false,"isSlot":false,"src":"3924:6:5","valueSize":1},{"declaration":944,"isOffset":false,"isSlot":false,"src":"3943:6:5","valueSize":1},{"declaration":944,"isOffset":false,"isSlot":false,"src":"3975:6:5","valueSize":1},{"declaration":944,"isOffset":false,"isSlot":false,"src":"3994:6:5","valueSize":1},{"declaration":942,"isOffset":false,"isSlot":false,"src":"3902:7:5","valueSize":1}],"id":951,"nodeType":"InlineAssembly","src":"3871:141:5"}]}}]}}]},"documentation":{"id":917,"nodeType":"StructuredDocumentation","src":"3563:72:5","text":"@notice Fallback function\n @dev Handles delegate calls to hooks"},"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":918,"nodeType":"ParameterList","parameters":[],"src":"3646:2:5"},"returnParameters":{"id":919,"nodeType":"ParameterList","parameters":[],"src":"3666:0:5"},"scope":963,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":962,"nodeType":"FunctionDefinition","src":"4070:30:5","nodes":[],"body":{"id":961,"nodeType":"Block","src":"4097:3:5","nodes":[],"statements":[]},"documentation":{"id":958,"nodeType":"StructuredDocumentation","src":"4034:33:5","text":"@notice Receive native tokens"},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":959,"nodeType":"ParameterList","parameters":[],"src":"4077:2:5"},"returnParameters":{"id":960,"nodeType":"ParameterList","parameters":[],"src":"4097:0:5"},"scope":963,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":653,"name":"SelfAuth","nameLocations":["569:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":4241,"src":"569:8:5"},"id":654,"nodeType":"InheritanceSpecifier","src":"569:8:5"},{"baseName":{"id":655,"name":"IERC1155Receiver","nameLocations":["579:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":4611,"src":"579:16:5"},"id":656,"nodeType":"InheritanceSpecifier","src":"579:16:5"},{"baseName":{"id":657,"name":"IERC777Receiver","nameLocations":["597:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":4697,"src":"597:15:5"},"id":658,"nodeType":"InheritanceSpecifier","src":"597:15:5"},{"baseName":{"id":659,"name":"IERC721Receiver","nameLocations":["614:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":4677,"src":"614:15:5"},"id":660,"nodeType":"InheritanceSpecifier","src":"614:15:5"},{"baseName":{"id":661,"name":"IERC223Receiver","nameLocations":["631:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":4659,"src":"631:15:5"},"id":662,"nodeType":"InheritanceSpecifier","src":"631:15:5"}],"canonicalName":"Hooks","contractDependencies":[],"contractKind":"contract","documentation":{"id":652,"nodeType":"StructuredDocumentation","src":"429:122:5","text":"@title Hooks\n @author Agustin Aguilar, Michael Standen\n @notice Enables extension of the wallet by adding hooks"},"fullyImplemented":true,"linearizedBaseContracts":[963,4659,4677,4697,4611,4241],"name":"Hooks","nameLocation":"560:5:5","scope":964,"usedErrors":[681,686,4222],"usedEvents":[676]}],"license":"Apache-2.0"}},"src/modules/Implementation.sol":{"id":6,"ast":{"absolutePath":"src/modules/Implementation.sol","id":1028,"exportedSymbols":{"Implementation":[1027],"SelfAuth":[4241]},"nodeType":"SourceUnit","src":"39:1268:6","nodes":[{"id":965,"nodeType":"PragmaDirective","src":"39:24:6","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":967,"nodeType":"ImportDirective","src":"65:47:6","nodes":[],"absolutePath":"src/modules/auth/SelfAuth.sol","file":"./auth/SelfAuth.sol","nameLocation":"-1:-1:-1","scope":1028,"sourceUnit":4242,"symbolAliases":[{"foreign":{"id":966,"name":"SelfAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"74:8:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1027,"nodeType":"ContractDefinition","src":"237:1069:6","nodes":[{"id":975,"nodeType":"EventDefinition","src":"335:55:6","nodes":[],"anonymous":false,"documentation":{"id":971,"nodeType":"StructuredDocumentation","src":"278:54:6","text":"@notice Emitted when the implementation is updated"},"eventSelector":"310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca03","name":"ImplementationUpdated","nameLocation":"341:21:6","parameters":{"id":974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":973,"indexed":false,"mutability":"mutable","name":"newImplementation","nameLocation":"371:17:6","nodeType":"VariableDeclaration","scope":975,"src":"363:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":972,"name":"address","nodeType":"ElementaryTypeName","src":"363:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"362:27:6"}},{"id":988,"nodeType":"FunctionDefinition","src":"534:146:6","nodes":[],"body":{"id":987,"nodeType":"Block","src":"631:49:6","nodes":[],"statements":[{"expression":{"arguments":[{"id":984,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":978,"src":"659:15:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":983,"name":"_updateImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1012,"src":"637:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"637:38:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":986,"nodeType":"ExpressionStatement","src":"637:38:6"}]},"documentation":{"id":976,"nodeType":"StructuredDocumentation","src":"394:137:6","text":"@notice Update the implementation\n @param _implementation The new implementation\n @dev Callable only by the contract itself"},"functionSelector":"025b22bc","implemented":true,"kind":"function","modifiers":[{"id":981,"kind":"modifierInvocation","modifierName":{"id":980,"name":"onlySelf","nameLocations":["622:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"622:8:6"},"nodeType":"ModifierInvocation","src":"622:8:6"}],"name":"updateImplementation","nameLocation":"543:20:6","parameters":{"id":979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":978,"mutability":"mutable","name":"_implementation","nameLocation":"577:15:6","nodeType":"VariableDeclaration","scope":988,"src":"569:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":977,"name":"address","nodeType":"ElementaryTypeName","src":"569:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"563:33:6"},"returnParameters":{"id":982,"nodeType":"ParameterList","parameters":[],"src":"631:0:6"},"scope":1027,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":998,"nodeType":"FunctionDefinition","src":"769:107:6","nodes":[],"body":{"id":997,"nodeType":"Block","src":"838:38:6","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":994,"name":"_getImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"851:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"851:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":993,"id":996,"nodeType":"Return","src":"844:27:6"}]},"documentation":{"id":989,"nodeType":"StructuredDocumentation","src":"684:82:6","text":"@notice Get the implementation\n @return implementation The implementation"},"functionSelector":"aaf10f42","implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"778:17:6","parameters":{"id":990,"nodeType":"ParameterList","parameters":[],"src":"795:2:6"},"returnParameters":{"id":993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":992,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":998,"src":"829:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":991,"name":"address","nodeType":"ElementaryTypeName","src":"829:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"828:9:6"},"scope":1027,"stateMutability":"view","virtual":true,"visibility":"external"},{"id":1012,"nodeType":"FunctionDefinition","src":"880:176:6","nodes":[],"body":{"id":1011,"nodeType":"Block","src":"961:95:6","nodes":[],"statements":[{"expression":{"arguments":[{"id":1004,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"986:15:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1003,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"967:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"967:35:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1006,"nodeType":"ExpressionStatement","src":"967:35:6"},{"eventCall":{"arguments":[{"id":1008,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"1035:15:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1007,"name":"ImplementationUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"1013:21:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1013:38:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1010,"nodeType":"EmitStatement","src":"1008:43:6"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_updateImplementation","nameLocation":"889:21:6","parameters":{"id":1001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1000,"mutability":"mutable","name":"_implementation","nameLocation":"924:15:6","nodeType":"VariableDeclaration","scope":1012,"src":"916:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":999,"name":"address","nodeType":"ElementaryTypeName","src":"916:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"910:33:6"},"returnParameters":{"id":1002,"nodeType":"ParameterList","parameters":[],"src":"961:0:6"},"scope":1027,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":1019,"nodeType":"FunctionDefinition","src":"1060:115:6","nodes":[],"body":{"id":1018,"nodeType":"Block","src":"1119:56:6","nodes":[],"statements":[{"AST":{"nativeSrc":"1134:37:6","nodeType":"YulBlock","src":"1134:37:6","statements":[{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"address","nativeSrc":"1149:7:6","nodeType":"YulIdentifier","src":"1149:7:6"},"nativeSrc":"1149:9:6","nodeType":"YulFunctionCall","src":"1149:9:6"},{"name":"_imp","nativeSrc":"1160:4:6","nodeType":"YulIdentifier","src":"1160:4:6"}],"functionName":{"name":"sstore","nativeSrc":"1142:6:6","nodeType":"YulIdentifier","src":"1142:6:6"},"nativeSrc":"1142:23:6","nodeType":"YulFunctionCall","src":"1142:23:6"},"nativeSrc":"1142:23:6","nodeType":"YulExpressionStatement","src":"1142:23:6"}]},"evmVersion":"paris","externalReferences":[{"declaration":1014,"isOffset":false,"isSlot":false,"src":"1160:4:6","valueSize":1}],"id":1017,"nodeType":"InlineAssembly","src":"1125:46:6"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1069:18:6","parameters":{"id":1015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1014,"mutability":"mutable","name":"_imp","nameLocation":"1101:4:6","nodeType":"VariableDeclaration","scope":1019,"src":"1093:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1013,"name":"address","nodeType":"ElementaryTypeName","src":"1093:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1087:22:6"},"returnParameters":{"id":1016,"nodeType":"ParameterList","parameters":[],"src":"1119:0:6"},"scope":1027,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1026,"nodeType":"FunctionDefinition","src":"1179:124:6","nodes":[],"body":{"id":1025,"nodeType":"Block","src":"1246:57:6","nodes":[],"statements":[{"AST":{"nativeSrc":"1261:38:6","nodeType":"YulBlock","src":"1261:38:6","statements":[{"nativeSrc":"1269:24:6","nodeType":"YulAssignment","src":"1269:24:6","value":{"arguments":[{"arguments":[],"functionName":{"name":"address","nativeSrc":"1283:7:6","nodeType":"YulIdentifier","src":"1283:7:6"},"nativeSrc":"1283:9:6","nodeType":"YulFunctionCall","src":"1283:9:6"}],"functionName":{"name":"sload","nativeSrc":"1277:5:6","nodeType":"YulIdentifier","src":"1277:5:6"},"nativeSrc":"1277:16:6","nodeType":"YulFunctionCall","src":"1277:16:6"},"variableNames":[{"name":"_imp","nativeSrc":"1269:4:6","nodeType":"YulIdentifier","src":"1269:4:6"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1022,"isOffset":false,"isSlot":false,"src":"1269:4:6","valueSize":1}],"id":1024,"nodeType":"InlineAssembly","src":"1252:47:6"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getImplementation","nameLocation":"1188:18:6","parameters":{"id":1020,"nodeType":"ParameterList","parameters":[],"src":"1206:2:6"},"returnParameters":{"id":1023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1022,"mutability":"mutable","name":"_imp","nameLocation":"1240:4:6","nodeType":"VariableDeclaration","scope":1026,"src":"1232:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1021,"name":"address","nodeType":"ElementaryTypeName","src":"1232:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1231:14:6"},"scope":1027,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":969,"name":"SelfAuth","nameLocations":["264:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":4241,"src":"264:8:6"},"id":970,"nodeType":"InheritanceSpecifier","src":"264:8:6"}],"canonicalName":"Implementation","contractDependencies":[],"contractKind":"contract","documentation":{"id":968,"nodeType":"StructuredDocumentation","src":"114:123:6","text":"@title Implementation\n @author Agustin Aguilar\n @notice Manages the implementation address of the proxy contract"},"fullyImplemented":true,"linearizedBaseContracts":[1027,4241],"name":"Implementation","nameLocation":"246:14:6","scope":1028,"usedErrors":[4222],"usedEvents":[975]}],"license":"Apache-2.0"}},"src/modules/Nonce.sol":{"id":7,"ast":{"absolutePath":"src/modules/Nonce.sol","id":1143,"exportedSymbols":{"Nonce":[1142],"Storage":[2051]},"nodeType":"SourceUnit","src":"39:1338:7","nodes":[{"id":1029,"nodeType":"PragmaDirective","src":"39:24:7","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":1031,"nodeType":"ImportDirective","src":"65:40:7","nodes":[],"absolutePath":"src/modules/Storage.sol","file":"./Storage.sol","nameLocation":"-1:-1:-1","scope":1143,"sourceUnit":2052,"symbolAliases":[{"foreign":{"id":1030,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"74:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1142,"nodeType":"ContractDefinition","src":"196:1180:7","nodes":[{"id":1039,"nodeType":"EventDefinition","src":"264:53:7","nodes":[],"anonymous":false,"documentation":{"id":1033,"nodeType":"StructuredDocumentation","src":"216:45:7","text":"@notice Emitted when the nonce is changed"},"eventSelector":"1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881","name":"NonceChange","nameLocation":"270:11:7","parameters":{"id":1038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1035,"indexed":false,"mutability":"mutable","name":"_space","nameLocation":"290:6:7","nodeType":"VariableDeclaration","scope":1039,"src":"282:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1034,"name":"uint256","nodeType":"ElementaryTypeName","src":"282:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1037,"indexed":false,"mutability":"mutable","name":"_newNonce","nameLocation":"306:9:7","nodeType":"VariableDeclaration","scope":1039,"src":"298:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1036,"name":"uint256","nodeType":"ElementaryTypeName","src":"298:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"281:35:7"}},{"id":1048,"nodeType":"ErrorDefinition","src":"370:68:7","nodes":[],"documentation":{"id":1040,"nodeType":"StructuredDocumentation","src":"321:46:7","text":"@notice Error thrown when the nonce is bad"},"errorSelector":"9b6514f4","name":"BadNonce","nameLocation":"376:8:7","parameters":{"id":1047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1042,"mutability":"mutable","name":"_space","nameLocation":"393:6:7","nodeType":"VariableDeclaration","scope":1048,"src":"385:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1041,"name":"uint256","nodeType":"ElementaryTypeName","src":"385:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1044,"mutability":"mutable","name":"_provided","nameLocation":"409:9:7","nodeType":"VariableDeclaration","scope":1048,"src":"401:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1043,"name":"uint256","nodeType":"ElementaryTypeName","src":"401:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1046,"mutability":"mutable","name":"_current","nameLocation":"428:8:7","nodeType":"VariableDeclaration","scope":1048,"src":"420:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1045,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"384:53:7"}},{"id":1055,"nodeType":"VariableDeclaration","src":"498:112:7","nodes":[],"constant":true,"documentation":{"id":1049,"nodeType":"StructuredDocumentation","src":"442:53:7","text":"@dev keccak256(\"org.arcadeum.module.calls.nonce\")"},"mutability":"constant","name":"NONCE_KEY","nameLocation":"523:9:7","scope":1142,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1050,"name":"bytes32","nodeType":"ElementaryTypeName","src":"498:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"307838643062663166643632336436323863373431333632633132383939343865353762336532393035323138633637366433653639616265653336643661653265","id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"543:66:7","typeDescriptions":{"typeIdentifier":"t_rational_63797217120035063192835264220719863994123296260065566452921212441289018486318_by_1","typeString":"int_const 6379...(69 digits omitted)...6318"},"value":"0x8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_63797217120035063192835264220719863994123296260065566452921212441289018486318_by_1","typeString":"int_const 6379...(69 digits omitted)...6318"}],"id":1052,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"535:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1051,"name":"bytes32","nodeType":"ElementaryTypeName","src":"535:7:7","typeDescriptions":{}}},"id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"535:75:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":1076,"nodeType":"FunctionDefinition","src":"704:158:7","nodes":[],"body":{"id":1075,"nodeType":"Block","src":"785:77:7","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":1067,"name":"NONCE_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1055,"src":"829:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":1070,"name":"_space","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1058,"src":"848:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"840:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1068,"name":"bytes32","nodeType":"ElementaryTypeName","src":"840:7:7","typeDescriptions":{}}},"id":1071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"840:15:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1065,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"806:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":1066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"814:14:7","memberName":"readBytes32Map","nodeType":"MemberAccess","referencedDeclaration":2050,"src":"806:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) view returns (bytes32)"}},"id":1072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"806:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1064,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"798:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1063,"name":"uint256","nodeType":"ElementaryTypeName","src":"798:7:7","typeDescriptions":{}}},"id":1073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"798:59:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1062,"id":1074,"nodeType":"Return","src":"791:66:7"}]},"documentation":{"id":1056,"nodeType":"StructuredDocumentation","src":"615:86:7","text":"@notice Read the nonce\n @param _space The space\n @return nonce The nonce"},"functionSelector":"8c3f5563","implemented":true,"kind":"function","modifiers":[],"name":"readNonce","nameLocation":"713:9:7","parameters":{"id":1059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1058,"mutability":"mutable","name":"_space","nameLocation":"736:6:7","nodeType":"VariableDeclaration","scope":1076,"src":"728:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1057,"name":"uint256","nodeType":"ElementaryTypeName","src":"728:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"722:24:7"},"returnParameters":{"id":1062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1061,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1076,"src":"776:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1060,"name":"uint256","nodeType":"ElementaryTypeName","src":"776:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"775:9:7"},"scope":1142,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":1098,"nodeType":"FunctionDefinition","src":"866:141:7","nodes":[],"body":{"id":1097,"nodeType":"Block","src":"928:79:7","nodes":[],"statements":[{"expression":{"arguments":[{"id":1086,"name":"NONCE_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1055,"src":"958:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":1089,"name":"_space","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"977:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1088,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"969:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1087,"name":"bytes32","nodeType":"ElementaryTypeName","src":"969:7:7","typeDescriptions":{}}},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"969:15:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":1093,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"994:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1092,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"986:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1091,"name":"bytes32","nodeType":"ElementaryTypeName","src":"986:7:7","typeDescriptions":{}}},"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"986:15:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1083,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"934:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":1085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"942:15:7","memberName":"writeBytes32Map","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"934:23:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":1095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"934:68:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1096,"nodeType":"ExpressionStatement","src":"934:68:7"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_writeNonce","nameLocation":"875:11:7","parameters":{"id":1081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1078,"mutability":"mutable","name":"_space","nameLocation":"895:6:7","nodeType":"VariableDeclaration","scope":1098,"src":"887:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1077,"name":"uint256","nodeType":"ElementaryTypeName","src":"887:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1080,"mutability":"mutable","name":"_nonce","nameLocation":"911:6:7","nodeType":"VariableDeclaration","scope":1098,"src":"903:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1079,"name":"uint256","nodeType":"ElementaryTypeName","src":"903:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"886:32:7"},"returnParameters":{"id":1082,"nodeType":"ParameterList","parameters":[],"src":"928:0:7"},"scope":1142,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":1141,"nodeType":"FunctionDefinition","src":"1011:362:7","nodes":[],"body":{"id":1140,"nodeType":"Block","src":"1075:298:7","nodes":[],"statements":[{"assignments":[1106],"declarations":[{"constant":false,"id":1106,"mutability":"mutable","name":"currentNonce","nameLocation":"1089:12:7","nodeType":"VariableDeclaration","scope":1140,"src":"1081:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1105,"name":"uint256","nodeType":"ElementaryTypeName","src":"1081:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1110,"initialValue":{"arguments":[{"id":1108,"name":"_space","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"1114:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1107,"name":"readNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1076,"src":"1104:9:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":1109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1104:17:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1081:40:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1111,"name":"currentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1106,"src":"1131:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1112,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1102,"src":"1147:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1131:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1121,"nodeType":"IfStatement","src":"1127:88:7","trueBody":{"id":1120,"nodeType":"Block","src":"1155:60:7","statements":[{"errorCall":{"arguments":[{"id":1115,"name":"_space","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"1179:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1116,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1102,"src":"1187:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1117,"name":"currentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1106,"src":"1195:12:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1114,"name":"BadNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1048,"src":"1170:8:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256,uint256) pure returns (error)"}},"id":1118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1170:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1119,"nodeType":"RevertStatement","src":"1163:45:7"}]}},{"id":1139,"nodeType":"UncheckedBlock","src":"1221:148:7","statements":[{"assignments":[1123],"declarations":[{"constant":false,"id":1123,"mutability":"mutable","name":"newNonce","nameLocation":"1247:8:7","nodeType":"VariableDeclaration","scope":1139,"src":"1239:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1122,"name":"uint256","nodeType":"ElementaryTypeName","src":"1239:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1127,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1124,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1102,"src":"1258:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1267:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1258:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1239:29:7"},{"expression":{"arguments":[{"id":1129,"name":"_space","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"1289:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1130,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1123,"src":"1297:8:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1128,"name":"_writeNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1098,"src":"1277:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":1131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1277:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1132,"nodeType":"ExpressionStatement","src":"1277:29:7"},{"eventCall":{"arguments":[{"id":1134,"name":"_space","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"1331:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1135,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1123,"src":"1339:8:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1133,"name":"NonceChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1039,"src":"1319:11:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1319:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1137,"nodeType":"EmitStatement","src":"1314:34:7"},{"functionReturnParameters":1104,"id":1138,"nodeType":"Return","src":"1356:7:7"}]}]},"implemented":true,"kind":"function","modifiers":[],"name":"_consumeNonce","nameLocation":"1020:13:7","parameters":{"id":1103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1100,"mutability":"mutable","name":"_space","nameLocation":"1042:6:7","nodeType":"VariableDeclaration","scope":1141,"src":"1034:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1099,"name":"uint256","nodeType":"ElementaryTypeName","src":"1034:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1102,"mutability":"mutable","name":"_nonce","nameLocation":"1058:6:7","nodeType":"VariableDeclaration","scope":1141,"src":"1050:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1101,"name":"uint256","nodeType":"ElementaryTypeName","src":"1050:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1033:32:7"},"returnParameters":{"id":1104,"nodeType":"ParameterList","parameters":[],"src":"1075:0:7"},"scope":1142,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Nonce","contractDependencies":[],"contractKind":"contract","documentation":{"id":1032,"nodeType":"StructuredDocumentation","src":"107:89:7","text":"@title Nonce\n @author Agustin Aguilar\n @notice Manages the nonce of the wallet"},"fullyImplemented":true,"linearizedBaseContracts":[1142],"name":"Nonce","nameLocation":"205:5:7","scope":1143,"usedErrors":[1048],"usedEvents":[1039]}],"license":"Apache-2.0"}},"src/modules/Payload.sol":{"id":8,"ast":{"absolutePath":"src/modules/Payload.sol","id":1919,"exportedSymbols":{"LibBytes":[4965],"Payload":[1918]},"nodeType":"SourceUnit","src":"39:9934:8","nodes":[{"id":1144,"nodeType":"PragmaDirective","src":"39:24:8","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":1146,"nodeType":"ImportDirective","src":"65:49:8","nodes":[],"absolutePath":"src/utils/LibBytes.sol","file":"../utils/LibBytes.sol","nameLocation":"-1:-1:-1","scope":1919,"sourceUnit":4966,"symbolAliases":[{"foreign":{"id":1145,"name":"LibBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4965,"src":"74:8:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1149,"nodeType":"UsingForDirective","src":"116:25:8","nodes":[],"global":false,"libraryName":{"id":1147,"name":"LibBytes","nameLocations":["122:8:8"],"nodeType":"IdentifierPath","referencedDeclaration":4965,"src":"122:8:8"},"typeName":{"id":1148,"name":"bytes","nodeType":"ElementaryTypeName","src":"135:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"id":1918,"nodeType":"ContractDefinition","src":"275:9697:8","nodes":[{"id":1155,"nodeType":"ErrorDefinition","src":"348:30:8","nodes":[],"documentation":{"id":1151,"nodeType":"StructuredDocumentation","src":"296:49:8","text":"@notice Error thrown when the kind is invalid"},"errorSelector":"04818320","name":"InvalidKind","nameLocation":"354:11:8","parameters":{"id":1154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1153,"mutability":"mutable","name":"kind","nameLocation":"372:4:8","nodeType":"VariableDeclaration","scope":1155,"src":"366:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1152,"name":"uint8","nodeType":"ElementaryTypeName","src":"366:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"365:12:8"}},{"id":1158,"nodeType":"ErrorDefinition","src":"438:28:8","nodes":[],"documentation":{"id":1156,"nodeType":"StructuredDocumentation","src":"382:53:8","text":"@notice Error thrown when the encoding is invalid"},"errorSelector":"0bdf8038","name":"InvalidPackedLength","nameLocation":"444:19:8","parameters":{"id":1157,"nodeType":"ParameterList","parameters":[],"src":"463:2:8"}},{"id":1162,"nodeType":"VariableDeclaration","src":"577:116:8","nodes":[],"constant":true,"documentation":{"id":1159,"nodeType":"StructuredDocumentation","src":"470:104:8","text":"@dev keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\")"},"mutability":"constant","name":"EIP712_DOMAIN_TYPEHASH","nameLocation":"602:22:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1160,"name":"bytes32","nodeType":"ElementaryTypeName","src":"577:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307838623733633363363962623866653364353132656363346366373539636337393233396637623137396230666661636161396137356435323262333934303066","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"627:66:8","typeDescriptions":{"typeIdentifier":"t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1","typeString":"int_const 6307...(69 digits omitted)...1551"},"value":"0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"},"visibility":"private"},{"id":1166,"nodeType":"VariableDeclaration","src":"738:125:8","nodes":[],"constant":true,"documentation":{"id":1163,"nodeType":"StructuredDocumentation","src":"698:37:8","text":"@dev keccak256(\"Sequence Wallet\")"},"mutability":"constant","name":"EIP712_DOMAIN_NAME_SEQUENCE","nameLocation":"763:27:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1164,"name":"bytes32","nodeType":"ElementaryTypeName","src":"738:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307834616134356361376164383235636562316266333536343366306135386332393532333964663536336231623536356332343835663936343737633536333138","id":1165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"797:66:8","typeDescriptions":{"typeIdentifier":"t_rational_33761553195033020586580595614607192138595268542657526595243609892281397895960_by_1","typeString":"int_const 3376...(69 digits omitted)...5960"},"value":"0x4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c56318"},"visibility":"private"},{"id":1170,"nodeType":"VariableDeclaration","src":"894:128:8","nodes":[],"constant":true,"documentation":{"id":1167,"nodeType":"StructuredDocumentation","src":"868:23:8","text":"@dev keccak256(\"3\")"},"mutability":"constant","name":"EIP712_DOMAIN_VERSION_SEQUENCE","nameLocation":"919:30:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1168,"name":"bytes32","nodeType":"ElementaryTypeName","src":"894:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307832613830653165663164373834326632376632653662653039373262623730386239613133356333383836306462653733633237633334383663333466346465","id":1169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"956:66:8","typeDescriptions":{"typeIdentifier":"t_rational_19224855404247632006917173431419498680506051063941070371722880450128577361118_by_1","typeString":"int_const 1922...(69 digits omitted)...1118"},"value":"0x2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de"},"visibility":"private"},{"id":1201,"nodeType":"FunctionDefinition","src":"1027:351:8","nodes":[],"body":{"id":1200,"nodeType":"Block","src":"1135:243:8","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":1182,"name":"EIP712_DOMAIN_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"1185:22:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1183,"name":"EIP712_DOMAIN_NAME_SEQUENCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"1217:27:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1184,"name":"EIP712_DOMAIN_VERSION_SEQUENCE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"1254:30:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"condition":{"id":1185,"name":"_noChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1172,"src":"1294:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"expression":{"id":1192,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1328:5:8","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1334:7:8","memberName":"chainid","nodeType":"MemberAccess","src":"1328:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1320:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1190,"name":"uint256","nodeType":"ElementaryTypeName","src":"1320:7:8","typeDescriptions":{}}},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1320:22:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1294:48:8","trueExpression":{"arguments":[{"hexValue":"30","id":1188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1187,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1307:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1186,"name":"uint256","nodeType":"ElementaryTypeName","src":"1307:7:8","typeDescriptions":{}}},"id":1189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1307:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1196,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1174,"src":"1352:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1180,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1165:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1169:6:8","memberName":"encode","nodeType":"MemberAccess","src":"1165:10:8","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1165:202:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1179,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1148:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1148:225:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1178,"id":1199,"nodeType":"Return","src":"1141:232:8"}]},"implemented":true,"kind":"function","modifiers":[],"name":"domainSeparator","nameLocation":"1036:15:8","parameters":{"id":1175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1172,"mutability":"mutable","name":"_noChainId","nameLocation":"1057:10:8","nodeType":"VariableDeclaration","scope":1201,"src":"1052:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1171,"name":"bool","nodeType":"ElementaryTypeName","src":"1052:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1174,"mutability":"mutable","name":"_wallet","nameLocation":"1077:7:8","nodeType":"VariableDeclaration","scope":1201,"src":"1069:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1173,"name":"address","nodeType":"ElementaryTypeName","src":"1069:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1051:34:8"},"returnParameters":{"id":1178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1177,"mutability":"mutable","name":"_domainSeparator","nameLocation":"1117:16:8","nodeType":"VariableDeclaration","scope":1201,"src":"1109:24:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1176,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1109:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1108:26:8"},"scope":1918,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1205,"nodeType":"VariableDeclaration","src":"1525:107:8","nodes":[],"constant":true,"documentation":{"id":1202,"nodeType":"StructuredDocumentation","src":"1382:140:8","text":"@dev keccak256(\"Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\")"},"mutability":"constant","name":"CALL_TYPEHASH","nameLocation":"1550:13:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1203,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1525:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830363033393835323539613935336461316636356135323266353839633137626431643031313765633164336162623763303738386165663235316566343337","id":1204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1566:66:8","typeDescriptions":{"typeIdentifier":"t_rational_2720228918296723626360963932407871369705396312253585537199823977844291073079_by_1","typeString":"int_const 2720...(68 digits omitted)...3079"},"value":"0x0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437"},"visibility":"private"},{"id":1209,"nodeType":"VariableDeclaration","src":"1845:108:8","nodes":[],"constant":true,"documentation":{"id":1206,"nodeType":"StructuredDocumentation","src":"1637:205:8","text":"@dev keccak256(\"Calls(Call[] calls,uint256 space,uint256 nonce,address[] wallets)Call(address to,uint256 value,bytes data,uint256 gasLimit,bool delegateCall,bool onlyFallback,uint256 behaviorOnError)\")"},"mutability":"constant","name":"CALLS_TYPEHASH","nameLocation":"1870:14:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1207,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1845:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307831316531653430373961373961363665346164653530303333636665323637386364643533343164326466653565663935313365646231613062653134376132","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1887:66:8","typeDescriptions":{"typeIdentifier":"t_rational_8088432818645496868949845499382202138579422833748228835324246952328244053922_by_1","typeString":"int_const 8088...(68 digits omitted)...3922"},"value":"0x11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a2"},"visibility":"private"},{"id":1213,"nodeType":"VariableDeclaration","src":"2023:110:8","nodes":[],"constant":true,"documentation":{"id":1210,"nodeType":"StructuredDocumentation","src":"1958:62:8","text":"@dev keccak256(\"Message(bytes message,address[] wallets)\")"},"mutability":"constant","name":"MESSAGE_TYPEHASH","nameLocation":"2048:16:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1211,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2023:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307865313961336239346663336337656365336638393064393861393962633432323631353533376130386465613036303366613834323538363764383764343636","id":1212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2067:66:8","typeDescriptions":{"typeIdentifier":"t_rational_102042896598880959789982557965414717533526188977275095176186987427015590138982_by_1","typeString":"int_const 1020...(70 digits omitted)...8982"},"value":"0xe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466"},"visibility":"private"},{"id":1217,"nodeType":"VariableDeclaration","src":"2212:116:8","nodes":[],"constant":true,"documentation":{"id":1214,"nodeType":"StructuredDocumentation","src":"2138:71:8","text":"@dev keccak256(\"ConfigUpdate(bytes32 imageHash,address[] wallets)\")"},"mutability":"constant","name":"CONFIG_UPDATE_TYPEHASH","nameLocation":"2237:22:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1215,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2212:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307831316664656237653833373361316161393662666163386430656139313532366232633564313565356365653230653035343365373830323538663365386534","id":1216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2262:66:8","typeDescriptions":{"typeIdentifier":"t_rational_8137956054492713933634491153494727094918514662285841049577704819443807545572_by_1","typeString":"int_const 8137...(68 digits omitted)...5572"},"value":"0x11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4"},"visibility":"private"},{"id":1221,"nodeType":"VariableDeclaration","src":"2367:46:8","nodes":[],"constant":true,"documentation":{"id":1218,"nodeType":"StructuredDocumentation","src":"2333:31:8","text":"@notice Kind of transaction"},"functionSelector":"075a3d2d","mutability":"constant","name":"KIND_TRANSACTIONS","nameLocation":"2389:17:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1219,"name":"uint8","nodeType":"ElementaryTypeName","src":"2367:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783030","id":1220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2409:4:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"id":1225,"nodeType":"VariableDeclaration","src":"2446:41:8","nodes":[],"constant":true,"documentation":{"id":1222,"nodeType":"StructuredDocumentation","src":"2417:26:8","text":"@notice Kind of digest"},"functionSelector":"3d5c1f9b","mutability":"constant","name":"KIND_MESSAGE","nameLocation":"2468:12:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1223,"name":"uint8","nodeType":"ElementaryTypeName","src":"2446:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783031","id":1224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2483:4:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"public"},{"id":1229,"nodeType":"VariableDeclaration","src":"2527:47:8","nodes":[],"constant":true,"documentation":{"id":1226,"nodeType":"StructuredDocumentation","src":"2491:33:8","text":"@notice Kind of config update"},"functionSelector":"0739d59a","mutability":"constant","name":"KIND_CONFIG_UPDATE","nameLocation":"2549:18:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1227,"name":"uint8","nodeType":"ElementaryTypeName","src":"2527:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783032","id":1228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2570:4:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"visibility":"public"},{"id":1233,"nodeType":"VariableDeclaration","src":"2608:40:8","nodes":[],"constant":true,"documentation":{"id":1230,"nodeType":"StructuredDocumentation","src":"2578:27:8","text":"@notice Kind of message"},"functionSelector":"b570180a","mutability":"constant","name":"KIND_DIGEST","nameLocation":"2630:11:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1231,"name":"uint8","nodeType":"ElementaryTypeName","src":"2608:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783033","id":1232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2644:4:8","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x03"},"visibility":"public"},{"id":1237,"nodeType":"VariableDeclaration","src":"2699:50:8","nodes":[],"constant":true,"documentation":{"id":1234,"nodeType":"StructuredDocumentation","src":"2653:43:8","text":"@notice Behavior on error: ignore error"},"functionSelector":"4a7d2aa0","mutability":"constant","name":"BEHAVIOR_IGNORE_ERROR","nameLocation":"2721:21:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1235,"name":"uint8","nodeType":"ElementaryTypeName","src":"2699:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783030","id":1236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2745:4:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"id":1241,"nodeType":"VariableDeclaration","src":"2802:53:8","nodes":[],"constant":true,"documentation":{"id":1238,"nodeType":"StructuredDocumentation","src":"2753:46:8","text":"@notice Behavior on error: revert on error"},"functionSelector":"4e5f5715","mutability":"constant","name":"BEHAVIOR_REVERT_ON_ERROR","nameLocation":"2824:24:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1239,"name":"uint8","nodeType":"ElementaryTypeName","src":"2802:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783031","id":1240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2851:4:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"public"},{"id":1245,"nodeType":"VariableDeclaration","src":"2907:52:8","nodes":[],"constant":true,"documentation":{"id":1242,"nodeType":"StructuredDocumentation","src":"2859:45:8","text":"@notice Behavior on error: abort on error"},"functionSelector":"420b0c25","mutability":"constant","name":"BEHAVIOR_ABORT_ON_ERROR","nameLocation":"2929:23:8","scope":1918,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1243,"name":"uint8","nodeType":"ElementaryTypeName","src":"2907:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"30783032","id":1244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2955:4:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"visibility":"public"},{"id":1261,"nodeType":"StructDefinition","src":"3374:165:8","nodes":[],"canonicalName":"Payload.Call","documentation":{"id":1246,"nodeType":"StructuredDocumentation","src":"2964:407:8","text":"@notice Payload call information\n @param to Address of the target contract\n @param value Value to send with the call\n @param data Data to send with the call\n @param gasLimit Gas limit for the call\n @param delegateCall If the call is a delegate call\n @param onlyFallback If the call should only be executed in an error scenario\n @param behaviorOnError Behavior on error"},"members":[{"constant":false,"id":1248,"mutability":"mutable","name":"to","nameLocation":"3400:2:8","nodeType":"VariableDeclaration","scope":1261,"src":"3392:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1247,"name":"address","nodeType":"ElementaryTypeName","src":"3392:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1250,"mutability":"mutable","name":"value","nameLocation":"3416:5:8","nodeType":"VariableDeclaration","scope":1261,"src":"3408:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1249,"name":"uint256","nodeType":"ElementaryTypeName","src":"3408:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1252,"mutability":"mutable","name":"data","nameLocation":"3433:4:8","nodeType":"VariableDeclaration","scope":1261,"src":"3427:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1251,"name":"bytes","nodeType":"ElementaryTypeName","src":"3427:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1254,"mutability":"mutable","name":"gasLimit","nameLocation":"3451:8:8","nodeType":"VariableDeclaration","scope":1261,"src":"3443:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1253,"name":"uint256","nodeType":"ElementaryTypeName","src":"3443:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1256,"mutability":"mutable","name":"delegateCall","nameLocation":"3470:12:8","nodeType":"VariableDeclaration","scope":1261,"src":"3465:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1255,"name":"bool","nodeType":"ElementaryTypeName","src":"3465:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1258,"mutability":"mutable","name":"onlyFallback","nameLocation":"3493:12:8","nodeType":"VariableDeclaration","scope":1261,"src":"3488:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1257,"name":"bool","nodeType":"ElementaryTypeName","src":"3488:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1260,"mutability":"mutable","name":"behaviorOnError","nameLocation":"3519:15:8","nodeType":"VariableDeclaration","scope":1261,"src":"3511:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1259,"name":"uint256","nodeType":"ElementaryTypeName","src":"3511:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Call","nameLocation":"3381:4:8","scope":1918,"visibility":"public"},{"id":1284,"nodeType":"StructDefinition","src":"4064:323:8","nodes":[],"canonicalName":"Payload.Decoded","documentation":{"id":1262,"nodeType":"StructuredDocumentation","src":"3543:518:8","text":"@notice Decoded payload\n @param kind Kind of payload\n @param noChainId If the chain ID should be omitted\n @param calls Array of calls (transaction kind)\n @param space Nonce space for the calls (transaction kind)\n @param nonce Nonce value for the calls (transaction kind)\n @param message Message to validate (message kind)\n @param imageHash Image hash to update to (config update kind)\n @param digest Digest to validate (digest kind)\n @param parentWallets Parent wallets"},"members":[{"constant":false,"id":1264,"mutability":"mutable","name":"kind","nameLocation":"4091:4:8","nodeType":"VariableDeclaration","scope":1284,"src":"4085:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1263,"name":"uint8","nodeType":"ElementaryTypeName","src":"4085:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1266,"mutability":"mutable","name":"noChainId","nameLocation":"4106:9:8","nodeType":"VariableDeclaration","scope":1284,"src":"4101:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1265,"name":"bool","nodeType":"ElementaryTypeName","src":"4101:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1270,"mutability":"mutable","name":"calls","nameLocation":"4152:5:8","nodeType":"VariableDeclaration","scope":1284,"src":"4145:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_storage_$dyn_storage_ptr","typeString":"struct Payload.Call[]"},"typeName":{"baseType":{"id":1268,"nodeType":"UserDefinedTypeName","pathNode":{"id":1267,"name":"Call","nameLocations":["4145:4:8"],"nodeType":"IdentifierPath","referencedDeclaration":1261,"src":"4145:4:8"},"referencedDeclaration":1261,"src":"4145:4:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_storage_ptr","typeString":"struct Payload.Call"}},"id":1269,"nodeType":"ArrayTypeName","src":"4145:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_storage_$dyn_storage_ptr","typeString":"struct Payload.Call[]"}},"visibility":"internal"},{"constant":false,"id":1272,"mutability":"mutable","name":"space","nameLocation":"4171:5:8","nodeType":"VariableDeclaration","scope":1284,"src":"4163:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1271,"name":"uint256","nodeType":"ElementaryTypeName","src":"4163:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1274,"mutability":"mutable","name":"nonce","nameLocation":"4190:5:8","nodeType":"VariableDeclaration","scope":1284,"src":"4182:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1273,"name":"uint256","nodeType":"ElementaryTypeName","src":"4182:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1276,"mutability":"mutable","name":"message","nameLocation":"4227:7:8","nodeType":"VariableDeclaration","scope":1284,"src":"4221:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1275,"name":"bytes","nodeType":"ElementaryTypeName","src":"4221:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1278,"mutability":"mutable","name":"imageHash","nameLocation":"4274:9:8","nodeType":"VariableDeclaration","scope":1284,"src":"4266:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1277,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4266:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1280,"mutability":"mutable","name":"digest","nameLocation":"4325:6:8","nodeType":"VariableDeclaration","scope":1284,"src":"4317:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1279,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4317:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1283,"mutability":"mutable","name":"parentWallets","nameLocation":"4369:13:8","nodeType":"VariableDeclaration","scope":1284,"src":"4359:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1281,"name":"address","nodeType":"ElementaryTypeName","src":"4359:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1282,"nodeType":"ArrayTypeName","src":"4359:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"name":"Decoded","nameLocation":"4071:7:8","scope":1918,"visibility":"public"},{"id":1305,"nodeType":"FunctionDefinition","src":"4391:170:8","nodes":[],"body":{"id":1304,"nodeType":"Block","src":"4490:71:8","nodes":[],"statements":[{"expression":{"id":1296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1292,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1290,"src":"4496:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1294,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4505:4:8","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":1264,"src":"4496:13:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1295,"name":"KIND_MESSAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1225,"src":"4512:12:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4496:28:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1297,"nodeType":"ExpressionStatement","src":"4496:28:8"},{"expression":{"id":1302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1298,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1290,"src":"4530:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1300,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4539:7:8","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":1276,"src":"4530:16:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1301,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1286,"src":"4549:7:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4530:26:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1303,"nodeType":"ExpressionStatement","src":"4530:26:8"}]},"implemented":true,"kind":"function","modifiers":[],"name":"fromMessage","nameLocation":"4400:11:8","parameters":{"id":1287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1286,"mutability":"mutable","name":"message","nameLocation":"4430:7:8","nodeType":"VariableDeclaration","scope":1305,"src":"4417:20:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1285,"name":"bytes","nodeType":"ElementaryTypeName","src":"4417:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4411:30:8"},"returnParameters":{"id":1291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1290,"mutability":"mutable","name":"_decoded","nameLocation":"4480:8:8","nodeType":"VariableDeclaration","scope":1305,"src":"4465:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1289,"nodeType":"UserDefinedTypeName","pathNode":{"id":1288,"name":"Decoded","nameLocations":["4465:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"4465:7:8"},"referencedDeclaration":1284,"src":"4465:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"4464:25:8"},"scope":1918,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1326,"nodeType":"FunctionDefinition","src":"4565:182:8","nodes":[],"body":{"id":1325,"nodeType":"Block","src":"4666:81:8","nodes":[],"statements":[{"expression":{"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1313,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"4672:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1315,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4681:4:8","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":1264,"src":"4672:13:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1316,"name":"KIND_CONFIG_UPDATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"4688:18:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4672:34:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1318,"nodeType":"ExpressionStatement","src":"4672:34:8"},{"expression":{"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1319,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"4712:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1321,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4721:9:8","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":1278,"src":"4712:18:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1322,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1307,"src":"4733:9:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4712:30:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1324,"nodeType":"ExpressionStatement","src":"4712:30:8"}]},"implemented":true,"kind":"function","modifiers":[],"name":"fromConfigUpdate","nameLocation":"4574:16:8","parameters":{"id":1308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1307,"mutability":"mutable","name":"imageHash","nameLocation":"4604:9:8","nodeType":"VariableDeclaration","scope":1326,"src":"4596:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1306,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4596:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4590:27:8"},"returnParameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"_decoded","nameLocation":"4656:8:8","nodeType":"VariableDeclaration","scope":1326,"src":"4641:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1310,"nodeType":"UserDefinedTypeName","pathNode":{"id":1309,"name":"Decoded","nameLocations":["4641:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"4641:7:8"},"referencedDeclaration":1284,"src":"4641:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"4640:25:8"},"scope":1918,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1347,"nodeType":"FunctionDefinition","src":"4751:160:8","nodes":[],"body":{"id":1346,"nodeType":"Block","src":"4843:68:8","nodes":[],"statements":[{"expression":{"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1334,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"4849:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4858:4:8","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":1264,"src":"4849:13:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1337,"name":"KIND_DIGEST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1233,"src":"4865:11:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4849:27:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1339,"nodeType":"ExpressionStatement","src":"4849:27:8"},{"expression":{"id":1344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1340,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"4882:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4891:6:8","memberName":"digest","nodeType":"MemberAccess","referencedDeclaration":1280,"src":"4882:15:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1343,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1328,"src":"4900:6:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4882:24:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1345,"nodeType":"ExpressionStatement","src":"4882:24:8"}]},"implemented":true,"kind":"function","modifiers":[],"name":"fromDigest","nameLocation":"4760:10:8","parameters":{"id":1329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1328,"mutability":"mutable","name":"digest","nameLocation":"4784:6:8","nodeType":"VariableDeclaration","scope":1347,"src":"4776:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1327,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4776:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4770:24:8"},"returnParameters":{"id":1333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1332,"mutability":"mutable","name":"_decoded","nameLocation":"4833:8:8","nodeType":"VariableDeclaration","scope":1347,"src":"4818:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1331,"nodeType":"UserDefinedTypeName","pathNode":{"id":1330,"name":"Decoded","nameLocations":["4818:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"4818:7:8"},"referencedDeclaration":1284,"src":"4818:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"4817:25:8"},"scope":1918,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1663,"nodeType":"FunctionDefinition","src":"4915:2802:8","nodes":[],"body":{"id":1662,"nodeType":"Block","src":"5019:2698:8","nodes":[],"statements":[{"expression":{"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1355,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"5025:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5034:4:8","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":1264,"src":"5025:13:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1358,"name":"KIND_TRANSACTIONS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1221,"src":"5041:17:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5025:33:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1360,"nodeType":"ExpressionStatement","src":"5025:33:8"},{"assignments":[1362,1364],"declarations":[{"constant":false,"id":1362,"mutability":"mutable","name":"globalFlag","nameLocation":"5102:10:8","nodeType":"VariableDeclaration","scope":1662,"src":"5094:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1361,"name":"uint256","nodeType":"ElementaryTypeName","src":"5094:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1364,"mutability":"mutable","name":"pointer","nameLocation":"5122:7:8","nodeType":"VariableDeclaration","scope":1662,"src":"5114:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1363,"name":"uint256","nodeType":"ElementaryTypeName","src":"5114:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1368,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1365,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"5133:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5140:14:8","memberName":"readFirstUint8","nodeType":"MemberAccess","referencedDeclaration":4775,"src":"5133:21:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint8,uint256)"}},"id":1367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5133:23:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5093:63:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1369,"name":"globalFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1362,"src":"5219:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783031","id":1370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5232:4:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"5219:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783031","id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5240:4:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"5219:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1392,"nodeType":"Block","src":"5285:70:8","statements":[{"expression":{"id":1390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":1381,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"5294:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1383,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5303:5:8","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":1272,"src":"5294:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1384,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"5310:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1385,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5293:25:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1388,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"5340:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1386,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"5321:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5328:11:8","memberName":"readUint160","nodeType":"MemberAccess","referencedDeclaration":4840,"src":"5321:18:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint160_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint160,uint256)"}},"id":1389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5321:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint160_$_t_uint256_$","typeString":"tuple(uint160,uint256)"}},"src":"5293:55:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1391,"nodeType":"ExpressionStatement","src":"5293:55:8"}]},"id":1393,"nodeType":"IfStatement","src":"5215:140:8","trueBody":{"id":1380,"nodeType":"Block","src":"5246:33:8","statements":[{"expression":{"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1374,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"5254:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1376,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5263:5:8","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":1272,"src":"5254:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5271:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5254:18:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1379,"nodeType":"ExpressionStatement","src":"5254:18:8"}]}},{"assignments":[1395],"declarations":[{"constant":false,"id":1395,"mutability":"mutable","name":"nonceSize","nameLocation":"5420:9:8","nodeType":"VariableDeclaration","scope":1662,"src":"5412:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1394,"name":"uint256","nodeType":"ElementaryTypeName","src":"5412:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1402,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1396,"name":"globalFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1362,"src":"5433:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5447:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5433:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1399,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5432:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783037","id":1400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5452:4:8","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"0x07"},"src":"5432:24:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5412:44:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1403,"name":"nonceSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1395,"src":"5467:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5479:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5467:13:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1419,"nodeType":"IfStatement","src":"5463:122:8","trueBody":{"id":1418,"nodeType":"Block","src":"5482:103:8","statements":[{"expression":{"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"id":1406,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"5515:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1408,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5524:5:8","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":1274,"src":"5515:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1409,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"5531:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1410,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5514:25:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1413,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"5559:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1414,"name":"nonceSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1395,"src":"5568:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1411,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"5542:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5549:9:8","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4868,"src":"5542:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":1415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5542:36:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5514:64:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1417,"nodeType":"ExpressionStatement","src":"5514:64:8"}]}},{"assignments":[1421],"declarations":[{"constant":false,"id":1421,"mutability":"mutable","name":"numCalls","nameLocation":"5599:8:8","nodeType":"VariableDeclaration","scope":1662,"src":"5591:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1420,"name":"uint256","nodeType":"ElementaryTypeName","src":"5591:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1422,"nodeType":"VariableDeclarationStatement","src":"5591:16:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1423,"name":"globalFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1362,"src":"5678:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130","id":1424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5691:4:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"5678:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783130","id":1426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5699:4:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"5678:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1459,"nodeType":"Block","src":"5738:256:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1433,"name":"globalFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1362,"src":"5822:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":1434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5835:4:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5822:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783230","id":1436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5843:4:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5822:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1457,"nodeType":"Block","src":"5922:66:8","statements":[{"expression":{"id":1455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1448,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"5933:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1449,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"5943:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1450,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5932:19:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1453,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"5971:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1451,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"5954:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5961:9:8","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":4788,"src":"5954:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5954:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"5932:47:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1456,"nodeType":"ExpressionStatement","src":"5932:47:8"}]},"id":1458,"nodeType":"IfStatement","src":"5818:170:8","trueBody":{"id":1447,"nodeType":"Block","src":"5849:67:8","statements":[{"expression":{"id":1445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1438,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"5860:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1439,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"5870:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1440,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5859:19:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1443,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"5899:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1441,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"5881:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5888:10:8","memberName":"readUint16","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"5881:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint16_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint16,uint256)"}},"id":1444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5881:26:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint256_$","typeString":"tuple(uint16,uint256)"}},"src":"5859:48:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1446,"nodeType":"ExpressionStatement","src":"5859:48:8"}]}}]},"id":1460,"nodeType":"IfStatement","src":"5674:320:8","trueBody":{"id":1432,"nodeType":"Block","src":"5705:27:8","statements":[{"expression":{"id":1430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1428,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"5713:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":1429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5724:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5713:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1431,"nodeType":"ExpressionStatement","src":"5713:12:8"}]}},{"expression":{"id":1470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":1461,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"6022:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6031:5:8","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"6022:14:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1468,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"6050:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6039:10:8","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct Payload.Call memory[] memory)"},"typeName":{"baseType":{"id":1465,"nodeType":"UserDefinedTypeName","pathNode":{"id":1464,"name":"Call","nameLocations":["6043:4:8"],"nodeType":"IdentifierPath","referencedDeclaration":1261,"src":"6043:4:8"},"referencedDeclaration":1261,"src":"6043:4:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_storage_ptr","typeString":"struct Payload.Call"}},"id":1466,"nodeType":"ArrayTypeName","src":"6043:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_storage_$dyn_storage_ptr","typeString":"struct Payload.Call[]"}}},"id":1469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6039:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"src":"6022:37:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1471,"nodeType":"ExpressionStatement","src":"6022:37:8"},{"body":{"id":1649,"nodeType":"Block","src":"6105:1507:8","statements":[{"assignments":[1483],"declarations":[{"constant":false,"id":1483,"mutability":"mutable","name":"flags","nameLocation":"6119:5:8","nodeType":"VariableDeclaration","scope":1649,"src":"6113:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1482,"name":"uint8","nodeType":"ElementaryTypeName","src":"6113:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1484,"nodeType":"VariableDeclarationStatement","src":"6113:11:8"},{"expression":{"id":1492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1485,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1483,"src":"6133:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":1486,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"6140:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1487,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6132:16:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1490,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"6168:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1488,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"6151:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6158:9:8","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":4788,"src":"6151:16:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":1491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"6132:44:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1493,"nodeType":"ExpressionStatement","src":"6132:44:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1494,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1483,"src":"6283:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783031","id":1495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6291:4:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"6283:12:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783031","id":1497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6299:4:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"6283:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1526,"nodeType":"Block","src":"6390:115:8","statements":[{"expression":{"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"expression":{"id":1512,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"6436:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1515,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6445:5:8","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"6436:14:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1516,"indexExpression":{"id":1514,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"6451:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6436:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1517,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6454:2:8","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":1248,"src":"6436:20:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1518,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"6458:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1519,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6435:31:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1522,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"6488:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1520,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"6469:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6476:11:8","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":4907,"src":"6469:18:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6469:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"6435:61:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1525,"nodeType":"ExpressionStatement","src":"6435:61:8"}]},"id":1527,"nodeType":"IfStatement","src":"6279:226:8","trueBody":{"id":1511,"nodeType":"Block","src":"6305:79:8","statements":[{"expression":{"id":1509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1499,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"6339:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6348:5:8","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"6339:14:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1503,"indexExpression":{"id":1501,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"6354:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6339:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6357:2:8","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":1248,"src":"6339:20:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1507,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6370:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_Payload_$1918","typeString":"library Payload"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payload_$1918","typeString":"library Payload"}],"id":1506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6362:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1505,"name":"address","nodeType":"ElementaryTypeName","src":"6362:7:8","typeDescriptions":{}}},"id":1508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6362:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6339:36:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1510,"nodeType":"ExpressionStatement","src":"6339:36:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1528,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1483,"src":"6577:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783032","id":1529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6585:4:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"6577:12:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783032","id":1531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6593:4:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"6577:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1548,"nodeType":"IfStatement","src":"6573:109:8","trueBody":{"id":1547,"nodeType":"Block","src":"6599:83:8","statements":[{"expression":{"id":1545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"expression":{"id":1533,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"6610:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1536,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6619:5:8","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"6610:14:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1537,"indexExpression":{"id":1535,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"6625:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6610:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6628:5:8","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1250,"src":"6610:23:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1539,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"6635:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1540,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6609:34:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1543,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"6665:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1541,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"6646:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6653:11:8","memberName":"readUint256","nodeType":"MemberAccess","referencedDeclaration":4853,"src":"6646:18:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint256,uint256)"}},"id":1544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6646:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"6609:64:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1546,"nodeType":"ExpressionStatement","src":"6609:64:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1549,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1483,"src":"6752:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783034","id":1550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6760:4:8","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"src":"6752:12:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783034","id":1552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6768:4:8","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x04"},"src":"6752:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1585,"nodeType":"IfStatement","src":"6748:287:8","trueBody":{"id":1584,"nodeType":"Block","src":"6774:261:8","statements":[{"assignments":[1555],"declarations":[{"constant":false,"id":1555,"mutability":"mutable","name":"calldataSize","nameLocation":"6846:12:8","nodeType":"VariableDeclaration","scope":1584,"src":"6838:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1554,"name":"uint256","nodeType":"ElementaryTypeName","src":"6838:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1556,"nodeType":"VariableDeclarationStatement","src":"6838:20:8"},{"expression":{"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":1557,"name":"calldataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"6869:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1558,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"6883:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1559,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6868:23:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1562,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"6912:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1560,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"6894:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6901:10:8","memberName":"readUint24","nodeType":"MemberAccess","referencedDeclaration":4814,"src":"6894:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint24,uint256)"}},"id":1563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6894:26:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint24_$_t_uint256_$","typeString":"tuple(uint24,uint256)"}},"src":"6868:52:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1565,"nodeType":"ExpressionStatement","src":"6868:52:8"},{"expression":{"id":1578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1566,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"6930:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6939:5:8","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"6930:14:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1570,"indexExpression":{"id":1568,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"6945:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6930:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6948:4:8","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":1252,"src":"6930:22:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1572,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"6955:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1574,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"6970:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1575,"name":"calldataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"6980:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6970:22:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6955:38:8","startExpression":{"id":1573,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"6962:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"src":"6930:63:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1579,"nodeType":"ExpressionStatement","src":"6930:63:8"},{"expression":{"id":1582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1580,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"7003:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1581,"name":"calldataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1555,"src":"7014:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7003:23:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1583,"nodeType":"ExpressionStatement","src":"7003:23:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1586,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1483,"src":"7113:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783038","id":1587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7121:4:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"7113:12:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783038","id":1589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7129:4:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"7113:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1606,"nodeType":"IfStatement","src":"7109:112:8","trueBody":{"id":1605,"nodeType":"Block","src":"7135:86:8","statements":[{"expression":{"id":1603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"expression":{"id":1591,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"7146:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1594,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7155:5:8","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"7146:14:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1595,"indexExpression":{"id":1593,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"7161:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7146:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1596,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7164:8:8","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":1254,"src":"7146:26:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1597,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"7174:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1598,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7145:37:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1601,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"7204:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1599,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"7185:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7192:11:8","memberName":"readUint256","nodeType":"MemberAccess","referencedDeclaration":4853,"src":"7185:18:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint256,uint256)"}},"id":1602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7185:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"7145:67:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1604,"nodeType":"ExpressionStatement","src":"7145:67:8"}]}},{"expression":{"id":1619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1607,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"7297:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1610,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7306:5:8","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"7297:14:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1611,"indexExpression":{"id":1609,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"7312:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7297:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1612,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7315:12:8","memberName":"delegateCall","nodeType":"MemberAccess","referencedDeclaration":1256,"src":"7297:30:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1613,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1483,"src":"7331:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783130","id":1614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7339:4:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"7331:12:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783130","id":1616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7347:4:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"7331:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1618,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7330:22:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7297:55:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1620,"nodeType":"ExpressionStatement","src":"7297:55:8"},{"expression":{"id":1633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1621,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"7420:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1624,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7429:5:8","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"7420:14:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1625,"indexExpression":{"id":1623,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"7435:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7420:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1626,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7438:12:8","memberName":"onlyFallback","nodeType":"MemberAccess","referencedDeclaration":1258,"src":"7420:30:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1627,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1483,"src":"7454:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":1628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7462:4:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"7454:12:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783230","id":1630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7470:4:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"7454:20:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":1632,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7453:22:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7420:55:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1634,"nodeType":"ExpressionStatement","src":"7420:55:8"},{"expression":{"id":1647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":1635,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"7550:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1638,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7559:5:8","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"7550:14:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1639,"indexExpression":{"id":1637,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"7565:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7550:17:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1640,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7568:15:8","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":1260,"src":"7550:33:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1641,"name":"flags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1483,"src":"7587:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784330","id":1642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7595:4:8","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"0xC0"},"src":"7587:12:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1644,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7586:14:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"36","id":1645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7604:1:8","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"7586:19:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7550:55:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1648,"nodeType":"ExpressionStatement","src":"7550:55:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1476,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"6086:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1477,"name":"numCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"6090:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6086:12:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1650,"initializationExpression":{"assignments":[1473],"declarations":[{"constant":false,"id":1473,"mutability":"mutable","name":"i","nameLocation":"6079:1:8","nodeType":"VariableDeclaration","scope":1650,"src":"6071:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1472,"name":"uint256","nodeType":"ElementaryTypeName","src":"6071:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1475,"initialValue":{"hexValue":"30","id":1474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6083:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6071:13:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6100:3:8","subExpression":{"id":1479,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1473,"src":"6100:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1481,"nodeType":"ExpressionStatement","src":"6100:3:8"},"nodeType":"ForStatement","src":"6066:1546:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1651,"name":"pointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1364,"src":"7622:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":1652,"name":"packed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1349,"src":"7633:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7640:6:8","memberName":"length","nodeType":"MemberAccess","src":"7633:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7622:24:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1659,"nodeType":"IfStatement","src":"7618:73:8","trueBody":{"id":1658,"nodeType":"Block","src":"7648:43:8","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1655,"name":"InvalidPackedLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1158,"src":"7663:19:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7663:21:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1657,"nodeType":"RevertStatement","src":"7656:28:8"}]}},{"expression":{"id":1660,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"7704:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"functionReturnParameters":1354,"id":1661,"nodeType":"Return","src":"7697:15:8"}]},"implemented":true,"kind":"function","modifiers":[],"name":"fromPackedCalls","nameLocation":"4924:15:8","parameters":{"id":1350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1349,"mutability":"mutable","name":"packed","nameLocation":"4960:6:8","nodeType":"VariableDeclaration","scope":1663,"src":"4945:21:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1348,"name":"bytes","nodeType":"ElementaryTypeName","src":"4945:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4939:31:8"},"returnParameters":{"id":1354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1353,"mutability":"mutable","name":"_decoded","nameLocation":"5009:8:8","nodeType":"VariableDeclaration","scope":1663,"src":"4994:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1352,"nodeType":"UserDefinedTypeName","pathNode":{"id":1351,"name":"Decoded","nameLocations":["4994:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"4994:7:8"},"referencedDeclaration":1284,"src":"4994:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"4993:25:8"},"scope":1918,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1695,"nodeType":"FunctionDefinition","src":"7721:252:8","nodes":[],"body":{"id":1694,"nodeType":"Block","src":"7794:179:8","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":1674,"name":"CALL_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"7844:13:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1675,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"7859:1:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7861:2:8","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":1248,"src":"7859:4:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1677,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"7865:1:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7867:5:8","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1250,"src":"7865:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":1680,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"7884:1:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7886:4:8","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":1252,"src":"7884:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1679,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7874:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7874:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1683,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"7893:1:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1684,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7895:8:8","memberName":"gasLimit","nodeType":"MemberAccess","referencedDeclaration":1254,"src":"7893:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1685,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"7905:1:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1686,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7907:12:8","memberName":"delegateCall","nodeType":"MemberAccess","referencedDeclaration":1256,"src":"7905:14:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":1687,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"7921:1:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1688,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7923:12:8","memberName":"onlyFallback","nodeType":"MemberAccess","referencedDeclaration":1258,"src":"7921:14:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":1689,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"7937:1:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}},"id":1690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7939:15:8","memberName":"behaviorOnError","nodeType":"MemberAccess","referencedDeclaration":1260,"src":"7937:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1672,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7824:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7828:6:8","memberName":"encode","nodeType":"MemberAccess","src":"7824:10:8","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7824:138:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1671,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7807:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7807:161:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1670,"id":1693,"nodeType":"Return","src":"7800:168:8"}]},"implemented":true,"kind":"function","modifiers":[],"name":"hashCall","nameLocation":"7730:8:8","parameters":{"id":1667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1666,"mutability":"mutable","name":"c","nameLocation":"7756:1:8","nodeType":"VariableDeclaration","scope":1695,"src":"7744:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call"},"typeName":{"id":1665,"nodeType":"UserDefinedTypeName","pathNode":{"id":1664,"name":"Call","nameLocations":["7744:4:8"],"nodeType":"IdentifierPath","referencedDeclaration":1261,"src":"7744:4:8"},"referencedDeclaration":1261,"src":"7744:4:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_storage_ptr","typeString":"struct Payload.Call"}},"visibility":"internal"}],"src":"7738:23:8"},"returnParameters":{"id":1670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1669,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1695,"src":"7785:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1668,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7785:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7784:9:8"},"scope":1918,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1747,"nodeType":"FunctionDefinition","src":"7977:454:8","nodes":[],"body":{"id":1746,"nodeType":"Block","src":"8057:374:8","nodes":[],"statements":[{"assignments":[1708],"declarations":[{"constant":false,"id":1708,"mutability":"mutable","name":"callHashes","nameLocation":"8237:10:8","nodeType":"VariableDeclaration","scope":1746,"src":"8220:27:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1706,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8220:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1707,"nodeType":"ArrayTypeName","src":"8220:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":1715,"initialValue":{"arguments":[{"expression":{"id":1712,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1699,"src":"8264:5:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8270:6:8","memberName":"length","nodeType":"MemberAccess","src":"8264:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8250:13:8","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":1709,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8254:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1710,"nodeType":"ArrayTypeName","src":"8254:9:8","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":1714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8250:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8220:57:8"},{"body":{"id":1737,"nodeType":"Block","src":"8326:49:8","statements":[{"expression":{"id":1735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1727,"name":"callHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1708,"src":"8334:10:8","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":1729,"indexExpression":{"id":1728,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1717,"src":"8345:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8334:13:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":1731,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1699,"src":"8359:5:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1733,"indexExpression":{"id":1732,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1717,"src":"8365:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8359:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Call_$1261_memory_ptr","typeString":"struct Payload.Call memory"}],"id":1730,"name":"hashCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1695,"src":"8350:8:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Call_$1261_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Call memory) pure returns (bytes32)"}},"id":1734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8350:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8334:34:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1736,"nodeType":"ExpressionStatement","src":"8334:34:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1720,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1717,"src":"8303:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1721,"name":"calls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1699,"src":"8307:5:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}},"id":1722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8313:6:8","memberName":"length","nodeType":"MemberAccess","src":"8307:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8303:16:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1738,"initializationExpression":{"assignments":[1717],"declarations":[{"constant":false,"id":1717,"mutability":"mutable","name":"i","nameLocation":"8296:1:8","nodeType":"VariableDeclaration","scope":1738,"src":"8288:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1716,"name":"uint256","nodeType":"ElementaryTypeName","src":"8288:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1719,"initialValue":{"hexValue":"30","id":1718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8300:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8288:13:8"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8321:3:8","subExpression":{"id":1724,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1717,"src":"8321:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1726,"nodeType":"ExpressionStatement","src":"8321:3:8"},"nodeType":"ForStatement","src":"8283:92:8"},{"expression":{"arguments":[{"arguments":[{"id":1742,"name":"callHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1708,"src":"8414:10:8","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"expression":{"id":1740,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8397:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8401:12:8","memberName":"encodePacked","nodeType":"MemberAccess","src":"8397:16:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8397:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1739,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8387:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8387:39:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1703,"id":1745,"nodeType":"Return","src":"8380:46:8"}]},"implemented":true,"kind":"function","modifiers":[],"name":"hashCalls","nameLocation":"7986:9:8","parameters":{"id":1700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1699,"mutability":"mutable","name":"calls","nameLocation":"8015:5:8","nodeType":"VariableDeclaration","scope":1747,"src":"8001:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call[]"},"typeName":{"baseType":{"id":1697,"nodeType":"UserDefinedTypeName","pathNode":{"id":1696,"name":"Call","nameLocations":["8001:4:8"],"nodeType":"IdentifierPath","referencedDeclaration":1261,"src":"8001:4:8"},"referencedDeclaration":1261,"src":"8001:4:8","typeDescriptions":{"typeIdentifier":"t_struct$_Call_$1261_storage_ptr","typeString":"struct Payload.Call"}},"id":1698,"nodeType":"ArrayTypeName","src":"8001:6:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_storage_$dyn_storage_ptr","typeString":"struct Payload.Call[]"}},"visibility":"internal"}],"src":"7995:29:8"},"returnParameters":{"id":1703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1702,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1747,"src":"8048:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1701,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8048:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8047:9:8"},"scope":1918,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1848,"nodeType":"FunctionDefinition","src":"8435:972:8","nodes":[],"body":{"id":1847,"nodeType":"Block","src":"8518:889:8","nodes":[],"statements":[{"assignments":[1756],"declarations":[{"constant":false,"id":1756,"mutability":"mutable","name":"walletsHash","nameLocation":"8532:11:8","nodeType":"VariableDeclaration","scope":1847,"src":"8524:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1755,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8524:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1764,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":1760,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"8573:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1761,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8582:13:8","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":1283,"src":"8573:22:8","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"}],"expression":{"id":1758,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8556:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8560:12:8","memberName":"encodePacked","nodeType":"MemberAccess","src":"8556:16:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8556:40:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1757,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8546:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8546:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8524:73:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1765,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"8608:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1766,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8617:4:8","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":1264,"src":"8608:13:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1767,"name":"KIND_TRANSACTIONS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1221,"src":"8625:17:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8608:34:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1790,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"8822:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1791,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8831:4:8","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":1264,"src":"8822:13:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1792,"name":"KIND_MESSAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1225,"src":"8839:12:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8822:29:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1807,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"8966:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1808,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8975:4:8","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":1264,"src":"8966:13:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1809,"name":"KIND_CONFIG_UPDATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1229,"src":"8983:18:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8966:35:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1822,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"9113:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1823,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9122:4:8","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":1264,"src":"9113:13:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1824,"name":"KIND_DIGEST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1233,"src":"9130:11:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9113:28:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1842,"nodeType":"Block","src":"9333:70:8","statements":[{"errorCall":{"arguments":[{"expression":{"id":1838,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"9382:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9391:4:8","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":1264,"src":"9382:13:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1837,"name":"InvalidKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1155,"src":"9370:11:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":1840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9370:26:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1841,"nodeType":"RevertStatement","src":"9363:33:8"}]},"id":1843,"nodeType":"IfStatement","src":"9109:294:8","trueBody":{"id":1836,"nodeType":"Block","src":"9143:184:8","statements":[{"expression":{"arguments":[{"arguments":[{"id":1829,"name":"MESSAGE_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"9272:16:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1830,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"9290:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1831,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9299:6:8","memberName":"digest","nodeType":"MemberAccess","referencedDeclaration":1280,"src":"9290:15:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1832,"name":"walletsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"9307:11:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1827,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9261:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9265:6:8","memberName":"encode","nodeType":"MemberAccess","src":"9261:10:8","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9261:58:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1826,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9251:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9251:69:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1754,"id":1835,"nodeType":"Return","src":"9244:76:8"}]}},"id":1844,"nodeType":"IfStatement","src":"8962:441:8","trueBody":{"id":1821,"nodeType":"Block","src":"9003:100:8","statements":[{"expression":{"arguments":[{"arguments":[{"id":1814,"name":"CONFIG_UPDATE_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"9039:22:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1815,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"9063:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1816,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9072:9:8","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":1278,"src":"9063:18:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1817,"name":"walletsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"9083:11:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1812,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9028:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9032:6:8","memberName":"encode","nodeType":"MemberAccess","src":"9028:10:8","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9028:67:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1811,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9018:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9018:78:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1754,"id":1820,"nodeType":"Return","src":"9011:85:8"}]}},"id":1845,"nodeType":"IfStatement","src":"8818:585:8","trueBody":{"id":1806,"nodeType":"Block","src":"8853:103:8","statements":[{"expression":{"arguments":[{"arguments":[{"id":1797,"name":"MESSAGE_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"8889:16:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"expression":{"id":1799,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"8917:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8926:7:8","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":1276,"src":"8917:16:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1798,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8907:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8907:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1802,"name":"walletsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"8936:11:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1795,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8878:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1796,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8882:6:8","memberName":"encode","nodeType":"MemberAccess","src":"8878:10:8","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8878:70:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1794,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8868:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8868:81:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1754,"id":1805,"nodeType":"Return","src":"8861:88:8"}]}},"id":1846,"nodeType":"IfStatement","src":"8604:799:8","trueBody":{"id":1789,"nodeType":"Block","src":"8644:168:8","statements":[{"assignments":[1770],"declarations":[{"constant":false,"id":1770,"mutability":"mutable","name":"callsHash","nameLocation":"8660:9:8","nodeType":"VariableDeclaration","scope":1789,"src":"8652:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1769,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8652:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1775,"initialValue":{"arguments":[{"expression":{"id":1772,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"8682:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8691:5:8","memberName":"calls","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"8682:14:8","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr","typeString":"struct Payload.Call memory[] memory"}],"id":1771,"name":"hashCalls","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"8672:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_struct$_Call_$1261_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Call memory[] memory) pure returns (bytes32)"}},"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8672:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8652:45:8"},{"expression":{"arguments":[{"arguments":[{"id":1779,"name":"CALLS_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"8733:14:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1780,"name":"callsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1770,"src":"8749:9:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1781,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"8760:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1782,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8769:5:8","memberName":"space","nodeType":"MemberAccess","referencedDeclaration":1272,"src":"8760:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1783,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1750,"src":"8776:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1784,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8785:5:8","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":1274,"src":"8776:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1785,"name":"walletsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"8792:11:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1777,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8722:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8726:6:8","memberName":"encode","nodeType":"MemberAccess","src":"8722:10:8","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8722:82:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1776,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8712:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8712:93:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1754,"id":1788,"nodeType":"Return","src":"8705:100:8"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"toEIP712","nameLocation":"8444:8:8","parameters":{"id":1751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1750,"mutability":"mutable","name":"_decoded","nameLocation":"8473:8:8","nodeType":"VariableDeclaration","scope":1848,"src":"8458:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1749,"nodeType":"UserDefinedTypeName","pathNode":{"id":1748,"name":"Decoded","nameLocations":["8458:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"8458:7:8"},"referencedDeclaration":1284,"src":"8458:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"8452:33:8"},"returnParameters":{"id":1754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1848,"src":"8509:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1752,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8509:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8508:9:8"},"scope":1918,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":1883,"nodeType":"FunctionDefinition","src":"9411:274:8","nodes":[],"body":{"id":1882,"nodeType":"Block","src":"9490:195:8","nodes":[],"statements":[{"assignments":[1857],"declarations":[{"constant":false,"id":1857,"mutability":"mutable","name":"domain","nameLocation":"9504:6:8","nodeType":"VariableDeclaration","scope":1882,"src":"9496:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1856,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9496:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1866,"initialValue":{"arguments":[{"expression":{"id":1859,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1851,"src":"9529:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9538:9:8","memberName":"noChainId","nodeType":"MemberAccess","referencedDeclaration":1266,"src":"9529:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":1863,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9557:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_Payload_$1918","typeString":"library Payload"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Payload_$1918","typeString":"library Payload"}],"id":1862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9549:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1861,"name":"address","nodeType":"ElementaryTypeName","src":"9549:7:8","typeDescriptions":{}}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9549:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1858,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1201,"src":"9513:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$_t_address_$returns$_t_bytes32_$","typeString":"function (bool,address) view returns (bytes32)"}},"id":1865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9513:50:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9496:67:8"},{"assignments":[1868],"declarations":[{"constant":false,"id":1868,"mutability":"mutable","name":"structHash","nameLocation":"9577:10:8","nodeType":"VariableDeclaration","scope":1882,"src":"9569:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1867,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9569:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1872,"initialValue":{"arguments":[{"id":1870,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1851,"src":"9599:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}],"id":1869,"name":"toEIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"9590:8:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Decoded_$1284_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory) pure returns (bytes32)"}},"id":1871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9590:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9569:39:8"},{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":1876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9648:10:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"id":1877,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1857,"src":"9660:6:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1878,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1868,"src":"9668:10:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1874,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9631:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9635:12:8","memberName":"encodePacked","nodeType":"MemberAccess","src":"9631:16:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9631:48:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1873,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9621:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9621:59:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1855,"id":1881,"nodeType":"Return","src":"9614:66:8"}]},"implemented":true,"kind":"function","modifiers":[],"name":"hash","nameLocation":"9420:4:8","parameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1851,"mutability":"mutable","name":"_decoded","nameLocation":"9445:8:8","nodeType":"VariableDeclaration","scope":1883,"src":"9430:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1850,"nodeType":"UserDefinedTypeName","pathNode":{"id":1849,"name":"Decoded","nameLocations":["9430:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"9430:7:8"},"referencedDeclaration":1284,"src":"9430:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"src":"9424:33:8"},"returnParameters":{"id":1855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1854,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1883,"src":"9481:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1853,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9481:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9480:9:8"},"scope":1918,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":1917,"nodeType":"FunctionDefinition","src":"9689:280:8","nodes":[],"body":{"id":1916,"nodeType":"Block","src":"9780:189:8","nodes":[],"statements":[{"assignments":[1894],"declarations":[{"constant":false,"id":1894,"mutability":"mutable","name":"domain","nameLocation":"9794:6:8","nodeType":"VariableDeclaration","scope":1916,"src":"9786:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1893,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9786:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1900,"initialValue":{"arguments":[{"expression":{"id":1896,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1886,"src":"9819:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":1897,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9828:9:8","memberName":"noChainId","nodeType":"MemberAccess","referencedDeclaration":1266,"src":"9819:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1898,"name":"_wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1888,"src":"9839:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1895,"name":"domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1201,"src":"9803:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bool_$_t_address_$returns$_t_bytes32_$","typeString":"function (bool,address) view returns (bytes32)"}},"id":1899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9803:44:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9786:61:8"},{"assignments":[1902],"declarations":[{"constant":false,"id":1902,"mutability":"mutable","name":"structHash","nameLocation":"9861:10:8","nodeType":"VariableDeclaration","scope":1916,"src":"9853:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9853:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1906,"initialValue":{"arguments":[{"id":1904,"name":"_decoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1886,"src":"9883:8:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}],"id":1903,"name":"toEIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"9874:8:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_Decoded_$1284_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory) pure returns (bytes32)"}},"id":1905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9874:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9853:39:8"},{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":1910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9932:10:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},"value":"\u0019\u0001"},{"id":1911,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1894,"src":"9944:6:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1912,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1902,"src":"9952:10:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string hex\"1901\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1908,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9915:3:8","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9919:12:8","memberName":"encodePacked","nodeType":"MemberAccess","src":"9915:16:8","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9915:48:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1907,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9905:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9905:59:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1892,"id":1915,"nodeType":"Return","src":"9898:66:8"}]},"implemented":true,"kind":"function","modifiers":[],"name":"hashFor","nameLocation":"9698:7:8","parameters":{"id":1889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1886,"mutability":"mutable","name":"_decoded","nameLocation":"9721:8:8","nodeType":"VariableDeclaration","scope":1917,"src":"9706:23:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":1885,"nodeType":"UserDefinedTypeName","pathNode":{"id":1884,"name":"Decoded","nameLocations":["9706:7:8"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"9706:7:8"},"referencedDeclaration":1284,"src":"9706:7:8","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":1888,"mutability":"mutable","name":"_wallet","nameLocation":"9739:7:8","nodeType":"VariableDeclaration","scope":1917,"src":"9731:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1887,"name":"address","nodeType":"ElementaryTypeName","src":"9731:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9705:42:8"},"returnParameters":{"id":1892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1891,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1917,"src":"9771:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1890,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9771:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9770:9:8"},"scope":1918,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Payload","contractDependencies":[],"contractKind":"library","documentation":{"id":1150,"nodeType":"StructuredDocumentation","src":"143:132:8","text":"@title Payload\n @author Agustin Aguilar, Michael Standen, William Hua\n @notice Library for encoding and decoding payloads"},"fullyImplemented":true,"linearizedBaseContracts":[1918],"name":"Payload","nameLocation":"283:7:8","scope":1919,"usedErrors":[1155,1158],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/ReentrancyGuard.sol":{"id":9,"ast":{"absolutePath":"src/modules/ReentrancyGuard.sol","id":1988,"exportedSymbols":{"ReentrancyGuard":[1987],"Storage":[2051]},"nodeType":"SourceUnit","src":"32:1267:9","nodes":[{"id":1920,"nodeType":"PragmaDirective","src":"32:23:9","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":1922,"nodeType":"ImportDirective","src":"57:40:9","nodes":[],"absolutePath":"src/modules/Storage.sol","file":"./Storage.sol","nameLocation":"-1:-1:-1","scope":1988,"sourceUnit":2052,"symbolAliases":[{"foreign":{"id":1921,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"66:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":1987,"nodeType":"ContractDefinition","src":"99:1199:9","nodes":[{"id":1928,"nodeType":"VariableDeclaration","src":"138:52:9","nodes":[],"constant":true,"mutability":"constant","name":"_INITIAL_VALUE","nameLocation":"163:14:9","scope":1987,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1923,"name":"bytes32","nodeType":"ElementaryTypeName","src":"138:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"30","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"188: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":1925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"180:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1924,"name":"bytes32","nodeType":"ElementaryTypeName","src":"180:7:9","typeDescriptions":{}}},"id":1927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"180:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":1937,"nodeType":"VariableDeclaration","src":"194:59:9","nodes":[],"constant":true,"mutability":"constant","name":"_NOT_ENTERED","nameLocation":"219:12:9","scope":1987,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1929,"name":"bytes32","nodeType":"ElementaryTypeName","src":"194:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"31","id":1934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"250:1:9","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":1933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"242:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1932,"name":"uint256","nodeType":"ElementaryTypeName","src":"242:7:9","typeDescriptions":{}}},"id":1935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"242:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"234:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1930,"name":"bytes32","nodeType":"ElementaryTypeName","src":"234:7:9","typeDescriptions":{}}},"id":1936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"234:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":1946,"nodeType":"VariableDeclaration","src":"257:55:9","nodes":[],"constant":true,"mutability":"constant","name":"_ENTERED","nameLocation":"282:8:9","scope":1987,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1938,"name":"bytes32","nodeType":"ElementaryTypeName","src":"257:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"32","id":1943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"309:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":1942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"301:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1941,"name":"uint256","nodeType":"ElementaryTypeName","src":"301:7:9","typeDescriptions":{}}},"id":1944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"301:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"293:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1939,"name":"bytes32","nodeType":"ElementaryTypeName","src":"293:7:9","typeDescriptions":{}}},"id":1945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"293:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":1953,"nodeType":"VariableDeclaration","src":"384:113:9","nodes":[],"constant":true,"documentation":{"id":1947,"nodeType":"StructuredDocumentation","src":"317:64:9","text":"@dev keccak256(\"org.sequence.module.reentrancyguard.status\")"},"mutability":"constant","name":"STATUS_KEY","nameLocation":"409:10:9","scope":1987,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1948,"name":"bytes32","nodeType":"ElementaryTypeName","src":"384:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"307866633665303765333939326337633336393461393231646339653431326236636665343735333830353536373536613139383035613965336464666532666465","id":1951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"430:66:9","typeDescriptions":{"typeIdentifier":"t_rational_114177245468372153901819510276752919394550107491418587683901287954970151104478_by_1","typeString":"int_const 1141...(70 digits omitted)...4478"},"value":"0xfc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_114177245468372153901819510276752919394550107491418587683901287954970151104478_by_1","typeString":"int_const 1141...(70 digits omitted)...4478"}],"id":1950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"422:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"422:7:9","typeDescriptions":{}}},"id":1952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"422:75:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":1956,"nodeType":"ErrorDefinition","src":"563:22:9","nodes":[],"documentation":{"id":1954,"nodeType":"StructuredDocumentation","src":"502:58:9","text":"@notice Error thrown when a reentrant call is detected"},"errorSelector":"37ed32e8","name":"ReentrantCall","nameLocation":"569:13:9","parameters":{"id":1955,"nodeType":"ParameterList","parameters":[],"src":"582:2:9"}},{"id":1986,"nodeType":"ModifierDefinition","src":"667:628:9","nodes":[],"body":{"id":1985,"nodeType":"Block","src":"691:604:9","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1961,"name":"STATUS_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1953,"src":"816:10:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1959,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"796:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":1960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"804:11:9","memberName":"readBytes32","nodeType":"MemberAccess","referencedDeclaration":2008,"src":"796:19:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"796:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1963,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1946,"src":"831:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"796:43:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1969,"nodeType":"IfStatement","src":"792:86:9","trueBody":{"id":1968,"nodeType":"Block","src":"841:37:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1965,"name":"ReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"856:13:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"856:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1967,"nodeType":"RevertStatement","src":"849:22:9"}]}},{"expression":{"arguments":[{"id":1973,"name":"STATUS_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1953,"src":"965:10:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1974,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1946,"src":"977:8:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1970,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"944:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":1972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"952:12:9","memberName":"writeBytes32","nodeType":"MemberAccess","referencedDeclaration":1999,"src":"944:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"944:42:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1976,"nodeType":"ExpressionStatement","src":"944:42:9"},{"id":1977,"nodeType":"PlaceholderStatement","src":"993:1:9"},{"expression":{"arguments":[{"id":1981,"name":"STATUS_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1953,"src":"1265:10:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1982,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"1277:12:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1978,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"1244:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1252:12:9","memberName":"writeBytes32","nodeType":"MemberAccess","referencedDeclaration":1999,"src":"1244:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":1983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1244:46:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1984,"nodeType":"ExpressionStatement","src":"1244:46:9"}]},"documentation":{"id":1957,"nodeType":"StructuredDocumentation","src":"589:75:9","text":"@notice Prevents a contract from calling itself, directly or indirectly"},"name":"nonReentrant","nameLocation":"676:12:9","parameters":{"id":1958,"nodeType":"ParameterList","parameters":[],"src":"688:2:9"},"virtual":false,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"ReentrancyGuard","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[1987],"name":"ReentrancyGuard","nameLocation":"117:15:9","scope":1988,"usedErrors":[1956],"usedEvents":[]}],"license":"MIT"}},"src/modules/Storage.sol":{"id":10,"ast":{"absolutePath":"src/modules/Storage.sol","id":2052,"exportedSymbols":{"Storage":[2051]},"nodeType":"SourceUnit","src":"39:794:10","nodes":[{"id":1989,"nodeType":"PragmaDirective","src":"39:24:10","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":2051,"nodeType":"ContractDefinition","src":"174:658:10","nodes":[{"id":1999,"nodeType":"FunctionDefinition","src":"195:110:10","nodes":[],"body":{"id":1998,"nodeType":"Block","src":"254:51:10","nodes":[],"statements":[{"AST":{"nativeSrc":"269:32:10","nodeType":"YulBlock","src":"269:32:10","statements":[{"expression":{"arguments":[{"name":"_key","nativeSrc":"284:4:10","nodeType":"YulIdentifier","src":"284:4:10"},{"name":"_val","nativeSrc":"290:4:10","nodeType":"YulIdentifier","src":"290:4:10"}],"functionName":{"name":"sstore","nativeSrc":"277:6:10","nodeType":"YulIdentifier","src":"277:6:10"},"nativeSrc":"277:18:10","nodeType":"YulFunctionCall","src":"277:18:10"},"nativeSrc":"277:18:10","nodeType":"YulExpressionStatement","src":"277:18:10"}]},"evmVersion":"paris","externalReferences":[{"declaration":1992,"isOffset":false,"isSlot":false,"src":"284:4:10","valueSize":1},{"declaration":1994,"isOffset":false,"isSlot":false,"src":"290:4:10","valueSize":1}],"id":1997,"nodeType":"InlineAssembly","src":"260:41:10"}]},"implemented":true,"kind":"function","modifiers":[],"name":"writeBytes32","nameLocation":"204:12:10","parameters":{"id":1995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1992,"mutability":"mutable","name":"_key","nameLocation":"225:4:10","nodeType":"VariableDeclaration","scope":1999,"src":"217:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1991,"name":"bytes32","nodeType":"ElementaryTypeName","src":"217:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1994,"mutability":"mutable","name":"_val","nameLocation":"239:4:10","nodeType":"VariableDeclaration","scope":1999,"src":"231:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1993,"name":"bytes32","nodeType":"ElementaryTypeName","src":"231:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"216:28:10"},"returnParameters":{"id":1996,"nodeType":"ParameterList","parameters":[],"src":"254:0:10"},"scope":2051,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2008,"nodeType":"FunctionDefinition","src":"309:130:10","nodes":[],"body":{"id":2007,"nodeType":"Block","src":"388:51:10","nodes":[],"statements":[{"AST":{"nativeSrc":"403:32:10","nodeType":"YulBlock","src":"403:32:10","statements":[{"nativeSrc":"411:18:10","nodeType":"YulAssignment","src":"411:18:10","value":{"arguments":[{"name":"_key","nativeSrc":"424:4:10","nodeType":"YulIdentifier","src":"424:4:10"}],"functionName":{"name":"sload","nativeSrc":"418:5:10","nodeType":"YulIdentifier","src":"418:5:10"},"nativeSrc":"418:11:10","nodeType":"YulFunctionCall","src":"418:11:10"},"variableNames":[{"name":"val","nativeSrc":"411:3:10","nodeType":"YulIdentifier","src":"411:3:10"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2001,"isOffset":false,"isSlot":false,"src":"424:4:10","valueSize":1},{"declaration":2004,"isOffset":false,"isSlot":false,"src":"411:3:10","valueSize":1}],"id":2006,"nodeType":"InlineAssembly","src":"394:41:10"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readBytes32","nameLocation":"318:11:10","parameters":{"id":2002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2001,"mutability":"mutable","name":"_key","nameLocation":"343:4:10","nodeType":"VariableDeclaration","scope":2008,"src":"335:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2000,"name":"bytes32","nodeType":"ElementaryTypeName","src":"335:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"329:22:10"},"returnParameters":{"id":2005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2004,"mutability":"mutable","name":"val","nameLocation":"383:3:10","nodeType":"VariableDeclaration","scope":2008,"src":"375:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2003,"name":"bytes32","nodeType":"ElementaryTypeName","src":"375:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"374:13:10"},"scope":2051,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2029,"nodeType":"FunctionDefinition","src":"443:185:10","nodes":[],"body":{"id":2028,"nodeType":"Block","src":"522:106:10","nodes":[],"statements":[{"assignments":[2018],"declarations":[{"constant":false,"id":2018,"mutability":"mutable","name":"key","nameLocation":"536:3:10","nodeType":"VariableDeclaration","scope":2028,"src":"528:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2017,"name":"bytes32","nodeType":"ElementaryTypeName","src":"528:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2026,"initialValue":{"arguments":[{"arguments":[{"id":2022,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2010,"src":"563:4:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2023,"name":"_subKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2012,"src":"569:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2020,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"552:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"556:6:10","memberName":"encode","nodeType":"MemberAccess","src":"552:10:10","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"552:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2019,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"542:9:10","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"542:36:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"528:50:10"},{"AST":{"nativeSrc":"593:31:10","nodeType":"YulBlock","src":"593:31:10","statements":[{"expression":{"arguments":[{"name":"key","nativeSrc":"608:3:10","nodeType":"YulIdentifier","src":"608:3:10"},{"name":"_val","nativeSrc":"613:4:10","nodeType":"YulIdentifier","src":"613:4:10"}],"functionName":{"name":"sstore","nativeSrc":"601:6:10","nodeType":"YulIdentifier","src":"601:6:10"},"nativeSrc":"601:17:10","nodeType":"YulFunctionCall","src":"601:17:10"},"nativeSrc":"601:17:10","nodeType":"YulExpressionStatement","src":"601:17:10"}]},"evmVersion":"paris","externalReferences":[{"declaration":2014,"isOffset":false,"isSlot":false,"src":"613:4:10","valueSize":1},{"declaration":2018,"isOffset":false,"isSlot":false,"src":"608:3:10","valueSize":1}],"id":2027,"nodeType":"InlineAssembly","src":"584:40:10"}]},"implemented":true,"kind":"function","modifiers":[],"name":"writeBytes32Map","nameLocation":"452:15:10","parameters":{"id":2015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2010,"mutability":"mutable","name":"_key","nameLocation":"476:4:10","nodeType":"VariableDeclaration","scope":2029,"src":"468:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2009,"name":"bytes32","nodeType":"ElementaryTypeName","src":"468:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2012,"mutability":"mutable","name":"_subKey","nameLocation":"490:7:10","nodeType":"VariableDeclaration","scope":2029,"src":"482:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2011,"name":"bytes32","nodeType":"ElementaryTypeName","src":"482:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2014,"mutability":"mutable","name":"_val","nameLocation":"507:4:10","nodeType":"VariableDeclaration","scope":2029,"src":"499:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2013,"name":"bytes32","nodeType":"ElementaryTypeName","src":"499:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"467:45:10"},"returnParameters":{"id":2016,"nodeType":"ParameterList","parameters":[],"src":"522:0:10"},"scope":2051,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2050,"nodeType":"FunctionDefinition","src":"632:197:10","nodes":[],"body":{"id":2049,"nodeType":"Block","src":"723:106:10","nodes":[],"statements":[{"assignments":[2039],"declarations":[{"constant":false,"id":2039,"mutability":"mutable","name":"key","nameLocation":"737:3:10","nodeType":"VariableDeclaration","scope":2049,"src":"729:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2038,"name":"bytes32","nodeType":"ElementaryTypeName","src":"729:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2047,"initialValue":{"arguments":[{"arguments":[{"id":2043,"name":"_key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"764:4:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2044,"name":"_subKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2033,"src":"770:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2041,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"753:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"757:6:10","memberName":"encode","nodeType":"MemberAccess","src":"753:10:10","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"753:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2040,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"743:9:10","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"743:36:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"729:50:10"},{"AST":{"nativeSrc":"794:31:10","nodeType":"YulBlock","src":"794:31:10","statements":[{"nativeSrc":"802:17:10","nodeType":"YulAssignment","src":"802:17:10","value":{"arguments":[{"name":"key","nativeSrc":"815:3:10","nodeType":"YulIdentifier","src":"815:3:10"}],"functionName":{"name":"sload","nativeSrc":"809:5:10","nodeType":"YulIdentifier","src":"809:5:10"},"nativeSrc":"809:10:10","nodeType":"YulFunctionCall","src":"809:10:10"},"variableNames":[{"name":"val","nativeSrc":"802:3:10","nodeType":"YulIdentifier","src":"802:3:10"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2039,"isOffset":false,"isSlot":false,"src":"815:3:10","valueSize":1},{"declaration":2036,"isOffset":false,"isSlot":false,"src":"802:3:10","valueSize":1}],"id":2048,"nodeType":"InlineAssembly","src":"785:40:10"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readBytes32Map","nameLocation":"641:14:10","parameters":{"id":2034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2031,"mutability":"mutable","name":"_key","nameLocation":"664:4:10","nodeType":"VariableDeclaration","scope":2050,"src":"656:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2030,"name":"bytes32","nodeType":"ElementaryTypeName","src":"656:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2033,"mutability":"mutable","name":"_subKey","nameLocation":"678:7:10","nodeType":"VariableDeclaration","scope":2050,"src":"670:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2032,"name":"bytes32","nodeType":"ElementaryTypeName","src":"670:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"655:31:10"},"returnParameters":{"id":2037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2036,"mutability":"mutable","name":"val","nameLocation":"718:3:10","nodeType":"VariableDeclaration","scope":2050,"src":"710:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2035,"name":"bytes32","nodeType":"ElementaryTypeName","src":"710:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"709:13:10"},"scope":2051,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Storage","contractDependencies":[],"contractKind":"library","documentation":{"id":1990,"nodeType":"StructuredDocumentation","src":"65:109:10","text":"@title Storage\n @author Agustin Aguilar\n @notice Library for storing data at certain storage slots"},"fullyImplemented":true,"linearizedBaseContracts":[2051],"name":"Storage","nameLocation":"182:7:10","scope":2052,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/auth/BaseAuth.sol":{"id":11,"ast":{"absolutePath":"src/modules/auth/BaseAuth.sol","id":2565,"exportedSymbols":{"BaseAuth":[2564],"BaseSig":[4214],"IAuth":[4532],"IERC1271":[4631],"IERC1271_MAGIC_VALUE_HASH":[4616],"IPartialAuth":[4732],"ISapient":[4749],"Payload":[1918],"SelfAuth":[4241],"Storage":[2051]},"nodeType":"SourceUnit","src":"39:6096:11","nodes":[{"id":2053,"nodeType":"PragmaDirective","src":"39:24:11","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":2055,"nodeType":"ImportDirective","src":"65:41:11","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"../Payload.sol","nameLocation":"-1:-1:-1","scope":2565,"sourceUnit":1919,"symbolAliases":[{"foreign":{"id":2054,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"74:7:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2057,"nodeType":"ImportDirective","src":"108:41:11","nodes":[],"absolutePath":"src/modules/Storage.sol","file":"../Storage.sol","nameLocation":"-1:-1:-1","scope":2565,"sourceUnit":2052,"symbolAliases":[{"foreign":{"id":2056,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"117:7:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2059,"nodeType":"ImportDirective","src":"150:48:11","nodes":[],"absolutePath":"src/modules/interfaces/IAuth.sol","file":"../interfaces/IAuth.sol","nameLocation":"-1:-1:-1","scope":2565,"sourceUnit":4533,"symbolAliases":[{"foreign":{"id":2058,"name":"IAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4532,"src":"159:5:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2062,"nodeType":"ImportDirective","src":"199:81:11","nodes":[],"absolutePath":"src/modules/interfaces/IERC1271.sol","file":"../interfaces/IERC1271.sol","nameLocation":"-1:-1:-1","scope":2565,"sourceUnit":4644,"symbolAliases":[{"foreign":{"id":2060,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4631,"src":"208:8:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2061,"name":"IERC1271_MAGIC_VALUE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"218:25:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2064,"nodeType":"ImportDirective","src":"282:62:11","nodes":[],"absolutePath":"src/modules/interfaces/IPartialAuth.sol","file":"../interfaces/IPartialAuth.sol","nameLocation":"-1:-1:-1","scope":2565,"sourceUnit":4733,"symbolAliases":[{"foreign":{"id":2063,"name":"IPartialAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4732,"src":"291:12:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2066,"nodeType":"ImportDirective","src":"345:54:11","nodes":[],"absolutePath":"src/modules/interfaces/ISapient.sol","file":"../interfaces/ISapient.sol","nameLocation":"-1:-1:-1","scope":2565,"sourceUnit":4762,"symbolAliases":[{"foreign":{"id":2065,"name":"ISapient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4749,"src":"354:8:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2068,"nodeType":"ImportDirective","src":"400:40:11","nodes":[],"absolutePath":"src/modules/auth/BaseSig.sol","file":"./BaseSig.sol","nameLocation":"-1:-1:-1","scope":2565,"sourceUnit":4215,"symbolAliases":[{"foreign":{"id":2067,"name":"BaseSig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"409:7:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2070,"nodeType":"ImportDirective","src":"442:42:11","nodes":[],"absolutePath":"src/modules/auth/SelfAuth.sol","file":"./SelfAuth.sol","nameLocation":"-1:-1:-1","scope":2565,"sourceUnit":4242,"symbolAliases":[{"foreign":{"id":2069,"name":"SelfAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"451:8:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2074,"nodeType":"UsingForDirective","src":"486:34:11","nodes":[],"global":false,"libraryName":{"id":2071,"name":"Payload","nameLocations":["492:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":1918,"src":"492:7:11"},"typeName":{"id":2073,"nodeType":"UserDefinedTypeName","pathNode":{"id":2072,"name":"Payload.Decoded","nameLocations":["504:7:11","512:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"504:15:11"},"referencedDeclaration":1284,"src":"504:15:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}}},{"id":2564,"nodeType":"ContractDefinition","src":"633:5501:11","nodes":[{"id":2092,"nodeType":"VariableDeclaration","src":"774:127:11","nodes":[],"constant":true,"documentation":{"id":2086,"nodeType":"StructuredDocumentation","src":"718:53:11","text":"@dev keccak256(\"org.sequence.module.auth.static\")"},"mutability":"constant","name":"STATIC_SIGNATURE_KEY","nameLocation":"799:20:11","scope":2564,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2087,"name":"bytes32","nodeType":"ElementaryTypeName","src":"774:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"307863383532616466356539376332666333623338663430353637316539316237616631363937656630323837353737663232376566313034393463326138653836","id":2090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"834:66:11","typeDescriptions":{"typeIdentifier":"t_rational_90608651807858884763709126779667297325611943001701864799635873588240613805702_by_1","typeString":"int_const 9060...(69 digits omitted)...5702"},"value":"0xc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e86"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_90608651807858884763709126779667297325611943001701864799635873588240613805702_by_1","typeString":"int_const 9060...(69 digits omitted)...5702"}],"id":2089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"826:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2088,"name":"bytes32","nodeType":"ElementaryTypeName","src":"826:7:11","typeDescriptions":{}}},"id":2091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"826:75:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"id":2100,"nodeType":"ErrorDefinition","src":"971:74:11","nodes":[],"documentation":{"id":2093,"nodeType":"StructuredDocumentation","src":"906:62:11","text":"@notice Error thrown when the sapient signature is invalid"},"errorSelector":"f58cc8b5","name":"InvalidSapientSignature","nameLocation":"977:23:11","parameters":{"id":2099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2096,"mutability":"mutable","name":"_payload","nameLocation":"1017:8:11","nodeType":"VariableDeclaration","scope":2100,"src":"1001:24:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":2095,"nodeType":"UserDefinedTypeName","pathNode":{"id":2094,"name":"Payload.Decoded","nameLocations":["1001:7:11","1009:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"1001:15:11"},"referencedDeclaration":1284,"src":"1001:15:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":2098,"mutability":"mutable","name":"_signature","nameLocation":"1033:10:11","nodeType":"VariableDeclaration","scope":2100,"src":"1027:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2097,"name":"bytes","nodeType":"ElementaryTypeName","src":"1027:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1000:44:11"}},{"id":2107,"nodeType":"ErrorDefinition","src":"1112:66:11","nodes":[],"documentation":{"id":2101,"nodeType":"StructuredDocumentation","src":"1048:61:11","text":"@notice Error thrown when the signature weight is invalid"},"errorSelector":"fd41fcba","name":"InvalidSignatureWeight","nameLocation":"1118:22:11","parameters":{"id":2106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2103,"mutability":"mutable","name":"_threshold","nameLocation":"1149:10:11","nodeType":"VariableDeclaration","scope":2107,"src":"1141:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2102,"name":"uint256","nodeType":"ElementaryTypeName","src":"1141:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2105,"mutability":"mutable","name":"_weight","nameLocation":"1169:7:11","nodeType":"VariableDeclaration","scope":2107,"src":"1161:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1161:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1140:37:11"}},{"id":2114,"nodeType":"ErrorDefinition","src":"1246:71:11","nodes":[],"documentation":{"id":2108,"nodeType":"StructuredDocumentation","src":"1181:62:11","text":"@notice Error thrown when the static signature has expired"},"errorSelector":"f95b6ab7","name":"InvalidStaticSignatureExpired","nameLocation":"1252:29:11","parameters":{"id":2113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2110,"mutability":"mutable","name":"_opHash","nameLocation":"1290:7:11","nodeType":"VariableDeclaration","scope":2114,"src":"1282:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1282:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2112,"mutability":"mutable","name":"_expires","nameLocation":"1307:8:11","nodeType":"VariableDeclaration","scope":2114,"src":"1299:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2111,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1281:35:11"}},{"id":2123,"nodeType":"ErrorDefinition","src":"1394:99:11","nodes":[],"documentation":{"id":2115,"nodeType":"StructuredDocumentation","src":"1320:71:11","text":"@notice Error thrown when the static signature has the wrong caller"},"errorSelector":"8945c313","name":"InvalidStaticSignatureWrongCaller","nameLocation":"1400:33:11","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2117,"mutability":"mutable","name":"_opHash","nameLocation":"1442:7:11","nodeType":"VariableDeclaration","scope":2123,"src":"1434:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2116,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1434:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2119,"mutability":"mutable","name":"_caller","nameLocation":"1459:7:11","nodeType":"VariableDeclaration","scope":2123,"src":"1451:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2118,"name":"address","nodeType":"ElementaryTypeName","src":"1451:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2121,"mutability":"mutable","name":"_expectedCaller","nameLocation":"1476:15:11","nodeType":"VariableDeclaration","scope":2123,"src":"1468:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2120,"name":"address","nodeType":"ElementaryTypeName","src":"1468:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1433:59:11"}},{"id":2132,"nodeType":"EventDefinition","src":"1556:77:11","nodes":[],"anonymous":false,"documentation":{"id":2124,"nodeType":"StructuredDocumentation","src":"1497:56:11","text":"@notice Event emitted when a static signature is set"},"eventSelector":"ebf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1","name":"StaticSignatureSet","nameLocation":"1562:18:11","parameters":{"id":2131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2126,"indexed":false,"mutability":"mutable","name":"_hash","nameLocation":"1589:5:11","nodeType":"VariableDeclaration","scope":2132,"src":"1581:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2125,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1581:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2128,"indexed":false,"mutability":"mutable","name":"_address","nameLocation":"1604:8:11","nodeType":"VariableDeclaration","scope":2132,"src":"1596:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2127,"name":"address","nodeType":"ElementaryTypeName","src":"1596:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2130,"indexed":false,"mutability":"mutable","name":"_timestamp","nameLocation":"1621:10:11","nodeType":"VariableDeclaration","scope":2132,"src":"1614:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2129,"name":"uint96","nodeType":"ElementaryTypeName","src":"1614:6:11","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"1580:52:11"}},{"id":2171,"nodeType":"FunctionDefinition","src":"1637:245:11","nodes":[],"body":{"id":2170,"nodeType":"Block","src":"1730:152:11","nodes":[],"statements":[{"assignments":[2142],"declarations":[{"constant":false,"id":2142,"mutability":"mutable","name":"word","nameLocation":"1744:4:11","nodeType":"VariableDeclaration","scope":2170,"src":"1736:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2141,"name":"uint256","nodeType":"ElementaryTypeName","src":"1736:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2151,"initialValue":{"arguments":[{"arguments":[{"id":2147,"name":"STATIC_SIGNATURE_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"1782:20:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2148,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2134,"src":"1804:5:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2145,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"1759:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1767:14:11","memberName":"readBytes32Map","nodeType":"MemberAccess","referencedDeclaration":2050,"src":"1759:22:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) view returns (bytes32)"}},"id":2149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1759:51:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1751:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2143,"name":"uint256","nodeType":"ElementaryTypeName","src":"1751:7:11","typeDescriptions":{}}},"id":2150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1751:60:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1736:75:11"},{"expression":{"components":[{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2156,"name":"word","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2142,"src":"1841:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3936","id":2157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1849:2:11","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"1841:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1833:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2154,"name":"uint160","nodeType":"ElementaryTypeName","src":"1833:7:11","typeDescriptions":{}}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1833:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1825:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2152,"name":"address","nodeType":"ElementaryTypeName","src":"1825:7:11","typeDescriptions":{}}},"id":2160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1825:28:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":2165,"name":"word","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2142,"src":"1870:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1863:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":2163,"name":"uint96","nodeType":"ElementaryTypeName","src":"1863:6:11","typeDescriptions":{}}},"id":2166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1863:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":2162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1855:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2161,"name":"uint256","nodeType":"ElementaryTypeName","src":"1855:7:11","typeDescriptions":{}}},"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:21:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2168,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1824:53:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"functionReturnParameters":2140,"id":2169,"nodeType":"Return","src":"1817:60:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStaticSignature","nameLocation":"1646:19:11","parameters":{"id":2135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2134,"mutability":"mutable","name":"_hash","nameLocation":"1679:5:11","nodeType":"VariableDeclaration","scope":2171,"src":"1671:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2133,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1671:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1665:23:11"},"returnParameters":{"id":2140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2137,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2171,"src":"1712:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2136,"name":"address","nodeType":"ElementaryTypeName","src":"1712:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2171,"src":"1721:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2138,"name":"uint256","nodeType":"ElementaryTypeName","src":"1721:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1711:18:11"},"scope":2564,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":2205,"nodeType":"FunctionDefinition","src":"1886:253:11","nodes":[],"body":{"id":2204,"nodeType":"Block","src":"1977:162:11","nodes":[],"statements":[{"expression":{"arguments":[{"id":2183,"name":"STATIC_SIGNATURE_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2092,"src":"2014:20:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2184,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2173,"src":"2036:5:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2191,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"2067:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2059:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2189,"name":"uint160","nodeType":"ElementaryTypeName","src":"2059:7:11","typeDescriptions":{}}},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2059:17:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2051:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2187,"name":"uint256","nodeType":"ElementaryTypeName","src":"2051:7:11","typeDescriptions":{}}},"id":2193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2051:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3936","id":2194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2081:2:11","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"2051:32:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2196,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2177,"src":"2087:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"3078666666666666666666666666666666666666666666666666","id":2197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2100:26:11","typeDescriptions":{"typeIdentifier":"t_rational_79228162514264337593543950335_by_1","typeString":"int_const 79228162514264337593543950335"},"value":"0xffffffffffffffffffffffff"},"src":"2087:39:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2199,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2086:41:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2051:76:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2043:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2185,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2043:7:11","typeDescriptions":{}}},"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2043:85:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2180,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"1983:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":2182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1991:15:11","memberName":"writeBytes32Map","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"1983:23:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":2202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1983:151:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2203,"nodeType":"ExpressionStatement","src":"1983:151:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setStaticSignature","nameLocation":"1895:19:11","parameters":{"id":2178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2173,"mutability":"mutable","name":"_hash","nameLocation":"1923:5:11","nodeType":"VariableDeclaration","scope":2205,"src":"1915:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2172,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1915:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2175,"mutability":"mutable","name":"_address","nameLocation":"1938:8:11","nodeType":"VariableDeclaration","scope":2205,"src":"1930:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2174,"name":"address","nodeType":"ElementaryTypeName","src":"1930:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2177,"mutability":"mutable","name":"_timestamp","nameLocation":"1956:10:11","nodeType":"VariableDeclaration","scope":2205,"src":"1948:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2176,"name":"uint256","nodeType":"ElementaryTypeName","src":"1948:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1914:53:11"},"returnParameters":{"id":2179,"nodeType":"ParameterList","parameters":[],"src":"1977:0:11"},"scope":2564,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2220,"nodeType":"FunctionDefinition","src":"2395:136:11","nodes":[],"body":{"id":2219,"nodeType":"Block","src":"2487:44:11","nodes":[],"statements":[{"expression":{"arguments":[{"id":2216,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2208,"src":"2520:5:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2215,"name":"_getStaticSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"2500:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$_t_uint256_$","typeString":"function (bytes32) view returns (address,uint256)"}},"id":2217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2500:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"functionReturnParameters":2214,"id":2218,"nodeType":"Return","src":"2493:33:11"}]},"documentation":{"id":2206,"nodeType":"StructuredDocumentation","src":"2143:249:11","text":"@notice Get the static signature for a specific hash\n @param _hash The hash to get the static signature for\n @return address The address associated with the static signature\n @return timestamp The timestamp of the static signature"},"functionSelector":"92dcb3fc","implemented":true,"kind":"function","modifiers":[],"name":"getStaticSignature","nameLocation":"2404:18:11","parameters":{"id":2209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2208,"mutability":"mutable","name":"_hash","nameLocation":"2436:5:11","nodeType":"VariableDeclaration","scope":2220,"src":"2428:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2207,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2428:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2422:23:11"},"returnParameters":{"id":2214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2211,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2220,"src":"2469:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2210,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2220,"src":"2478:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2212,"name":"uint256","nodeType":"ElementaryTypeName","src":"2478:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2468:18:11"},"scope":2564,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2245,"nodeType":"FunctionDefinition","src":"2835:215:11","nodes":[],"body":{"id":2244,"nodeType":"Block","src":"2933:117:11","nodes":[],"statements":[{"expression":{"arguments":[{"id":2233,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"2959:5:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2234,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"2966:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2235,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"2976:10:11","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":2232,"name":"_setStaticSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2205,"src":"2939:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes32,address,uint256)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2939:48:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2237,"nodeType":"ExpressionStatement","src":"2939:48:11"},{"eventCall":{"arguments":[{"id":2239,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"3017:5:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2240,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"3024:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2241,"name":"_timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"3034:10:11","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":2238,"name":"StaticSignatureSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2132,"src":"2998:18:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint96_$returns$__$","typeString":"function (bytes32,address,uint96)"}},"id":2242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2998:47:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2243,"nodeType":"EmitStatement","src":"2993:52:11"}]},"documentation":{"id":2221,"nodeType":"StructuredDocumentation","src":"2535:297:11","text":"@notice Set the static signature for a specific hash\n @param _hash The hash to set the static signature for\n @param _address The address to associate with the static signature\n @param _timestamp The timestamp of the static signature\n @dev Only callable by the wallet itself"},"functionSelector":"f727ef1c","implemented":true,"kind":"function","modifiers":[{"id":2230,"kind":"modifierInvocation","modifierName":{"id":2229,"name":"onlySelf","nameLocations":["2924:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"2924:8:11"},"nodeType":"ModifierInvocation","src":"2924:8:11"}],"name":"setStaticSignature","nameLocation":"2844:18:11","parameters":{"id":2228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"_hash","nameLocation":"2871:5:11","nodeType":"VariableDeclaration","scope":2245,"src":"2863:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2222,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2863:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"_address","nameLocation":"2886:8:11","nodeType":"VariableDeclaration","scope":2245,"src":"2878:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2224,"name":"address","nodeType":"ElementaryTypeName","src":"2878:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"_timestamp","nameLocation":"2903:10:11","nodeType":"VariableDeclaration","scope":2245,"src":"2896:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":2226,"name":"uint96","nodeType":"ElementaryTypeName","src":"2896:6:11","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"2862:52:11"},"returnParameters":{"id":2231,"nodeType":"ParameterList","parameters":[],"src":"2933:0:11"},"scope":2564,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2258,"nodeType":"FunctionDefinition","src":"3179:118:11","nodes":[],"body":{"id":2257,"nodeType":"Block","src":"3258:39:11","nodes":[],"statements":[{"expression":{"arguments":[{"id":2254,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2248,"src":"3281:10:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2253,"name":"_updateImageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4531,"src":"3264:16:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":2255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3264:28:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2256,"nodeType":"ExpressionStatement","src":"3264:28:11"}]},"documentation":{"id":2246,"nodeType":"StructuredDocumentation","src":"3054:122:11","text":"@notice Update the image hash\n @param _imageHash The new image hash\n @dev Only callable by the wallet itself"},"functionSelector":"29561426","implemented":true,"kind":"function","modifiers":[{"id":2251,"kind":"modifierInvocation","modifierName":{"id":2250,"name":"onlySelf","nameLocations":["3249:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":4240,"src":"3249:8:11"},"nodeType":"ModifierInvocation","src":"3249:8:11"}],"name":"updateImageHash","nameLocation":"3188:15:11","parameters":{"id":2249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2248,"mutability":"mutable","name":"_imageHash","nameLocation":"3217:10:11","nodeType":"VariableDeclaration","scope":2258,"src":"3209:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2247,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3209:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3203:28:11"},"returnParameters":{"id":2252,"nodeType":"ParameterList","parameters":[],"src":"3258:0:11"},"scope":2564,"stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"id":2387,"nodeType":"FunctionDefinition","src":"3301:1229:11","nodes":[],"body":{"id":2386,"nodeType":"Block","src":"3463:1067:11","nodes":[],"statements":[{"assignments":[2271],"declarations":[{"constant":false,"id":2271,"mutability":"mutable","name":"signatureFlag","nameLocation":"3539:13:11","nodeType":"VariableDeclaration","scope":2386,"src":"3532:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":2270,"name":"bytes1","nodeType":"ElementaryTypeName","src":"3532:6:11","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":2275,"initialValue":{"baseExpression":{"id":2272,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"3555:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2274,"indexExpression":{"hexValue":"30","id":2273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3566:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3555:13:11","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"3532:36:11"},{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2276,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2271,"src":"3579:13:11","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783830","id":2277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3595:4:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"src":"3579:20:11","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783830","id":2279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3603:4:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"0x80"},"src":"3579:28:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2341,"nodeType":"IfStatement","src":"3575:521:11","trueBody":{"id":2340,"nodeType":"Block","src":"3609:487:11","statements":[{"expression":{"id":2289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2281,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2261,"src":"3652:8:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2283,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3661:9:11","memberName":"noChainId","nodeType":"MemberAccess","referencedDeclaration":1266,"src":"3652:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2284,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2271,"src":"3673:13:11","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783032","id":2285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3689:4:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"3673:20:11","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783032","id":2287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3697:4:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"3673:28:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3652:49:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2290,"nodeType":"ExpressionStatement","src":"3652:49:11"},{"expression":{"id":2295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2291,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"3709:6:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2292,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2261,"src":"3718:8:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2293,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3727:4:11","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":1883,"src":"3718:13:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Decoded_$1284_memory_ptr_$","typeString":"function (struct Payload.Decoded memory) view returns (bytes32)"}},"id":2294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3718:15:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3709:24:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2296,"nodeType":"ExpressionStatement","src":"3709:24:11"},{"assignments":[2298,2300],"declarations":[{"constant":false,"id":2298,"mutability":"mutable","name":"addr","nameLocation":"3751:4:11","nodeType":"VariableDeclaration","scope":2340,"src":"3743:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2297,"name":"address","nodeType":"ElementaryTypeName","src":"3743:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2300,"mutability":"mutable","name":"timestamp","nameLocation":"3765:9:11","nodeType":"VariableDeclaration","scope":2340,"src":"3757:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2299,"name":"uint256","nodeType":"ElementaryTypeName","src":"3757:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2304,"initialValue":{"arguments":[{"id":2302,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"3798:6:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2301,"name":"_getStaticSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"3778:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$_t_uint256_$","typeString":"function (bytes32) view returns (address,uint256)"}},"id":2303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3778:27:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3742:63:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2305,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"3817:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":2306,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3830:5:11","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3836:9:11","memberName":"timestamp","nodeType":"MemberAccess","src":"3830:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3817:28:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2315,"nodeType":"IfStatement","src":"3813:108:11","trueBody":{"id":2314,"nodeType":"Block","src":"3847:74:11","statements":[{"errorCall":{"arguments":[{"id":2310,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"3894:6:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2311,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"3902:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2309,"name":"InvalidStaticSignatureExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2114,"src":"3864:29:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$_t_uint256_$returns$_t_error_$","typeString":"function (bytes32,uint256) pure returns (error)"}},"id":2312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3864:48:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2313,"nodeType":"RevertStatement","src":"3857:55:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2316,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"3933:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3949:1:11","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":2318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3941:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2317,"name":"address","nodeType":"ElementaryTypeName","src":"3941:7:11","typeDescriptions":{}}},"id":2320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3941:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3933:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2322,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"3955:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2323,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3963:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3967:6:11","memberName":"sender","nodeType":"MemberAccess","src":"3963:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3955:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3933:40:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2335,"nodeType":"IfStatement","src":"3929:131:11","trueBody":{"id":2334,"nodeType":"Block","src":"3975:85:11","statements":[{"errorCall":{"arguments":[{"id":2328,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"4026:6:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":2329,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4034:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4038:6:11","memberName":"sender","nodeType":"MemberAccess","src":"4034:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2331,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"4046:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2327,"name":"InvalidStaticSignatureWrongCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2123,"src":"3992:33:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (bytes32,address,address) pure returns (error)"}},"id":2332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3992:59:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2333,"nodeType":"RevertStatement","src":"3985:66:11"}]}},{"expression":{"components":[{"hexValue":"74727565","id":2336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4076:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":2337,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"4082:6:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2338,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4075:14:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"functionReturnParameters":2269,"id":2339,"nodeType":"Return","src":"4068:21:11"}]}},{"assignments":[2343],"declarations":[{"constant":false,"id":2343,"mutability":"mutable","name":"threshold","nameLocation":"4179:9:11","nodeType":"VariableDeclaration","scope":2386,"src":"4171:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2342,"name":"uint256","nodeType":"ElementaryTypeName","src":"4171:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2344,"nodeType":"VariableDeclarationStatement","src":"4171:17:11"},{"assignments":[2346],"declarations":[{"constant":false,"id":2346,"mutability":"mutable","name":"weight","nameLocation":"4202:6:11","nodeType":"VariableDeclaration","scope":2386,"src":"4194:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2345,"name":"uint256","nodeType":"ElementaryTypeName","src":"4194:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2347,"nodeType":"VariableDeclarationStatement","src":"4194:14:11"},{"assignments":[2349],"declarations":[{"constant":false,"id":2349,"mutability":"mutable","name":"imageHash","nameLocation":"4222:9:11","nodeType":"VariableDeclaration","scope":2386,"src":"4214:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2348,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4214:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2350,"nodeType":"VariableDeclarationStatement","src":"4214:17:11"},{"expression":{"id":2368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2351,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"4239:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2352,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2346,"src":"4250:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2353,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"4258:9:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},null,{"id":2354,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"4270:6:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2355,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4238:39:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$__$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2358,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2261,"src":"4302:8:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2359,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"4312:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"expression":{"id":2360,"name":"BaseSig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"4324:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseSig_$4214_$","typeString":"type(library BaseSig)"}},"id":2361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4332:11:11","memberName":"RecoverMode","nodeType":"MemberAccess","referencedDeclaration":2665,"src":"4324:19:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2665_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":2362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4344:7:11","memberName":"Initial","nodeType":"MemberAccess","referencedDeclaration":2662,"src":"4324:27:11","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},{"arguments":[{"hexValue":"30","id":2365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4361:1:11","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":2364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4353:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2363,"name":"address","nodeType":"ElementaryTypeName","src":"4353:7:11","typeDescriptions":{}}},"id":2366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4353:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2356,"name":"BaseSig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"4286:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseSig_$4214_$","typeString":"type(library BaseSig)"}},"id":2357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4294:7:11","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":3027,"src":"4286:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes_calldata_ptr_$_t_enum$_RecoverMode_$2665_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata,enum BaseSig.RecoverMode,address) view returns (uint256,uint256,bytes32,uint256,bytes32)"}},"id":2367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4286:78:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"src":"4238:126:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2369,"nodeType":"ExpressionStatement","src":"4238:126:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2370,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2346,"src":"4402:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2371,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"4411:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4402:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2379,"nodeType":"IfStatement","src":"4398:87:11","trueBody":{"id":2378,"nodeType":"Block","src":"4422:63:11","statements":[{"errorCall":{"arguments":[{"id":2374,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2343,"src":"4460:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2375,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2346,"src":"4471:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2373,"name":"InvalidSignatureWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"4437:22:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":2376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4437:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2377,"nodeType":"RevertStatement","src":"4430:48:11"}]}},{"expression":{"id":2384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2380,"name":"isValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2266,"src":"4491:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2382,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"4515:9:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2381,"name":"_isValidImage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4526,"src":"4501:13:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":2383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4501:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4491:34:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2385,"nodeType":"ExpressionStatement","src":"4491:34:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"signatureValidation","nameLocation":"3310:19:11","parameters":{"id":2264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2261,"mutability":"mutable","name":"_payload","nameLocation":"3358:8:11","nodeType":"VariableDeclaration","scope":2387,"src":"3335:31:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":2260,"nodeType":"UserDefinedTypeName","pathNode":{"id":2259,"name":"Payload.Decoded","nameLocations":["3335:7:11","3343:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"3335:15:11"},"referencedDeclaration":1284,"src":"3335:15:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":2263,"mutability":"mutable","name":"_signature","nameLocation":"3387:10:11","nodeType":"VariableDeclaration","scope":2387,"src":"3372:25:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2262,"name":"bytes","nodeType":"ElementaryTypeName","src":"3372:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3329:72:11"},"returnParameters":{"id":2269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2266,"mutability":"mutable","name":"isValid","nameLocation":"3438:7:11","nodeType":"VariableDeclaration","scope":2387,"src":"3433:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2265,"name":"bool","nodeType":"ElementaryTypeName","src":"3433:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2268,"mutability":"mutable","name":"opHash","nameLocation":"3455:6:11","nodeType":"VariableDeclaration","scope":2387,"src":"3447:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2267,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3447:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3432:30:11"},"scope":2564,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":2476,"nodeType":"FunctionDefinition","src":"4561:698:11","nodes":[],"body":{"id":2475,"nodeType":"Block","src":"4698:561:11","nodes":[],"statements":[{"assignments":[2402],"declarations":[{"constant":false,"id":2402,"mutability":"mutable","name":"parentWallets","nameLocation":"4772:13:11","nodeType":"VariableDeclaration","scope":2475,"src":"4755:30:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2400,"name":"address","nodeType":"ElementaryTypeName","src":"4755:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2401,"nodeType":"ArrayTypeName","src":"4755:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":2412,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":2406,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"4802:8:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2407,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4811:13:11","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":1283,"src":"4802:22:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4825:6:11","memberName":"length","nodeType":"MemberAccess","src":"4802:29:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4834:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4802:33:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4788:13:11","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":2403,"name":"address","nodeType":"ElementaryTypeName","src":"4792:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2404,"nodeType":"ArrayTypeName","src":"4792:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":2411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4788:48:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4755:81:11"},{"body":{"id":2434,"nodeType":"Block","src":"4903:59:11","statements":[{"expression":{"id":2432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2425,"name":"parentWallets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2402,"src":"4911:13:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2427,"indexExpression":{"id":2426,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"4925:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4911:16:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"id":2428,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"4930:8:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2429,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4939:13:11","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":1283,"src":"4930:22:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2431,"indexExpression":{"id":2430,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"4953:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4930:25:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4911:44:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2433,"nodeType":"ExpressionStatement","src":"4911:44:11"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2417,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"4863:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":2418,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"4867:8:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2419,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4876:13:11","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":1283,"src":"4867:22:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4890:6:11","memberName":"length","nodeType":"MemberAccess","src":"4867:29:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4863:33:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2435,"initializationExpression":{"assignments":[2414],"declarations":[{"constant":false,"id":2414,"mutability":"mutable","name":"i","nameLocation":"4856:1:11","nodeType":"VariableDeclaration","scope":2435,"src":"4848:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2413,"name":"uint256","nodeType":"ElementaryTypeName","src":"4848:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2416,"initialValue":{"hexValue":"30","id":2415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4860:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4848:13:11"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4898:3:11","subExpression":{"id":2422,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"4898:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2424,"nodeType":"ExpressionStatement","src":"4898:3:11"},"nodeType":"ForStatement","src":"4843:119:11"},{"expression":{"id":2443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2436,"name":"parentWallets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2402,"src":"4968:13:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2440,"indexExpression":{"expression":{"expression":{"id":2437,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"4982:8:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2438,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4991:13:11","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":1283,"src":"4982:22:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5005:6:11","memberName":"length","nodeType":"MemberAccess","src":"4982:29:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4968:44:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2441,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5015:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5019:6:11","memberName":"sender","nodeType":"MemberAccess","src":"5015:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4968:57:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2444,"nodeType":"ExpressionStatement","src":"4968:57:11"},{"expression":{"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2445,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"5031:8:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2447,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5040:13:11","memberName":"parentWallets","nodeType":"MemberAccess","referencedDeclaration":1283,"src":"5031:22:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2448,"name":"parentWallets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2402,"src":"5056:13:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"5031:38:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2450,"nodeType":"ExpressionStatement","src":"5031:38:11"},{"assignments":[2452,null],"declarations":[{"constant":false,"id":2452,"mutability":"mutable","name":"isValid","nameLocation":"5082:7:11","nodeType":"VariableDeclaration","scope":2475,"src":"5077:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2451,"name":"bool","nodeType":"ElementaryTypeName","src":"5077:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2457,"initialValue":{"arguments":[{"id":2454,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"5114:8:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2455,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2393,"src":"5124:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2453,"name":"signatureValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"5094:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata) view returns (bool,bytes32)"}},"id":2456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5094:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"5076:59:11"},{"condition":{"id":2459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5145:8:11","subExpression":{"id":2458,"name":"isValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2452,"src":"5146:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2466,"nodeType":"IfStatement","src":"5141:81:11","trueBody":{"id":2465,"nodeType":"Block","src":"5155:67:11","statements":[{"errorCall":{"arguments":[{"id":2461,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2391,"src":"5194:8:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2462,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2393,"src":"5204:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2460,"name":"InvalidSapientSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"5170:23:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (struct Payload.Decoded memory,bytes memory) pure returns (error)"}},"id":2463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5170:45:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2464,"nodeType":"RevertStatement","src":"5163:52:11"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"31","id":2471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5251:1:11","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":2470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5243:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2469,"name":"uint256","nodeType":"ElementaryTypeName","src":"5243:7:11","typeDescriptions":{}}},"id":2472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5243:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5235:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2467,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5235:7:11","typeDescriptions":{}}},"id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5235:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2397,"id":2474,"nodeType":"Return","src":"5228:26:11"}]},"baseFunctions":[4748],"documentation":{"id":2388,"nodeType":"StructuredDocumentation","src":"4534:24:11","text":"@inheritdoc ISapient"},"functionSelector":"13792a4a","implemented":true,"kind":"function","modifiers":[],"name":"recoverSapientSignature","nameLocation":"4570:23:11","parameters":{"id":2394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2391,"mutability":"mutable","name":"_payload","nameLocation":"4622:8:11","nodeType":"VariableDeclaration","scope":2476,"src":"4599:31:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":2390,"nodeType":"UserDefinedTypeName","pathNode":{"id":2389,"name":"Payload.Decoded","nameLocations":["4599:7:11","4607:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"4599:15:11"},"referencedDeclaration":1284,"src":"4599:15:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":2393,"mutability":"mutable","name":"_signature","nameLocation":"4651:10:11","nodeType":"VariableDeclaration","scope":2476,"src":"4636:25:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2392,"name":"bytes","nodeType":"ElementaryTypeName","src":"4636:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4593:72:11"},"returnParameters":{"id":2397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2396,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2476,"src":"4689:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4689:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4688:9:11"},"scope":2564,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":2515,"nodeType":"FunctionDefinition","src":"5290:320:11","nodes":[],"body":{"id":2514,"nodeType":"Block","src":"5387:223:11","nodes":[],"statements":[{"assignments":[2490],"declarations":[{"constant":false,"id":2490,"mutability":"mutable","name":"payload","nameLocation":"5416:7:11","nodeType":"VariableDeclaration","scope":2514,"src":"5393:30:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":2489,"nodeType":"UserDefinedTypeName","pathNode":{"id":2488,"name":"Payload.Decoded","nameLocations":["5393:7:11","5401:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"5393:15:11"},"referencedDeclaration":1284,"src":"5393:15:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"id":2495,"initialValue":{"arguments":[{"id":2493,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2479,"src":"5445:5:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2491,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"5426:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1918_$","typeString":"type(library Payload)"}},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5434:10:11","memberName":"fromDigest","nodeType":"MemberAccess","referencedDeclaration":1347,"src":"5426:18:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Decoded_$1284_memory_ptr_$","typeString":"function (bytes32) pure returns (struct Payload.Decoded memory)"}},"id":2494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5426:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"nodeType":"VariableDeclarationStatement","src":"5393:58:11"},{"assignments":[2497,null],"declarations":[{"constant":false,"id":2497,"mutability":"mutable","name":"isValid","nameLocation":"5464:7:11","nodeType":"VariableDeclaration","scope":2514,"src":"5459:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2496,"name":"bool","nodeType":"ElementaryTypeName","src":"5459:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2502,"initialValue":{"arguments":[{"id":2499,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"5496:7:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2500,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"5505:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2498,"name":"signatureValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"5476:19:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes_calldata_ptr_$returns$_t_bool_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata) view returns (bool,bytes32)"}},"id":2501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5476:40:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes32_$","typeString":"tuple(bool,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"5458:58:11"},{"condition":{"id":2504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5526:8:11","subExpression":{"id":2503,"name":"isValid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"5527:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2511,"nodeType":"IfStatement","src":"5522:45:11","trueBody":{"id":2510,"nodeType":"Block","src":"5536:31:11","statements":[{"expression":{"arguments":[{"hexValue":"30","id":2507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5558:1:11","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":2506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5551:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2505,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5551:6:11","typeDescriptions":{}}},"id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5551:9:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2485,"id":2509,"nodeType":"Return","src":"5544:16:11"}]}},{"expression":{"id":2512,"name":"IERC1271_MAGIC_VALUE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"5580:25:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":2485,"id":2513,"nodeType":"Return","src":"5573:32:11"}]},"baseFunctions":[4630],"documentation":{"id":2477,"nodeType":"StructuredDocumentation","src":"5263:24:11","text":"@inheritdoc IERC1271"},"functionSelector":"1626ba7e","implemented":true,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"5299:16:11","parameters":{"id":2482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2479,"mutability":"mutable","name":"_hash","nameLocation":"5324:5:11","nodeType":"VariableDeclaration","scope":2515,"src":"5316:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2478,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5316:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2481,"mutability":"mutable","name":"_signature","nameLocation":"5346:10:11","nodeType":"VariableDeclaration","scope":2515,"src":"5331:25:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2480,"name":"bytes","nodeType":"ElementaryTypeName","src":"5331:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5315:42:11"},"returnParameters":{"id":2485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2515,"src":"5379:6:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2483,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5379:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5378:8:11"},"scope":2564,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":2563,"nodeType":"FunctionDefinition","src":"5645:486:11","nodes":[],"body":{"id":2562,"nodeType":"Block","src":"5938:193:11","nodes":[],"statements":[{"expression":{"id":2554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2536,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2524,"src":"5945:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2537,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2526,"src":"5956:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2538,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"5964:9:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2539,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2532,"src":"5975:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2540,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2534,"src":"5987:6:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2541,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5944:50:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2544,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"6019:8:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2545,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"6029:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"expression":{"id":2546,"name":"BaseSig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"6041:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseSig_$4214_$","typeString":"type(library BaseSig)"}},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6049:11:11","memberName":"RecoverMode","nodeType":"MemberAccess","referencedDeclaration":2665,"src":"6041:19:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2665_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":2548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6061:7:11","memberName":"Initial","nodeType":"MemberAccess","referencedDeclaration":2662,"src":"6041:27:11","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},{"arguments":[{"hexValue":"30","id":2551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6078:1:11","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":2550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6070:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2549,"name":"address","nodeType":"ElementaryTypeName","src":"6070:7:11","typeDescriptions":{}}},"id":2552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6070:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":2542,"name":"BaseSig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"6003:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseSig_$4214_$","typeString":"type(library BaseSig)"}},"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6011:7:11","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":3027,"src":"6003:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes_calldata_ptr_$_t_enum$_RecoverMode_$2665_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata,enum BaseSig.RecoverMode,address) view returns (uint256,uint256,bytes32,uint256,bytes32)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6003:78:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"src":"5944:137:11","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2555,"nodeType":"ExpressionStatement","src":"5944:137:11"},{"expression":{"id":2560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2556,"name":"isValidImage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2528,"src":"6087:12:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2558,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"6116:9:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2557,"name":"_isValidImage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4526,"src":"6102:13:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":2559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6102:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6087:39:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2561,"nodeType":"ExpressionStatement","src":"6087:39:11"}]},"baseFunctions":[4731],"documentation":{"id":2516,"nodeType":"StructuredDocumentation","src":"5614:28:11","text":"@inheritdoc IPartialAuth"},"functionSelector":"ad55366b","implemented":true,"kind":"function","modifiers":[],"name":"recoverPartialSignature","nameLocation":"5654:23:11","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2519,"mutability":"mutable","name":"_payload","nameLocation":"5706:8:11","nodeType":"VariableDeclaration","scope":2563,"src":"5683:31:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":2518,"nodeType":"UserDefinedTypeName","pathNode":{"id":2517,"name":"Payload.Decoded","nameLocations":["5683:7:11","5691:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"5683:15:11"},"referencedDeclaration":1284,"src":"5683:15:11","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"_signature","nameLocation":"5735:10:11","nodeType":"VariableDeclaration","scope":2563,"src":"5720:25:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2520,"name":"bytes","nodeType":"ElementaryTypeName","src":"5720:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5677:72:11"},"returnParameters":{"id":2535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2524,"mutability":"mutable","name":"threshold","nameLocation":"5800:9:11","nodeType":"VariableDeclaration","scope":2563,"src":"5792:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2523,"name":"uint256","nodeType":"ElementaryTypeName","src":"5792:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2526,"mutability":"mutable","name":"weight","nameLocation":"5825:6:11","nodeType":"VariableDeclaration","scope":2563,"src":"5817:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2525,"name":"uint256","nodeType":"ElementaryTypeName","src":"5817:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2528,"mutability":"mutable","name":"isValidImage","nameLocation":"5844:12:11","nodeType":"VariableDeclaration","scope":2563,"src":"5839:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2527,"name":"bool","nodeType":"ElementaryTypeName","src":"5839:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2530,"mutability":"mutable","name":"imageHash","nameLocation":"5872:9:11","nodeType":"VariableDeclaration","scope":2563,"src":"5864:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5864:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2532,"mutability":"mutable","name":"checkpoint","nameLocation":"5897:10:11","nodeType":"VariableDeclaration","scope":2563,"src":"5889:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2531,"name":"uint256","nodeType":"ElementaryTypeName","src":"5889:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2534,"mutability":"mutable","name":"opHash","nameLocation":"5923:6:11","nodeType":"VariableDeclaration","scope":2563,"src":"5915:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5915:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5784:151:11"},"scope":2564,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":true,"baseContracts":[{"baseName":{"id":2076,"name":"IAuth","nameLocations":["663:5:11"],"nodeType":"IdentifierPath","referencedDeclaration":4532,"src":"663:5:11"},"id":2077,"nodeType":"InheritanceSpecifier","src":"663:5:11"},{"baseName":{"id":2078,"name":"IPartialAuth","nameLocations":["670:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":4732,"src":"670:12:11"},"id":2079,"nodeType":"InheritanceSpecifier","src":"670:12:11"},{"baseName":{"id":2080,"name":"ISapient","nameLocations":["684:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":4749,"src":"684:8:11"},"id":2081,"nodeType":"InheritanceSpecifier","src":"684:8:11"},{"baseName":{"id":2082,"name":"IERC1271","nameLocations":["694:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":4631,"src":"694:8:11"},"id":2083,"nodeType":"InheritanceSpecifier","src":"694:8:11"},{"baseName":{"id":2084,"name":"SelfAuth","nameLocations":["704:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":4241,"src":"704:8:11"},"id":2085,"nodeType":"InheritanceSpecifier","src":"704:8:11"}],"canonicalName":"BaseAuth","contractDependencies":[],"contractKind":"contract","documentation":{"id":2075,"nodeType":"StructuredDocumentation","src":"522:111:11","text":"@title BaseAuth\n @author Agustin Aguilar, Michael Standen\n @notice Base contract for the auth module"},"fullyImplemented":false,"linearizedBaseContracts":[2564,4241,4631,4749,4732,4532],"name":"BaseAuth","nameLocation":"651:8:11","scope":2565,"usedErrors":[1155,2100,2107,2114,2123,2631,2640,2647,2653,2658,2661,4222],"usedEvents":[2132]}],"license":"Apache-2.0"}},"src/modules/auth/BaseSig.sol":{"id":12,"ast":{"absolutePath":"src/modules/auth/BaseSig.sol","id":4215,"exportedSymbols":{"BaseSig":[4214],"ICheckpointer":[4553],"IERC1271":[4631],"IERC1271_MAGIC_VALUE_HASH":[4616],"ISapient":[4749],"ISapientCompact":[4761],"LibBytes":[4965],"LibOptim":[5019],"Payload":[1918],"Snapshot":[4540]},"nodeType":"SourceUnit","src":"39:19372:12","nodes":[{"id":2566,"nodeType":"PragmaDirective","src":"39:24:12","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":2568,"nodeType":"ImportDirective","src":"65:52:12","nodes":[],"absolutePath":"src/utils/LibBytes.sol","file":"../../utils/LibBytes.sol","nameLocation":"-1:-1:-1","scope":4215,"sourceUnit":4966,"symbolAliases":[{"foreign":{"id":2567,"name":"LibBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4965,"src":"74:8:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2570,"nodeType":"ImportDirective","src":"118:52:12","nodes":[],"absolutePath":"src/utils/LibOptim.sol","file":"../../utils/LibOptim.sol","nameLocation":"-1:-1:-1","scope":4215,"sourceUnit":5020,"symbolAliases":[{"foreign":{"id":2569,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"127:8:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2572,"nodeType":"ImportDirective","src":"171:41:12","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"../Payload.sol","nameLocation":"-1:-1:-1","scope":4215,"sourceUnit":1919,"symbolAliases":[{"foreign":{"id":2571,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"180:7:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2575,"nodeType":"ImportDirective","src":"214:74:12","nodes":[],"absolutePath":"src/modules/interfaces/ICheckpointer.sol","file":"../interfaces/ICheckpointer.sol","nameLocation":"-1:-1:-1","scope":4215,"sourceUnit":4554,"symbolAliases":[{"foreign":{"id":2573,"name":"ICheckpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4553,"src":"223:13:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2574,"name":"Snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"238:8:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2578,"nodeType":"ImportDirective","src":"289:81:12","nodes":[],"absolutePath":"src/modules/interfaces/IERC1271.sol","file":"../interfaces/IERC1271.sol","nameLocation":"-1:-1:-1","scope":4215,"sourceUnit":4644,"symbolAliases":[{"foreign":{"id":2576,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4631,"src":"298:8:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2577,"name":"IERC1271_MAGIC_VALUE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"308:25:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2581,"nodeType":"ImportDirective","src":"371:71:12","nodes":[],"absolutePath":"src/modules/interfaces/ISapient.sol","file":"../interfaces/ISapient.sol","nameLocation":"-1:-1:-1","scope":4215,"sourceUnit":4762,"symbolAliases":[{"foreign":{"id":2579,"name":"ISapient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4749,"src":"380:8:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2580,"name":"ISapientCompact","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4761,"src":"390:15:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2584,"nodeType":"UsingForDirective","src":"444:25:12","nodes":[],"global":false,"libraryName":{"id":2582,"name":"LibBytes","nameLocations":["450:8:12"],"nodeType":"IdentifierPath","referencedDeclaration":4965,"src":"450:8:12"},"typeName":{"id":2583,"name":"bytes","nodeType":"ElementaryTypeName","src":"463:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"id":2588,"nodeType":"UsingForDirective","src":"470:34:12","nodes":[],"global":false,"libraryName":{"id":2585,"name":"Payload","nameLocations":["476:7:12"],"nodeType":"IdentifierPath","referencedDeclaration":1918,"src":"476:7:12"},"typeName":{"id":2587,"nodeType":"UserDefinedTypeName","pathNode":{"id":2586,"name":"Payload.Decoded","nameLocations":["488:7:12","496:7:12"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"488:15:12"},"referencedDeclaration":1284,"src":"488:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}}},{"id":4214,"nodeType":"ContractDefinition","src":"671:18739:12","nodes":[{"id":2592,"nodeType":"VariableDeclaration","src":"692:49:12","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SIGNATURE_HASH","nameLocation":"718:19:12","scope":4214,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2590,"name":"uint256","nodeType":"ElementaryTypeName","src":"692:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":2591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"740:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"id":2595,"nodeType":"VariableDeclaration","src":"745:42:12","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_ADDRESS","nameLocation":"771:12:12","scope":4214,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2593,"name":"uint256","nodeType":"ElementaryTypeName","src":"745:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":2594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"786:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"id":2598,"nodeType":"VariableDeclaration","src":"791:52:12","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SIGNATURE_ERC1271","nameLocation":"817:22:12","scope":4214,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2596,"name":"uint256","nodeType":"ElementaryTypeName","src":"791:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":2597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"842:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"id":2601,"nodeType":"VariableDeclaration","src":"847:39:12","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_NODE","nameLocation":"873:9:12","scope":4214,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2599,"name":"uint256","nodeType":"ElementaryTypeName","src":"847:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":2600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"885:1:12","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"id":2604,"nodeType":"VariableDeclaration","src":"890:41:12","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_BRANCH","nameLocation":"916:11:12","scope":4214,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2602,"name":"uint256","nodeType":"ElementaryTypeName","src":"890:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"34","id":2603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"930:1:12","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"id":2607,"nodeType":"VariableDeclaration","src":"935:44:12","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SUBDIGEST","nameLocation":"961:14:12","scope":4214,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2605,"name":"uint256","nodeType":"ElementaryTypeName","src":"935:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":2606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"978:1:12","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"id":2610,"nodeType":"VariableDeclaration","src":"983:41:12","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_NESTED","nameLocation":"1009:11:12","scope":4214,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2608,"name":"uint256","nodeType":"ElementaryTypeName","src":"983:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"36","id":2609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1023:1:12","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"visibility":"internal"},{"id":2613,"nodeType":"VariableDeclaration","src":"1028:53:12","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SIGNATURE_ETH_SIGN","nameLocation":"1054:23:12","scope":4214,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2611,"name":"uint256","nodeType":"ElementaryTypeName","src":"1028:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"37","id":2612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1080:1:12","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"visibility":"internal"},{"id":2616,"nodeType":"VariableDeclaration","src":"1085:66:12","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SIGNATURE_ANY_ADDRESS_SUBDIGEST","nameLocation":"1111:36:12","scope":4214,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2614,"name":"uint256","nodeType":"ElementaryTypeName","src":"1085:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":2615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1150:1:12","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"internal"},{"id":2619,"nodeType":"VariableDeclaration","src":"1155:52:12","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SIGNATURE_SAPIENT","nameLocation":"1181:22:12","scope":4214,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2617,"name":"uint256","nodeType":"ElementaryTypeName","src":"1155:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39","id":2618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1206:1:12","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"visibility":"internal"},{"id":2622,"nodeType":"VariableDeclaration","src":"1211:61:12","nodes":[],"constant":true,"mutability":"constant","name":"FLAG_SIGNATURE_SAPIENT_COMPACT","nameLocation":"1237:30:12","scope":4214,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2620,"name":"uint256","nodeType":"ElementaryTypeName","src":"1211:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130","id":2621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1270:2:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"visibility":"internal"},{"id":2631,"nodeType":"ErrorDefinition","src":"1355:87:12","nodes":[],"documentation":{"id":2623,"nodeType":"StructuredDocumentation","src":"1277:75:12","text":"@notice Error thrown when the weight is too low for a chained signature"},"errorSelector":"b006aba0","name":"LowWeightChainedSignature","nameLocation":"1361:25:12","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2625,"mutability":"mutable","name":"_signature","nameLocation":"1393:10:12","nodeType":"VariableDeclaration","scope":2631,"src":"1387:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2624,"name":"bytes","nodeType":"ElementaryTypeName","src":"1387:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2627,"mutability":"mutable","name":"_threshold","nameLocation":"1413:10:12","nodeType":"VariableDeclaration","scope":2631,"src":"1405:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2626,"name":"uint256","nodeType":"ElementaryTypeName","src":"1405:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"_weight","nameLocation":"1433:7:12","nodeType":"VariableDeclaration","scope":2631,"src":"1425:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2628,"name":"uint256","nodeType":"ElementaryTypeName","src":"1425:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1386:55:12"}},{"id":2640,"nodeType":"ErrorDefinition","src":"1510:82:12","nodes":[],"documentation":{"id":2632,"nodeType":"StructuredDocumentation","src":"1445:62:12","text":"@notice Error thrown when the ERC1271 signature is invalid"},"errorSelector":"b2fed7ae","name":"InvalidERC1271Signature","nameLocation":"1516:23:12","parameters":{"id":2639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"_opHash","nameLocation":"1548:7:12","nodeType":"VariableDeclaration","scope":2640,"src":"1540:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2633,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1540:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2636,"mutability":"mutable","name":"_signer","nameLocation":"1565:7:12","nodeType":"VariableDeclaration","scope":2640,"src":"1557:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2635,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2638,"mutability":"mutable","name":"_signature","nameLocation":"1580:10:12","nodeType":"VariableDeclaration","scope":2640,"src":"1574:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2637,"name":"bytes","nodeType":"ElementaryTypeName","src":"1574:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1539:52:12"}},{"id":2647,"nodeType":"ErrorDefinition","src":"1657:80:12","nodes":[],"documentation":{"id":2641,"nodeType":"StructuredDocumentation","src":"1595:59:12","text":"@notice Error thrown when the checkpoint order is wrong"},"errorSelector":"37daf62b","name":"WrongChainedCheckpointOrder","nameLocation":"1663:27:12","parameters":{"id":2646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2643,"mutability":"mutable","name":"_nextCheckpoint","nameLocation":"1699:15:12","nodeType":"VariableDeclaration","scope":2647,"src":"1691:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2642,"name":"uint256","nodeType":"ElementaryTypeName","src":"1691:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2645,"mutability":"mutable","name":"_checkpoint","nameLocation":"1724:11:12","nodeType":"VariableDeclaration","scope":2647,"src":"1716:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2644,"name":"uint256","nodeType":"ElementaryTypeName","src":"1716:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1690:46:12"}},{"id":2653,"nodeType":"ErrorDefinition","src":"1795:41:12","nodes":[],"documentation":{"id":2648,"nodeType":"StructuredDocumentation","src":"1740:52:12","text":"@notice Error thrown when the snapshot is unused"},"errorSelector":"ccbb534f","name":"UnusedSnapshot","nameLocation":"1801:14:12","parameters":{"id":2652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2651,"mutability":"mutable","name":"_snapshot","nameLocation":"1825:9:12","nodeType":"VariableDeclaration","scope":2653,"src":"1816:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot"},"typeName":{"id":2650,"nodeType":"UserDefinedTypeName","pathNode":{"id":2649,"name":"Snapshot","nameLocations":["1816:8:12"],"nodeType":"IdentifierPath","referencedDeclaration":4540,"src":"1816:8:12"},"referencedDeclaration":4540,"src":"1816:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_storage_ptr","typeString":"struct Snapshot"}},"visibility":"internal"}],"src":"1815:20:12"}},{"id":2658,"nodeType":"ErrorDefinition","src":"1901:42:12","nodes":[],"documentation":{"id":2654,"nodeType":"StructuredDocumentation","src":"1839:59:12","text":"@notice Error thrown when the signature flag is invalid"},"errorSelector":"b2505f7c","name":"InvalidSignatureFlag","nameLocation":"1907:20:12","parameters":{"id":2657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2656,"mutability":"mutable","name":"_flag","nameLocation":"1936:5:12","nodeType":"VariableDeclaration","scope":2658,"src":"1928:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2655,"name":"uint256","nodeType":"ElementaryTypeName","src":"1928:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1927:15:12"}},{"id":2661,"nodeType":"ErrorDefinition","src":"2041:49:12","nodes":[],"documentation":{"id":2659,"nodeType":"StructuredDocumentation","src":"1946:92:12","text":"@notice Error thrown when a chained signature is nested inside another chained signature"},"errorSelector":"fdf132ad","name":"ChainedSignatureNestedInChainedSignature","nameLocation":"2047:40:12","parameters":{"id":2660,"nodeType":"ParameterList","parameters":[],"src":"2087:2:12"}},{"id":2665,"nodeType":"EnumDefinition","src":"2094:85:12","nodes":[],"canonicalName":"BaseSig.RecoverMode","members":[{"id":2662,"name":"Initial","nameLocation":"2117:7:12","nodeType":"EnumValue","src":"2117:7:12"},{"id":2663,"name":"UseProvidedCheckpointer","nameLocation":"2130:23:12","nodeType":"EnumValue","src":"2130:23:12"},{"id":2664,"name":"SkipSnapshotRead","nameLocation":"2159:16:12","nodeType":"EnumValue","src":"2159:16:12"}],"name":"RecoverMode","nameLocation":"2099:11:12"},{"id":2684,"nodeType":"FunctionDefinition","src":"2183:181:12","nodes":[],"body":{"id":2683,"nodeType":"Block","src":"2281:83:12","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"53657175656e6365207369676e65723a0a","id":2677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2321:20:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c50c8e59dc73336f9600d21716f2eb311d05aee77dc581a5a8024234f75649e5","typeString":"literal_string hex\"53657175656e6365207369676e65723a0a\""},"value":"Sequence signer:\n"},{"id":2678,"name":"_addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2667,"src":"2343:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2679,"name":"_weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2669,"src":"2350:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c50c8e59dc73336f9600d21716f2eb311d05aee77dc581a5a8024234f75649e5","typeString":"literal_string hex\"53657175656e6365207369676e65723a0a\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2675,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2304:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2308:12:12","memberName":"encodePacked","nodeType":"MemberAccess","src":"2304:16:12","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2304:54:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2674,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2294:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2294:65:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2673,"id":2682,"nodeType":"Return","src":"2287:72:12"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_leafForAddressAndWeight","nameLocation":"2192:24:12","parameters":{"id":2670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2667,"mutability":"mutable","name":"_addr","nameLocation":"2225:5:12","nodeType":"VariableDeclaration","scope":2684,"src":"2217:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2666,"name":"address","nodeType":"ElementaryTypeName","src":"2217:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2669,"mutability":"mutable","name":"_weight","nameLocation":"2240:7:12","nodeType":"VariableDeclaration","scope":2684,"src":"2232:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2668,"name":"uint256","nodeType":"ElementaryTypeName","src":"2232:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2216:32:12"},"returnParameters":{"id":2673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2672,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2684,"src":"2272:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2671,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2272:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2271:9:12"},"scope":4214,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2706,"nodeType":"FunctionDefinition","src":"2368:210:12","nodes":[],"body":{"id":2705,"nodeType":"Block","src":"2476:102:12","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"53657175656e6365206e657374656420636f6e6669673a0a","id":2698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2516:27:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_58d1832f15932b40f8da147bd99ac98efab990f25a786a2229b05ee5f5be41a7","typeString":"literal_string hex\"53657175656e6365206e657374656420636f6e6669673a0a\""},"value":"Sequence nested config:\n"},{"id":2699,"name":"_node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"2545:5:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2700,"name":"_threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2688,"src":"2552:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2701,"name":"_weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2690,"src":"2564:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_58d1832f15932b40f8da147bd99ac98efab990f25a786a2229b05ee5f5be41a7","typeString":"literal_string hex\"53657175656e6365206e657374656420636f6e6669673a0a\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2696,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2499:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2503:12:12","memberName":"encodePacked","nodeType":"MemberAccess","src":"2499:16:12","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2499:73:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2695,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2489:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2489:84:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2694,"id":2704,"nodeType":"Return","src":"2482:91:12"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_leafForNested","nameLocation":"2377:14:12","parameters":{"id":2691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2686,"mutability":"mutable","name":"_node","nameLocation":"2400:5:12","nodeType":"VariableDeclaration","scope":2706,"src":"2392:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2685,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2392:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2688,"mutability":"mutable","name":"_threshold","nameLocation":"2415:10:12","nodeType":"VariableDeclaration","scope":2706,"src":"2407:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2687,"name":"uint256","nodeType":"ElementaryTypeName","src":"2407:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2690,"mutability":"mutable","name":"_weight","nameLocation":"2435:7:12","nodeType":"VariableDeclaration","scope":2706,"src":"2427:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2689,"name":"uint256","nodeType":"ElementaryTypeName","src":"2427:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2391:52:12"},"returnParameters":{"id":2694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2693,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2706,"src":"2467:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2692,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2467:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2466:9:12"},"scope":4214,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2728,"nodeType":"FunctionDefinition","src":"2582:212:12","nodes":[],"body":{"id":2727,"nodeType":"Block","src":"2691:103:12","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"53657175656e63652073617069656e7420636f6e6669673a0a","id":2720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2731:28:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc8102a6fc61346ec8cb26d526073734fc790a2138b3a629a10d5d59e5e0474d","typeString":"literal_string hex\"53657175656e63652073617069656e7420636f6e6669673a0a\""},"value":"Sequence sapient config:\n"},{"id":2721,"name":"_addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2708,"src":"2761:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2722,"name":"_weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"2768:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2723,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2712,"src":"2777:10:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_cc8102a6fc61346ec8cb26d526073734fc790a2138b3a629a10d5d59e5e0474d","typeString":"literal_string hex\"53657175656e63652073617069656e7420636f6e6669673a0a\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2718,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2714:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2718:12:12","memberName":"encodePacked","nodeType":"MemberAccess","src":"2714:16:12","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2714:74:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2717,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2704:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2704:85:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2716,"id":2726,"nodeType":"Return","src":"2697:92:12"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_leafForSapient","nameLocation":"2591:15:12","parameters":{"id":2713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2708,"mutability":"mutable","name":"_addr","nameLocation":"2615:5:12","nodeType":"VariableDeclaration","scope":2728,"src":"2607:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2707,"name":"address","nodeType":"ElementaryTypeName","src":"2607:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2710,"mutability":"mutable","name":"_weight","nameLocation":"2630:7:12","nodeType":"VariableDeclaration","scope":2728,"src":"2622:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2709,"name":"uint256","nodeType":"ElementaryTypeName","src":"2622:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2712,"mutability":"mutable","name":"_imageHash","nameLocation":"2647:10:12","nodeType":"VariableDeclaration","scope":2728,"src":"2639:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2711,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2639:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2606:52:12"},"returnParameters":{"id":2716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2715,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2728,"src":"2682:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2714,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2682:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2681:9:12"},"scope":4214,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2744,"nodeType":"FunctionDefinition","src":"2798:182:12","nodes":[],"body":{"id":2743,"nodeType":"Block","src":"2894:86:12","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"53657175656e636520737461746963206469676573743a0a","id":2738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2934:27:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_583557e68bca91e5400591dbc9ae31043113c95e3cd985463ae532f51d706f8c","typeString":"literal_string hex\"53657175656e636520737461746963206469676573743a0a\""},"value":"Sequence static digest:\n"},{"id":2739,"name":"_subdigest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"2963:10:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_583557e68bca91e5400591dbc9ae31043113c95e3cd985463ae532f51d706f8c","typeString":"literal_string hex\"53657175656e636520737461746963206469676573743a0a\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2736,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2917:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2921:12:12","memberName":"encodePacked","nodeType":"MemberAccess","src":"2917:16:12","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2917:57:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2735,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2907:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2907:68:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2734,"id":2742,"nodeType":"Return","src":"2900:75:12"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_leafForHardcodedSubdigest","nameLocation":"2807:26:12","parameters":{"id":2731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2730,"mutability":"mutable","name":"_subdigest","nameLocation":"2847:10:12","nodeType":"VariableDeclaration","scope":2744,"src":"2839:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2729,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2839:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2833:28:12"},"returnParameters":{"id":2734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2733,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2744,"src":"2885:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2732,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2885:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2884:9:12"},"scope":4214,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":2760,"nodeType":"FunctionDefinition","src":"2984:211:12","nodes":[],"body":{"id":2759,"nodeType":"Block","src":"3091:104:12","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"53657175656e636520616e792061646472657373207375626469676573743a0a","id":2754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3131:35:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_2de18b01fcf9a040f99bbca33e0663010b7bf255f29e5c6c28d4deac89cc6608","typeString":"literal_string hex\"53657175656e636520616e792061646472657373207375626469676573743a0a\""},"value":"Sequence any address subdigest:\n"},{"id":2755,"name":"_anyAddressSubdigest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"3168:20:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2de18b01fcf9a040f99bbca33e0663010b7bf255f29e5c6c28d4deac89cc6608","typeString":"literal_string hex\"53657175656e636520616e792061646472657373207375626469676573743a0a\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2752,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3114:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3118:12:12","memberName":"encodePacked","nodeType":"MemberAccess","src":"3114:16:12","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3114:75:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2751,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3104:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3104:86:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2750,"id":2758,"nodeType":"Return","src":"3097:93:12"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_leafForAnyAddressSubdigest","nameLocation":"2993:27:12","parameters":{"id":2747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2746,"mutability":"mutable","name":"_anyAddressSubdigest","nameLocation":"3034:20:12","nodeType":"VariableDeclaration","scope":2760,"src":"3026:28:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2745,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3026:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3020:38:12"},"returnParameters":{"id":2750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2760,"src":"3082:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2748,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3082:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3081:9:12"},"scope":4214,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":3027,"nodeType":"FunctionDefinition","src":"3199:3386:12","nodes":[],"body":{"id":3026,"nodeType":"Block","src":"3458:3127:12","nodes":[],"statements":[{"assignments":[2784,2786],"declarations":[{"constant":false,"id":2784,"mutability":"mutable","name":"signatureFlag","nameLocation":"3513:13:12","nodeType":"VariableDeclaration","scope":3026,"src":"3505:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2783,"name":"uint256","nodeType":"ElementaryTypeName","src":"3505:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2786,"mutability":"mutable","name":"rindex","nameLocation":"3536:6:12","nodeType":"VariableDeclaration","scope":3026,"src":"3528:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2785,"name":"uint256","nodeType":"ElementaryTypeName","src":"3528:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2790,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2787,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2765,"src":"3546:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3557:14:12","memberName":"readFirstUint8","nodeType":"MemberAccess","referencedDeclaration":4775,"src":"3546:25:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint8,uint256)"}},"id":2789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3546:27:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3504:69:12"},{"assignments":[2793],"declarations":[{"constant":false,"id":2793,"mutability":"mutable","name":"snapshot","nameLocation":"4015:8:12","nodeType":"VariableDeclaration","scope":3026,"src":"3999:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot"},"typeName":{"id":2792,"nodeType":"UserDefinedTypeName","pathNode":{"id":2791,"name":"Snapshot","nameLocations":["3999:8:12"],"nodeType":"IdentifierPath","referencedDeclaration":4540,"src":"3999:8:12"},"referencedDeclaration":4540,"src":"3999:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_storage_ptr","typeString":"struct Snapshot"}},"visibility":"internal"}],"id":2794,"nodeType":"VariableDeclarationStatement","src":"3999:24:12"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"},"id":2798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2795,"name":"_recoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"4200:12:12","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2796,"name":"RecoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"4216:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2665_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4228:23:12","memberName":"UseProvidedCheckpointer","nodeType":"MemberAccess","referencedDeclaration":2663,"src":"4216:35:12","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},"src":"4200:51:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2867,"nodeType":"IfStatement","src":"4196:870:12","trueBody":{"id":2866,"nodeType":"Block","src":"4253:813:12","statements":[{"expression":{"id":2804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2799,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2770,"src":"4362:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4386:1:12","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":2801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4378:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2800,"name":"address","nodeType":"ElementaryTypeName","src":"4378:7:12","typeDescriptions":{}}},"id":2803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4378:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4362:26:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2805,"nodeType":"ExpressionStatement","src":"4362:26:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2806,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"4401:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783430","id":2807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4417:4:12","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"src":"4401:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783430","id":2809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4425:4:12","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"0x40"},"src":"4401:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2865,"nodeType":"IfStatement","src":"4397:663:12","trueBody":{"id":2864,"nodeType":"Block","src":"4431:629:12","statements":[{"expression":{"id":2818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2811,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2770,"src":"4442:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2812,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"4457:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2813,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4441:23:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2816,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"4490:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2814,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2765,"src":"4467:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4478:11:12","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":4907,"src":"4467:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4467:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"4441:56:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2819,"nodeType":"ExpressionStatement","src":"4441:56:12"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"},"id":2823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2820,"name":"_recoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"4512:12:12","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2821,"name":"RecoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"4528:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2665_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":2822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4540:16:12","memberName":"SkipSnapshotRead","nodeType":"MemberAccess","referencedDeclaration":2664,"src":"4528:28:12","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},"src":"4512:44:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2863,"nodeType":"IfStatement","src":"4508:544:12","trueBody":{"id":2862,"nodeType":"Block","src":"4558:494:12","statements":[{"assignments":[2825],"declarations":[{"constant":false,"id":2825,"mutability":"mutable","name":"checkpointerDataSize","nameLocation":"4641:20:12","nodeType":"VariableDeclaration","scope":2862,"src":"4633:28:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2824,"name":"uint256","nodeType":"ElementaryTypeName","src":"4633:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2826,"nodeType":"VariableDeclarationStatement","src":"4633:28:12"},{"expression":{"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2827,"name":"checkpointerDataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2825,"src":"4674:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2828,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"4696:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2829,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4673:30:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2832,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"4728:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2830,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2765,"src":"4706:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4717:10:12","memberName":"readUint24","nodeType":"MemberAccess","referencedDeclaration":4814,"src":"4706:21:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint24,uint256)"}},"id":2833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4706:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint24_$_t_uint256_$","typeString":"tuple(uint24,uint256)"}},"src":"4673:62:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2835,"nodeType":"ExpressionStatement","src":"4673:62:12"},{"assignments":[2837],"declarations":[{"constant":false,"id":2837,"mutability":"mutable","name":"checkpointerData","nameLocation":"4801:16:12","nodeType":"VariableDeclaration","scope":2862,"src":"4788:29:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2836,"name":"bytes","nodeType":"ElementaryTypeName","src":"4788:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2844,"initialValue":{"baseExpression":{"id":2838,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2765,"src":"4820:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2840,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"4838:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2841,"name":"checkpointerDataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2825,"src":"4847:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4838:29:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"4820:48:12","startExpression":{"id":2839,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"4831:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"nodeType":"VariableDeclarationStatement","src":"4788:80:12"},{"expression":{"id":2856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2845,"name":"snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"4914:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":2852,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4974:4:12","typeDescriptions":{"typeIdentifier":"t_contract$_BaseSig_$4214","typeString":"library BaseSig"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseSig_$4214","typeString":"library BaseSig"}],"id":2851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4966:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2850,"name":"address","nodeType":"ElementaryTypeName","src":"4966:7:12","typeDescriptions":{}}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4966:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2854,"name":"checkpointerData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2837,"src":"4981:16:12","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":{"arguments":[{"id":2847,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2770,"src":"4939:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2846,"name":"ICheckpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4553,"src":"4925:13:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICheckpointer_$4553_$","typeString":"type(contract ICheckpointer)"}},"id":2848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4925:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICheckpointer_$4553","typeString":"contract ICheckpointer"}},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4954:11:12","memberName":"snapshotFor","nodeType":"MemberAccess","referencedDeclaration":4552,"src":"4925:40:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_struct$_Snapshot_$4540_memory_ptr_$","typeString":"function (address,bytes memory) view external returns (struct Snapshot memory)"}},"id":2855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4925:73:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}},"src":"4914:84:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}},"id":2857,"nodeType":"ExpressionStatement","src":"4914:84:12"},{"expression":{"id":2860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2858,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"5011:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2859,"name":"checkpointerDataSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2825,"src":"5021:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5011:30:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2861,"nodeType":"ExpressionStatement","src":"5011:30:12"}]}}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2868,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"5139:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783031","id":2869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5155:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"5139:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783031","id":2871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5163:4:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"src":"5139:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2892,"nodeType":"IfStatement","src":"5135:242:12","trueBody":{"id":2891,"nodeType":"Block","src":"5169:208:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2873,"name":"_recoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2768,"src":"5181:12:12","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2874,"name":"RecoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"5197:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2665_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":2875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5209:7:12","memberName":"Initial","nodeType":"MemberAccess","referencedDeclaration":2662,"src":"5197:19:12","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},"src":"5181:35:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2881,"nodeType":"IfStatement","src":"5177:109:12","trueBody":{"id":2880,"nodeType":"Block","src":"5218:68:12","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2877,"name":"ChainedSignatureNestedInChainedSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2661,"src":"5235:40:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5235:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2879,"nodeType":"RevertStatement","src":"5228:49:12"}]}},{"expression":{"arguments":[{"id":2883,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2763,"src":"5315:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2884,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2770,"src":"5325:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2885,"name":"snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"5340:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}},{"baseExpression":{"id":2886,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2765,"src":"5350:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"5350:19:12","startExpression":{"id":2887,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"5361:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":2882,"name":"recoverChained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3230,"src":"5300:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_address_$_t_struct$_Snapshot_$4540_memory_ptr_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,address,struct Snapshot memory,bytes calldata) view returns (uint256,uint256,bytes32,uint256,bytes32)"}},"id":2889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5300:70:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"functionReturnParameters":2782,"id":2890,"nodeType":"Return","src":"5293:77:12"}]}},{"expression":{"id":2901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2893,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2763,"src":"5448:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2895,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5457:9:12","memberName":"noChainId","nodeType":"MemberAccess","referencedDeclaration":1266,"src":"5448:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2896,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"5469:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783032","id":2897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5485:4:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"5469:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783032","id":2899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5493:4:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x02"},"src":"5469:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5448:49:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2902,"nodeType":"ExpressionStatement","src":"5448:49:12"},{"id":2922,"nodeType":"Block","src":"5504:209:12","statements":[{"assignments":[2904],"declarations":[{"constant":false,"id":2904,"mutability":"mutable","name":"checkpointSize","nameLocation":"5587:14:12","nodeType":"VariableDeclaration","scope":2922,"src":"5579:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2903,"name":"uint256","nodeType":"ElementaryTypeName","src":"5579:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2911,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2905,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"5605:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783163","id":2906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5621:4:12","typeDescriptions":{"typeIdentifier":"t_rational_28_by_1","typeString":"int_const 28"},"value":"0x1c"},"src":"5605:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2908,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5604:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":2909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5630:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5604:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5579:52:12"},{"expression":{"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2912,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"5640:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2913,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"5652:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2914,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5639:20:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2917,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"5683:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2918,"name":"checkpointSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"5691:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2915,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2765,"src":"5662:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5673:9:12","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4868,"src":"5662:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":2919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5662:44:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5639:67:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2921,"nodeType":"ExpressionStatement","src":"5639:67:12"}]},{"id":2945,"nodeType":"Block","src":"5777:145:12","statements":[{"assignments":[2924],"declarations":[{"constant":false,"id":2924,"mutability":"mutable","name":"thresholdSize","nameLocation":"5793:13:12","nodeType":"VariableDeclaration","scope":2945,"src":"5785:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2923,"name":"uint256","nodeType":"ElementaryTypeName","src":"5785:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2934,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2925,"name":"signatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"5811:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783230","id":2926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5827:4:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5811:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2928,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5810:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"35","id":2929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5836:1:12","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"5810:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2931,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5809:29:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5841:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5809:33:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5785:57:12"},{"expression":{"id":2943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2935,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2773,"src":"5851:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2936,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"5862:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2937,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5850:19:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2940,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"5893:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2941,"name":"thresholdSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2924,"src":"5901:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2938,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2765,"src":"5872:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5883:9:12","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4868,"src":"5872:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5872:43:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5850:65:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2944,"nodeType":"ExpressionStatement","src":"5850:65:12"}]},{"expression":{"id":2950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2946,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2781,"src":"5952:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2947,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2763,"src":"5961:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":2948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5970:4:12","memberName":"hash","nodeType":"MemberAccess","referencedDeclaration":1883,"src":"5961:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Decoded_$1284_memory_ptr_$","typeString":"function (struct Payload.Decoded memory) view returns (bytes32)"}},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5961:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5952:24:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2951,"nodeType":"ExpressionStatement","src":"5952:24:12"},{"expression":{"id":2962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2952,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2775,"src":"5983:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2953,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"5991:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2954,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5982:19:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2956,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2763,"src":"6018:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":2957,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2781,"src":"6028:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":2958,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2765,"src":"6036:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6036:19:12","startExpression":{"id":2959,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"6047:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":2955,"name":"recoverBranch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4213,"src":"6004:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes32,bytes calldata) view returns (uint256,bytes32)"}},"id":2961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6004:52:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,bytes32)"}},"src":"5982:74:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2963,"nodeType":"ExpressionStatement","src":"5982:74:12"},{"expression":{"id":2973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2964,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"6063:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2967,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"6095:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":2970,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2773,"src":"6114:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6106:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2968,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6106:7:12","typeDescriptions":{}}},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6106:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2965,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"6075:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":2966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6084:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"6075:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":2972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6075:50:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6063:62:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2974,"nodeType":"ExpressionStatement","src":"6063:62:12"},{"expression":{"id":2984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2975,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"6131:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2978,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"6163:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":2981,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"6182:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6174:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6174:7:12","typeDescriptions":{}}},"id":2982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2976,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"6143:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":2977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6152:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"6143:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":2983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6143:51:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6131:63:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2985,"nodeType":"ExpressionStatement","src":"6131:63:12"},{"expression":{"id":3001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2986,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"6200:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2989,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"6232:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"arguments":[{"arguments":[{"id":2996,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2770,"src":"6267:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6259:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2994,"name":"uint160","nodeType":"ElementaryTypeName","src":"6259:7:12","typeDescriptions":{}}},"id":2997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6259:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6251:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2992,"name":"uint256","nodeType":"ElementaryTypeName","src":"6251:7:12","typeDescriptions":{}}},"id":2998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6251:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6243:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2990,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6243:7:12","typeDescriptions":{}}},"id":2999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6243:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":2987,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"6212:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":2988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6221:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"6212:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6212:72:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6200:84:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3002,"nodeType":"ExpressionStatement","src":"6200:84:12"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3003,"name":"snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"6429:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}},"id":3004,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6438:9:12","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":4537,"src":"6429:18:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6459:1:12","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":3006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6451:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3005,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6451:7:12","typeDescriptions":{}}},"id":3008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6451:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6429:32:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3010,"name":"snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"6465:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}},"id":3011,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6474:9:12","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":4537,"src":"6465:18:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3012,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2777,"src":"6487:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6465:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6429:67:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3015,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2779,"src":"6500:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":3016,"name":"snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"6514:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}},"id":3017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6523:10:12","memberName":"checkpoint","nodeType":"MemberAccess","referencedDeclaration":4539,"src":"6514:19:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6500:33:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6429:104:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3025,"nodeType":"IfStatement","src":"6425:156:12","trueBody":{"id":3024,"nodeType":"Block","src":"6535:46:12","statements":[{"errorCall":{"arguments":[{"id":3021,"name":"snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"6565:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}],"id":3020,"name":"UnusedSnapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2653,"src":"6550:14:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Snapshot_$4540_memory_ptr_$returns$_t_error_$","typeString":"function (struct Snapshot memory) pure returns (error)"}},"id":3022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6550:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3023,"nodeType":"RevertStatement","src":"6543:31:12"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3208:7:12","parameters":{"id":2771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2763,"mutability":"mutable","name":"_payload","nameLocation":"3244:8:12","nodeType":"VariableDeclaration","scope":3027,"src":"3221:31:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":2762,"nodeType":"UserDefinedTypeName","pathNode":{"id":2761,"name":"Payload.Decoded","nameLocations":["3221:7:12","3229:7:12"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"3221:15:12"},"referencedDeclaration":1284,"src":"3221:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":2765,"mutability":"mutable","name":"_signature","nameLocation":"3273:10:12","nodeType":"VariableDeclaration","scope":3027,"src":"3258:25:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2764,"name":"bytes","nodeType":"ElementaryTypeName","src":"3258:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2768,"mutability":"mutable","name":"_recoverMode","nameLocation":"3301:12:12","nodeType":"VariableDeclaration","scope":3027,"src":"3289:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"},"typeName":{"id":2767,"nodeType":"UserDefinedTypeName","pathNode":{"id":2766,"name":"RecoverMode","nameLocations":["3289:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":2665,"src":"3289:11:12"},"referencedDeclaration":2665,"src":"3289:11:12","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},"visibility":"internal"},{"constant":false,"id":2770,"mutability":"mutable","name":"_checkpointer","nameLocation":"3327:13:12","nodeType":"VariableDeclaration","scope":3027,"src":"3319:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2769,"name":"address","nodeType":"ElementaryTypeName","src":"3319:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3215:129:12"},"returnParameters":{"id":2782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2773,"mutability":"mutable","name":"threshold","nameLocation":"3376:9:12","nodeType":"VariableDeclaration","scope":3027,"src":"3368:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2772,"name":"uint256","nodeType":"ElementaryTypeName","src":"3368:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2775,"mutability":"mutable","name":"weight","nameLocation":"3395:6:12","nodeType":"VariableDeclaration","scope":3027,"src":"3387:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2774,"name":"uint256","nodeType":"ElementaryTypeName","src":"3387:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2777,"mutability":"mutable","name":"imageHash","nameLocation":"3411:9:12","nodeType":"VariableDeclaration","scope":3027,"src":"3403:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2776,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3403:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2779,"mutability":"mutable","name":"checkpoint","nameLocation":"3430:10:12","nodeType":"VariableDeclaration","scope":3027,"src":"3422:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2778,"name":"uint256","nodeType":"ElementaryTypeName","src":"3422:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2781,"mutability":"mutable","name":"opHash","nameLocation":"3450:6:12","nodeType":"VariableDeclaration","scope":3027,"src":"3442:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2780,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3442:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3367:90:12"},"scope":4214,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":3230,"nodeType":"FunctionDefinition","src":"6589:1730:12","nodes":[],"body":{"id":3229,"nodeType":"Block","src":"6856:1463:12","nodes":[],"statements":[{"assignments":[3054],"declarations":[{"constant":false,"id":3054,"mutability":"mutable","name":"linkedPayload","nameLocation":"6885:13:12","nodeType":"VariableDeclaration","scope":3229,"src":"6862:36:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":3053,"nodeType":"UserDefinedTypeName","pathNode":{"id":3052,"name":"Payload.Decoded","nameLocations":["6862:7:12","6870:7:12"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"6862:15:12"},"referencedDeclaration":1284,"src":"6862:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"}],"id":3055,"nodeType":"VariableDeclarationStatement","src":"6862:36:12"},{"expression":{"id":3061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3056,"name":"linkedPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3054,"src":"6904:13:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":3058,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6918:4:12","memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":1264,"src":"6904:18:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3059,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"6925:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Payload_$1918_$","typeString":"type(library Payload)"}},"id":3060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6933:18:12","memberName":"KIND_CONFIG_UPDATE","nodeType":"MemberAccess","referencedDeclaration":1229,"src":"6925:26:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6904:47:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3062,"nodeType":"ExpressionStatement","src":"6904:47:12"},{"assignments":[3064],"declarations":[{"constant":false,"id":3064,"mutability":"mutable","name":"rindex","nameLocation":"6966:6:12","nodeType":"VariableDeclaration","scope":3229,"src":"6958:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3063,"name":"uint256","nodeType":"ElementaryTypeName","src":"6958:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3065,"nodeType":"VariableDeclarationStatement","src":"6958:14:12"},{"assignments":[3067],"declarations":[{"constant":false,"id":3067,"mutability":"mutable","name":"prevCheckpoint","nameLocation":"6986:14:12","nodeType":"VariableDeclaration","scope":3229,"src":"6978:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3066,"name":"uint256","nodeType":"ElementaryTypeName","src":"6978:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3073,"initialValue":{"expression":{"arguments":[{"id":3070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7008:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3069,"name":"uint256","nodeType":"ElementaryTypeName","src":"7008:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3068,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7003:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7003:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7017:3:12","memberName":"max","nodeType":"MemberAccess","src":"7003:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6978:42:12"},{"body":{"id":3209,"nodeType":"Block","src":"7062:1123:12","statements":[{"assignments":[3079],"declarations":[{"constant":false,"id":3079,"mutability":"mutable","name":"nrindex","nameLocation":"7078:7:12","nodeType":"VariableDeclaration","scope":3209,"src":"7070:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3078,"name":"uint256","nodeType":"ElementaryTypeName","src":"7070:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3080,"nodeType":"VariableDeclarationStatement","src":"7070:15:12"},{"id":3099,"nodeType":"Block","src":"7094:129:12","statements":[{"assignments":[3082],"declarations":[{"constant":false,"id":3082,"mutability":"mutable","name":"sigSize","nameLocation":"7112:7:12","nodeType":"VariableDeclaration","scope":3099,"src":"7104:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3081,"name":"uint256","nodeType":"ElementaryTypeName","src":"7104:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3083,"nodeType":"VariableDeclarationStatement","src":"7104:15:12"},{"expression":{"id":3091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3084,"name":"sigSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3082,"src":"7130:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3085,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"7139:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3086,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7129:17:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3089,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"7171:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3087,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"7149:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7160:10:12","memberName":"readUint24","nodeType":"MemberAccess","referencedDeclaration":4814,"src":"7149:21:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint24,uint256)"}},"id":3090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7149:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint24_$_t_uint256_$","typeString":"tuple(uint24,uint256)"}},"src":"7129:49:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3092,"nodeType":"ExpressionStatement","src":"7129:49:12"},{"expression":{"id":3097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3093,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"7188:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3094,"name":"sigSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3082,"src":"7198:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3095,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"7208:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7198:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7188:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3098,"nodeType":"ExpressionStatement","src":"7188:26:12"}]},{"assignments":[3102],"declarations":[{"constant":false,"id":3102,"mutability":"mutable","name":"recoverMode","nameLocation":"7243:11:12","nodeType":"VariableDeclaration","scope":3209,"src":"7231:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"},"typeName":{"id":3101,"nodeType":"UserDefinedTypeName","pathNode":{"id":3100,"name":"RecoverMode","nameLocations":["7231:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":2665,"src":"7231:11:12"},"referencedDeclaration":2665,"src":"7231:11:12","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},"visibility":"internal"}],"id":3112,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3103,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"7265:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3104,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"7276:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7287:6:12","memberName":"length","nodeType":"MemberAccess","src":"7276:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7265:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":3109,"name":"RecoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"7334:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2665_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":3110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7346:16:12","memberName":"SkipSnapshotRead","nodeType":"MemberAccess","referencedDeclaration":2664,"src":"7334:28:12","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},"id":3111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7265:97:12","trueExpression":{"expression":{"id":3107,"name":"RecoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2665,"src":"7296:11:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverMode_$2665_$","typeString":"type(enum BaseSig.RecoverMode)"}},"id":3108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7308:23:12","memberName":"UseProvidedCheckpointer","nodeType":"MemberAccess","referencedDeclaration":2663,"src":"7296:35:12","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},"typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},"nodeType":"VariableDeclarationStatement","src":"7231:131:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3113,"name":"prevCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"7375:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":3116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7398:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3115,"name":"uint256","nodeType":"ElementaryTypeName","src":"7398:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3114,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7393:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7393:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7407:3:12","memberName":"max","nodeType":"MemberAccess","src":"7393:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7375:35:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3154,"nodeType":"Block","src":"7573:153:12","statements":[{"expression":{"id":3152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3138,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3040,"src":"7584:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3139,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3042,"src":"7595:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3140,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"7603:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3141,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"7614:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},null],"id":3142,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7583:43:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$__$","typeString":"tuple(uint256,uint256,bytes32,uint256,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3144,"name":"linkedPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3054,"src":"7647:13:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"baseExpression":{"id":3145,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"7662:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3147,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"7680:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"7662:26:12","startExpression":{"id":3146,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"7673:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"id":3149,"name":"recoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"7690:11:12","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},{"id":3150,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"7703:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3143,"name":"recover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3027,"src":"7639:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes_calldata_ptr_$_t_enum$_RecoverMode_$2665_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata,enum BaseSig.RecoverMode,address) view returns (uint256,uint256,bytes32,uint256,bytes32)"}},"id":3151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7639:78:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"src":"7583:134:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3153,"nodeType":"ExpressionStatement","src":"7583:134:12"}]},"id":3155,"nodeType":"IfStatement","src":"7371:355:12","trueBody":{"id":3137,"nodeType":"Block","src":"7412:155:12","statements":[{"expression":{"id":3135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3120,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3040,"src":"7423:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3121,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3042,"src":"7434:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3122,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"7442:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3123,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"7453:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3124,"name":"opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3048,"src":"7465:6:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3125,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7422:50:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3127,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3030,"src":"7493:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"baseExpression":{"id":3128,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"7503:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3130,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"7521:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"7503:26:12","startExpression":{"id":3129,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"7514:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"id":3132,"name":"recoverMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"7531:11:12","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"}},{"id":3133,"name":"_checkpointer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"7544:13:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_enum$_RecoverMode_$2665","typeString":"enum BaseSig.RecoverMode"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3126,"name":"recover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3027,"src":"7485:7:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes_calldata_ptr_$_t_enum$_RecoverMode_$2665_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes calldata,enum BaseSig.RecoverMode,address) view returns (uint256,uint256,bytes32,uint256,bytes32)"}},"id":3134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7485:73:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_bytes32_$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,uint256,bytes32,uint256,bytes32)"}},"src":"7422:136:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3136,"nodeType":"ExpressionStatement","src":"7422:136:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3156,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3042,"src":"7738:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3157,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3040,"src":"7747:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7738:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3169,"nodeType":"IfStatement","src":"7734:122:12","trueBody":{"id":3168,"nodeType":"Block","src":"7758:98:12","statements":[{"errorCall":{"arguments":[{"baseExpression":{"id":3160,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"7801:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3162,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"7819:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"7801:26:12","startExpression":{"id":3161,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"7812:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"id":3164,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3040,"src":"7829:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3165,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3042,"src":"7840:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3159,"name":"LowWeightChainedSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"7775:25:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (bytes memory,uint256,uint256) pure returns (error)"}},"id":3166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7775:72:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3167,"nodeType":"RevertStatement","src":"7768:79:12"}]}},{"expression":{"id":3172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3170,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"7863:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3171,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"7872:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7863:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3173,"nodeType":"ExpressionStatement","src":"7863:16:12"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3174,"name":"_snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"7892:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}},"id":3175,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7902:9:12","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":4537,"src":"7892:19:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3176,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"7915:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7892:32:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3188,"nodeType":"IfStatement","src":"7888:89:12","trueBody":{"id":3187,"nodeType":"Block","src":"7926:51:12","statements":[{"expression":{"id":3185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3178,"name":"_snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"7936:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}},"id":3180,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7946:9:12","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":4537,"src":"7936:19:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":3183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7966:1:12","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":3182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7958:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3181,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7958:7:12","typeDescriptions":{}}},"id":3184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7958:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7936:32:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3186,"nodeType":"ExpressionStatement","src":"7936:32:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3189,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"7989:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3190,"name":"prevCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"8003:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7989:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3198,"nodeType":"IfStatement","src":"7985:115:12","trueBody":{"id":3197,"nodeType":"Block","src":"8019:81:12","statements":[{"errorCall":{"arguments":[{"id":3193,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"8064:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3194,"name":"prevCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"8076:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3192,"name":"WrongChainedCheckpointOrder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2647,"src":"8036:27:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8036:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3196,"nodeType":"RevertStatement","src":"8029:62:12"}]}},{"expression":{"id":3203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3199,"name":"linkedPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3054,"src":"8108:13:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":3201,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8122:9:12","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":1278,"src":"8108:23:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3202,"name":"imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"8134:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8108:35:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3204,"nodeType":"ExpressionStatement","src":"8108:35:12"},{"expression":{"id":3207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3205,"name":"prevCheckpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3067,"src":"8151:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3206,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"8168:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8151:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3208,"nodeType":"ExpressionStatement","src":"8151:27:12"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3074,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"7034:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3075,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"7043:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7054:6:12","memberName":"length","nodeType":"MemberAccess","src":"7043:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7034:26:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3210,"nodeType":"WhileStatement","src":"7027:1158:12"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3211,"name":"_snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"8195:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}},"id":3212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8205:9:12","memberName":"imageHash","nodeType":"MemberAccess","referencedDeclaration":4537,"src":"8195:19:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8226:1:12","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":3214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8218:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3213,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8218:7:12","typeDescriptions":{}}},"id":3216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8218:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8195:33:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3218,"name":"checkpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"8232:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":3219,"name":"_snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"8246:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}},"id":3220,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8256:10:12","memberName":"checkpoint","nodeType":"MemberAccess","referencedDeclaration":4539,"src":"8246:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8232:34:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8195:71:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3228,"nodeType":"IfStatement","src":"8191:124:12","trueBody":{"id":3227,"nodeType":"Block","src":"8268:47:12","statements":[{"errorCall":{"arguments":[{"id":3224,"name":"_snapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"8298:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot memory"}],"id":3223,"name":"UnusedSnapshot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2653,"src":"8283:14:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_Snapshot_$4540_memory_ptr_$returns$_t_error_$","typeString":"function (struct Snapshot memory) pure returns (error)"}},"id":3225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8283:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3226,"nodeType":"RevertStatement","src":"8276:32:12"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"recoverChained","nameLocation":"6598:14:12","parameters":{"id":3038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3030,"mutability":"mutable","name":"_payload","nameLocation":"6641:8:12","nodeType":"VariableDeclaration","scope":3230,"src":"6618:31:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":3029,"nodeType":"UserDefinedTypeName","pathNode":{"id":3028,"name":"Payload.Decoded","nameLocations":["6618:7:12","6626:7:12"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"6618:15:12"},"referencedDeclaration":1284,"src":"6618:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":3032,"mutability":"mutable","name":"_checkpointer","nameLocation":"6663:13:12","nodeType":"VariableDeclaration","scope":3230,"src":"6655:21:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3031,"name":"address","nodeType":"ElementaryTypeName","src":"6655:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3035,"mutability":"mutable","name":"_snapshot","nameLocation":"6698:9:12","nodeType":"VariableDeclaration","scope":3230,"src":"6682:25:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot"},"typeName":{"id":3034,"nodeType":"UserDefinedTypeName","pathNode":{"id":3033,"name":"Snapshot","nameLocations":["6682:8:12"],"nodeType":"IdentifierPath","referencedDeclaration":4540,"src":"6682:8:12"},"referencedDeclaration":4540,"src":"6682:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_storage_ptr","typeString":"struct Snapshot"}},"visibility":"internal"},{"constant":false,"id":3037,"mutability":"mutable","name":"_signature","nameLocation":"6728:10:12","nodeType":"VariableDeclaration","scope":3230,"src":"6713:25:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3036,"name":"bytes","nodeType":"ElementaryTypeName","src":"6713:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6612:130:12"},"returnParameters":{"id":3049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3040,"mutability":"mutable","name":"threshold","nameLocation":"6774:9:12","nodeType":"VariableDeclaration","scope":3230,"src":"6766:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3039,"name":"uint256","nodeType":"ElementaryTypeName","src":"6766:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3042,"mutability":"mutable","name":"weight","nameLocation":"6793:6:12","nodeType":"VariableDeclaration","scope":3230,"src":"6785:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3041,"name":"uint256","nodeType":"ElementaryTypeName","src":"6785:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3044,"mutability":"mutable","name":"imageHash","nameLocation":"6809:9:12","nodeType":"VariableDeclaration","scope":3230,"src":"6801:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3043,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6801:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3046,"mutability":"mutable","name":"checkpoint","nameLocation":"6828:10:12","nodeType":"VariableDeclaration","scope":3230,"src":"6820:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3045,"name":"uint256","nodeType":"ElementaryTypeName","src":"6820:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3048,"mutability":"mutable","name":"opHash","nameLocation":"6848:6:12","nodeType":"VariableDeclaration","scope":3230,"src":"6840:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3047,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6840:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6765:90:12"},"scope":4214,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":4213,"nodeType":"FunctionDefinition","src":"8323:11084:12","nodes":[],"body":{"id":4212,"nodeType":"Block","src":"8492:10915:12","nodes":[],"statements":[{"id":4211,"nodeType":"UncheckedBlock","src":"8498:10905:12","statements":[{"assignments":[3245],"declarations":[{"constant":false,"id":3245,"mutability":"mutable","name":"rindex","nameLocation":"8524:6:12","nodeType":"VariableDeclaration","scope":4211,"src":"8516:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3244,"name":"uint256","nodeType":"ElementaryTypeName","src":"8516:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3246,"nodeType":"VariableDeclarationStatement","src":"8516:14:12"},{"body":{"id":4209,"nodeType":"Block","src":"8620:10777:12","statements":[{"assignments":[3252],"declarations":[{"constant":false,"id":3252,"mutability":"mutable","name":"firstByte","nameLocation":"8797:9:12","nodeType":"VariableDeclaration","scope":4209,"src":"8789:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3251,"name":"uint256","nodeType":"ElementaryTypeName","src":"8789:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3253,"nodeType":"VariableDeclarationStatement","src":"8789:17:12"},{"expression":{"id":3261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3254,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"8817:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3255,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"8828:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3256,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8816:19:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3259,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"8859:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3257,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"8838:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8849:9:12","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":4788,"src":"8838:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":3260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8838:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"8816:50:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3262,"nodeType":"ExpressionStatement","src":"8816:50:12"},{"assignments":[3264],"declarations":[{"constant":false,"id":3264,"mutability":"mutable","name":"flag","nameLocation":"8924:4:12","nodeType":"VariableDeclaration","scope":4209,"src":"8916:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3263,"name":"uint256","nodeType":"ElementaryTypeName","src":"8916:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3271,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3265,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"8932:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30786630","id":3266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8944:4:12","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"0xf0"},"src":"8932:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8931:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":3269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8953:1:12","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"8931:23:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8916:38:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3272,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"9002:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3273,"name":"FLAG_SIGNATURE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"9010:19:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9002:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3356,"nodeType":"IfStatement","src":"8998:864:12","trueBody":{"id":3355,"nodeType":"Block","src":"9031:831:12","statements":[{"assignments":[3276],"declarations":[{"constant":false,"id":3276,"mutability":"mutable","name":"addrWeight","nameLocation":"9323:10:12","nodeType":"VariableDeclaration","scope":3355,"src":"9317:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3275,"name":"uint8","nodeType":"ElementaryTypeName","src":"9317:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3283,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3279,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"9342:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783066","id":3280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9354:4:12","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0x0f"},"src":"9342:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9336:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3277,"name":"uint8","nodeType":"ElementaryTypeName","src":"9336:5:12","typeDescriptions":{}}},"id":3282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9336:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"9317:42:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3284,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3276,"src":"9375:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9389:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9375:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3297,"nodeType":"IfStatement","src":"9371:99:12","trueBody":{"id":3296,"nodeType":"Block","src":"9392:78:12","statements":[{"expression":{"id":3294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3287,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3276,"src":"9407:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3288,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"9419:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3289,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9406:20:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3292,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"9450:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3290,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"9429:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9440:9:12","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":4788,"src":"9429:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":3293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9429:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"9406:51:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3295,"nodeType":"ExpressionStatement","src":"9406:51:12"}]}},{"assignments":[3299],"declarations":[{"constant":false,"id":3299,"mutability":"mutable","name":"r","nameLocation":"9490:1:12","nodeType":"VariableDeclaration","scope":3355,"src":"9482:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3298,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9482:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3300,"nodeType":"VariableDeclarationStatement","src":"9482:9:12"},{"assignments":[3302],"declarations":[{"constant":false,"id":3302,"mutability":"mutable","name":"s","nameLocation":"9511:1:12","nodeType":"VariableDeclaration","scope":3355,"src":"9503:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3301,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9503:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3303,"nodeType":"VariableDeclarationStatement","src":"9503:9:12"},{"assignments":[3305],"declarations":[{"constant":false,"id":3305,"mutability":"mutable","name":"v","nameLocation":"9530:1:12","nodeType":"VariableDeclaration","scope":3355,"src":"9524:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3304,"name":"uint8","nodeType":"ElementaryTypeName","src":"9524:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3306,"nodeType":"VariableDeclarationStatement","src":"9524:7:12"},{"expression":{"id":3316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3307,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"9544:1:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3308,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3302,"src":"9547:1:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3309,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3305,"src":"9550:1:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3310,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"9553:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3311,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9543:17:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$","typeString":"tuple(bytes32,bytes32,uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3314,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"9589:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3312,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"9563:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9574:14:12","memberName":"readRSVCompact","nodeType":"MemberAccess","referencedDeclaration":4964,"src":"9563:25:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes32,bytes32,uint8,uint256)"}},"id":3315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9563:33:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$","typeString":"tuple(bytes32,bytes32,uint8,uint256)"}},"src":"9543:53:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3317,"nodeType":"ExpressionStatement","src":"9543:53:12"},{"assignments":[3319],"declarations":[{"constant":false,"id":3319,"mutability":"mutable","name":"addr","nameLocation":"9617:4:12","nodeType":"VariableDeclaration","scope":3355,"src":"9609:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3318,"name":"address","nodeType":"ElementaryTypeName","src":"9609:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3326,"initialValue":{"arguments":[{"id":3321,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"9634:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3322,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3305,"src":"9643:1:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3323,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"9646:1:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3324,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3302,"src":"9649:1:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3320,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"9624:9:12","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":3325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9624:27:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9609:42:12"},{"expression":{"id":3329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3327,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"9664:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3328,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3276,"src":"9674:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9664:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3330,"nodeType":"ExpressionStatement","src":"9664:20:12"},{"assignments":[3332],"declarations":[{"constant":false,"id":3332,"mutability":"mutable","name":"node","nameLocation":"9704:4:12","nodeType":"VariableDeclaration","scope":3355,"src":"9696:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3331,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9696:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3337,"initialValue":{"arguments":[{"id":3334,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3319,"src":"9736:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3335,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3276,"src":"9742:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":3333,"name":"_leafForAddressAndWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2684,"src":"9711:24:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (address,uint256) pure returns (bytes32)"}},"id":3336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9711:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9696:57:12"},{"expression":{"id":3352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3338,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"9765:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3339,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"9772:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9788:1:12","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":3341,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9780:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3340,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9780:7:12","typeDescriptions":{}}},"id":3343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9780:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9772:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3350,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3332,"src":"9827:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9772:59:12","trueExpression":{"arguments":[{"id":3347,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"9813:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3348,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3332,"src":"9819:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3345,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"9793:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":3346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9802:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"9793:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9793:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"9765:66:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3353,"nodeType":"ExpressionStatement","src":"9765:66:12"},{"id":3354,"nodeType":"Continue","src":"9843:8:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3357,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"9922:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3358,"name":"FLAG_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2595,"src":"9930:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9922:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3420,"nodeType":"IfStatement","src":"9918:676:12","trueBody":{"id":3419,"nodeType":"Block","src":"9944:650:12","statements":[{"assignments":[3361],"declarations":[{"constant":false,"id":3361,"mutability":"mutable","name":"addrWeight","nameLocation":"10096:10:12","nodeType":"VariableDeclaration","scope":3419,"src":"10090:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3360,"name":"uint8","nodeType":"ElementaryTypeName","src":"10090:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3368,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3364,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"10115:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783066","id":3365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10127:4:12","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0x0f"},"src":"10115:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10109:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3362,"name":"uint8","nodeType":"ElementaryTypeName","src":"10109:5:12","typeDescriptions":{}}},"id":3367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10109:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"10090:42:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3369,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3361,"src":"10148:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10162:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10148:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3382,"nodeType":"IfStatement","src":"10144:99:12","trueBody":{"id":3381,"nodeType":"Block","src":"10165:78:12","statements":[{"expression":{"id":3379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3372,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3361,"src":"10180:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3373,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"10192:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3374,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"10179:20:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3377,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"10223:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3375,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"10202:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10213:9:12","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":4788,"src":"10202:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":3378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10202:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"10179:51:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3380,"nodeType":"ExpressionStatement","src":"10179:51:12"}]}},{"assignments":[3384],"declarations":[{"constant":false,"id":3384,"mutability":"mutable","name":"addr","nameLocation":"10289:4:12","nodeType":"VariableDeclaration","scope":3419,"src":"10281:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3383,"name":"address","nodeType":"ElementaryTypeName","src":"10281:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3385,"nodeType":"VariableDeclarationStatement","src":"10281:12:12"},{"expression":{"id":3393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3386,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3384,"src":"10306:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3387,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"10312:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3388,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"10305:14:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3391,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"10345:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3389,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"10322:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10333:11:12","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":4907,"src":"10322:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":3392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10322:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"10305:47:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3394,"nodeType":"ExpressionStatement","src":"10305:47:12"},{"assignments":[3396],"declarations":[{"constant":false,"id":3396,"mutability":"mutable","name":"node","nameLocation":"10436:4:12","nodeType":"VariableDeclaration","scope":3419,"src":"10428:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10428:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3401,"initialValue":{"arguments":[{"id":3398,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3384,"src":"10468:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3399,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3361,"src":"10474:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":3397,"name":"_leafForAddressAndWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2684,"src":"10443:24:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (address,uint256) pure returns (bytes32)"}},"id":3400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10443:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"10428:57:12"},{"expression":{"id":3416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3402,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"10497:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3403,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"10504:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10520:1:12","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":3405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10512:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3404,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10512:7:12","typeDescriptions":{}}},"id":3407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10512:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10504:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3414,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3396,"src":"10559:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10504:59:12","trueExpression":{"arguments":[{"id":3411,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"10545:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3412,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3396,"src":"10551:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3409,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"10525:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":3410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10534:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"10525:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10525:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10497:66:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3417,"nodeType":"ExpressionStatement","src":"10497:66:12"},{"id":3418,"nodeType":"Continue","src":"10575:8:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3421,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"10644:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3422,"name":"FLAG_SIGNATURE_ERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"10652:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10644:30:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3545,"nodeType":"IfStatement","src":"10640:1383:12","trueBody":{"id":3544,"nodeType":"Block","src":"10676:1347:12","statements":[{"assignments":[3425],"declarations":[{"constant":false,"id":3425,"mutability":"mutable","name":"addrWeight","nameLocation":"10916:10:12","nodeType":"VariableDeclaration","scope":3544,"src":"10910:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3424,"name":"uint8","nodeType":"ElementaryTypeName","src":"10910:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3432,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3428,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"10935:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783033","id":3429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:4:12","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x03"},"src":"10935:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10929:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3426,"name":"uint8","nodeType":"ElementaryTypeName","src":"10929:5:12","typeDescriptions":{}}},"id":3431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10929:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"10910:42:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3433,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3425,"src":"10968:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10982:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10968:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3446,"nodeType":"IfStatement","src":"10964:99:12","trueBody":{"id":3445,"nodeType":"Block","src":"10985:78:12","statements":[{"expression":{"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3436,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3425,"src":"11000:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3437,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"11012:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3438,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"10999:20:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3441,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"11043:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3439,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"11022:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11033:9:12","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":4788,"src":"11022:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":3442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11022:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"10999:51:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3444,"nodeType":"ExpressionStatement","src":"10999:51:12"}]}},{"assignments":[3448],"declarations":[{"constant":false,"id":3448,"mutability":"mutable","name":"addr","nameLocation":"11108:4:12","nodeType":"VariableDeclaration","scope":3544,"src":"11100:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3447,"name":"address","nodeType":"ElementaryTypeName","src":"11100:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3449,"nodeType":"VariableDeclarationStatement","src":"11100:12:12"},{"expression":{"id":3457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3450,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3448,"src":"11125:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3451,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"11131:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3452,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"11124:14:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3455,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"11164:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3453,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"11141:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11152:11:12","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":4907,"src":"11141:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":3456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11141:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"11124:47:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3458,"nodeType":"ExpressionStatement","src":"11124:47:12"},{"assignments":[3460],"declarations":[{"constant":false,"id":3460,"mutability":"mutable","name":"sizeSize","nameLocation":"11225:8:12","nodeType":"VariableDeclaration","scope":3544,"src":"11217:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3459,"name":"uint256","nodeType":"ElementaryTypeName","src":"11217:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3469,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3463,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"11242:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783063","id":3464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11254:4:12","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"11242:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11236:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3461,"name":"uint8","nodeType":"ElementaryTypeName","src":"11236:5:12","typeDescriptions":{}}},"id":3466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11236:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11263:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11236:28:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"11217:47:12"},{"assignments":[3471],"declarations":[{"constant":false,"id":3471,"mutability":"mutable","name":"size","nameLocation":"11284:4:12","nodeType":"VariableDeclaration","scope":3544,"src":"11276:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3470,"name":"uint256","nodeType":"ElementaryTypeName","src":"11276:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3472,"nodeType":"VariableDeclarationStatement","src":"11276:12:12"},{"expression":{"id":3481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3473,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3471,"src":"11301:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3474,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"11307:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3475,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"11300:14:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3478,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"11338:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3479,"name":"sizeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3460,"src":"11346:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3476,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"11317:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11328:9:12","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4868,"src":"11317:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":3480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11317:38:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"11300:55:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3482,"nodeType":"ExpressionStatement","src":"11300:55:12"},{"assignments":[3484],"declarations":[{"constant":false,"id":3484,"mutability":"mutable","name":"nrindex","nameLocation":"11417:7:12","nodeType":"VariableDeclaration","scope":3544,"src":"11409:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3483,"name":"uint256","nodeType":"ElementaryTypeName","src":"11409:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3488,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3485,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"11427:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3486,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3471,"src":"11436:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11427:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11409:31:12"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":3500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3493,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"11563:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":3494,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"11572:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3496,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3484,"src":"11590:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"11572:26:12","startExpression":{"id":3495,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"11583:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"expression":{"arguments":[{"id":3490,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3448,"src":"11540:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3489,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4631,"src":"11531:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$4631_$","typeString":"type(contract IERC1271)"}},"id":3491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11531:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$4631","typeString":"contract IERC1271"}},"id":3492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11546:16:12","memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":4630,"src":"11531:31:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (bytes32,bytes memory) view external returns (bytes4)"}},"id":3498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11531:68:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3499,"name":"IERC1271_MAGIC_VALUE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"11603:25:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"11531:97:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3511,"nodeType":"IfStatement","src":"11527:203:12","trueBody":{"id":3510,"nodeType":"Block","src":"11630:100:12","statements":[{"errorCall":{"arguments":[{"id":3502,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"11675:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3503,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3448,"src":"11684:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3504,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"11690:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3506,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3484,"src":"11708:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"11690:26:12","startExpression":{"id":3505,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"11701:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3501,"name":"InvalidERC1271Signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"11651:23:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (bytes32,address,bytes memory) pure returns (error)"}},"id":3508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11651:66:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3509,"nodeType":"RevertStatement","src":"11644:73:12"}]}},{"expression":{"id":3514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3512,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"11741:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3513,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3484,"src":"11750:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11741:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3515,"nodeType":"ExpressionStatement","src":"11741:16:12"},{"expression":{"id":3518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3516,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"11825:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3517,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3425,"src":"11835:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11825:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3519,"nodeType":"ExpressionStatement","src":"11825:20:12"},{"assignments":[3521],"declarations":[{"constant":false,"id":3521,"mutability":"mutable","name":"node","nameLocation":"11865:4:12","nodeType":"VariableDeclaration","scope":3544,"src":"11857:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3520,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11857:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3526,"initialValue":{"arguments":[{"id":3523,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3448,"src":"11897:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3524,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3425,"src":"11903:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":3522,"name":"_leafForAddressAndWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2684,"src":"11872:24:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (address,uint256) pure returns (bytes32)"}},"id":3525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11872:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11857:57:12"},{"expression":{"id":3541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3527,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"11926:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3528,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"11933:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11949:1:12","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":3530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11941:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11941:7:12","typeDescriptions":{}}},"id":3532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11941:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11933:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3539,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"11988:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11933:59:12","trueExpression":{"arguments":[{"id":3536,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"11974:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3537,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"11980:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3534,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"11954:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":3535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11963:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"11954:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11954:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11926:66:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3542,"nodeType":"ExpressionStatement","src":"11926:66:12"},{"id":3543,"nodeType":"Continue","src":"12004:8:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3546,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"12060:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3547,"name":"FLAG_NODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2601,"src":"12068:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12060:17:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3579,"nodeType":"IfStatement","src":"12056:279:12","trueBody":{"id":3578,"nodeType":"Block","src":"12079:256:12","statements":[{"assignments":[3550],"declarations":[{"constant":false,"id":3550,"mutability":"mutable","name":"node","nameLocation":"12163:4:12","nodeType":"VariableDeclaration","scope":3578,"src":"12155:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3549,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12155:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3551,"nodeType":"VariableDeclarationStatement","src":"12155:12:12"},{"expression":{"id":3559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3552,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"12180:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3553,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"12186:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3554,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12179:14:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3557,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"12219:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3555,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"12196:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12207:11:12","memberName":"readBytes32","nodeType":"MemberAccess","referencedDeclaration":4894,"src":"12196:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes32,uint256)"}},"id":3558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12196:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"src":"12179:47:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3560,"nodeType":"ExpressionStatement","src":"12179:47:12"},{"expression":{"id":3575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3561,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"12238:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3562,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"12245:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12261:1:12","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":3564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12253:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3563,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12253:7:12","typeDescriptions":{}}},"id":3566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12253:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12245:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3573,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"12300:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12245:59:12","trueExpression":{"arguments":[{"id":3570,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"12286:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3571,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3550,"src":"12292:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3568,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"12266:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":3569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12275:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"12266:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12266:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12238:66:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3576,"nodeType":"ExpressionStatement","src":"12238:66:12"},{"id":3577,"nodeType":"Continue","src":"12316:8:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3580,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"12374:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3581,"name":"FLAG_BRANCH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2604,"src":"12382:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12374:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3642,"nodeType":"IfStatement","src":"12370:656:12","trueBody":{"id":3641,"nodeType":"Block","src":"12395:631:12","statements":[{"assignments":[3584],"declarations":[{"constant":false,"id":3584,"mutability":"mutable","name":"sizeSize","nameLocation":"12554:8:12","nodeType":"VariableDeclaration","scope":3641,"src":"12546:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3583,"name":"uint256","nodeType":"ElementaryTypeName","src":"12546:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3591,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3587,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"12571:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783066","id":3588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12583:4:12","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0x0f"},"src":"12571:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12565:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3585,"name":"uint8","nodeType":"ElementaryTypeName","src":"12565:5:12","typeDescriptions":{}}},"id":3590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12565:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"12546:42:12"},{"assignments":[3593],"declarations":[{"constant":false,"id":3593,"mutability":"mutable","name":"size","nameLocation":"12608:4:12","nodeType":"VariableDeclaration","scope":3641,"src":"12600:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3592,"name":"uint256","nodeType":"ElementaryTypeName","src":"12600:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3594,"nodeType":"VariableDeclarationStatement","src":"12600:12:12"},{"expression":{"id":3603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3595,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"12625:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3596,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"12631:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3597,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12624:14:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3600,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"12662:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3601,"name":"sizeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3584,"src":"12670:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3598,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"12641:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12652:9:12","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4868,"src":"12641:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12641:38:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"12624:55:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3604,"nodeType":"ExpressionStatement","src":"12624:55:12"},{"assignments":[3606],"declarations":[{"constant":false,"id":3606,"mutability":"mutable","name":"nrindex","nameLocation":"12757:7:12","nodeType":"VariableDeclaration","scope":3641,"src":"12749:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3605,"name":"uint256","nodeType":"ElementaryTypeName","src":"12749:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3610,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3607,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"12767:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3608,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3593,"src":"12776:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12767:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12749:31:12"},{"assignments":[3612,3614],"declarations":[{"constant":false,"id":3612,"mutability":"mutable","name":"nweight","nameLocation":"12802:7:12","nodeType":"VariableDeclaration","scope":3641,"src":"12794:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3611,"name":"uint256","nodeType":"ElementaryTypeName","src":"12794:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3614,"mutability":"mutable","name":"node","nameLocation":"12819:4:12","nodeType":"VariableDeclaration","scope":3641,"src":"12811:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3613,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12811:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3623,"initialValue":{"arguments":[{"id":3616,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3233,"src":"12841:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":3617,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"12851:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":3618,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"12860:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3620,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3606,"src":"12878:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"12860:26:12","startExpression":{"id":3619,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"12871:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3615,"name":"recoverBranch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4213,"src":"12827:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes32,bytes calldata) view returns (uint256,bytes32)"}},"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12827:60:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"12793:94:12"},{"expression":{"id":3626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3624,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"12899:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3625,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3606,"src":"12908:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12899:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3627,"nodeType":"ExpressionStatement","src":"12899:16:12"},{"expression":{"id":3630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3628,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"12928:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3629,"name":"nweight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"12938:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12928:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3631,"nodeType":"ExpressionStatement","src":"12928:17:12"},{"expression":{"id":3638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3632,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"12957:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3635,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"12984:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3636,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3614,"src":"12990:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3633,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"12964:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":3634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12973:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"12964:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12964:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12957:38:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3639,"nodeType":"ExpressionStatement","src":"12957:38:12"},{"id":3640,"nodeType":"Continue","src":"13007:8:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3643,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"13065:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3644,"name":"FLAG_NESTED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"13073:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13065:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3764,"nodeType":"IfStatement","src":"13061:1278:12","trueBody":{"id":3763,"nodeType":"Block","src":"13086:1253:12","statements":[{"assignments":[3647],"declarations":[{"constant":false,"id":3647,"mutability":"mutable","name":"externalWeight","nameLocation":"13407:14:12","nodeType":"VariableDeclaration","scope":3763,"src":"13399:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3646,"name":"uint256","nodeType":"ElementaryTypeName","src":"13399:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3656,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3650,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"13430:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783063","id":3651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13442:4:12","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"13430:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3649,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13424:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3648,"name":"uint8","nodeType":"ElementaryTypeName","src":"13424:5:12","typeDescriptions":{}}},"id":3653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13424:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13451:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"13424:28:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"13399:53:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3657,"name":"externalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3647,"src":"13468:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13486:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13468:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3670,"nodeType":"IfStatement","src":"13464:107:12","trueBody":{"id":3669,"nodeType":"Block","src":"13489:82:12","statements":[{"expression":{"id":3667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3660,"name":"externalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3647,"src":"13504:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3661,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"13520:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3662,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13503:24:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3665,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"13551:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3663,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"13530:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13541:9:12","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":4788,"src":"13530:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":3666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13530:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"13503:55:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3668,"nodeType":"ExpressionStatement","src":"13503:55:12"}]}},{"assignments":[3672],"declarations":[{"constant":false,"id":3672,"mutability":"mutable","name":"internalThreshold","nameLocation":"13591:17:12","nodeType":"VariableDeclaration","scope":3763,"src":"13583:25:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3671,"name":"uint256","nodeType":"ElementaryTypeName","src":"13583:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3679,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3675,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"13617:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783033","id":3676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13629:4:12","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x03"},"src":"13617:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13611:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3673,"name":"uint8","nodeType":"ElementaryTypeName","src":"13611:5:12","typeDescriptions":{}}},"id":3678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13611:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"13583:51:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3680,"name":"internalThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"13650:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13671:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13650:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3693,"nodeType":"IfStatement","src":"13646:114:12","trueBody":{"id":3692,"nodeType":"Block","src":"13674:86:12","statements":[{"expression":{"id":3690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3683,"name":"internalThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"13689:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3684,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"13708:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3685,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13688:27:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3688,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"13740:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3686,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"13718:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13729:10:12","memberName":"readUint16","nodeType":"MemberAccess","referencedDeclaration":4801,"src":"13718:21:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint16_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint16,uint256)"}},"id":3689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13718:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint256_$","typeString":"tuple(uint16,uint256)"}},"src":"13688:59:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3691,"nodeType":"ExpressionStatement","src":"13688:59:12"}]}},{"assignments":[3695],"declarations":[{"constant":false,"id":3695,"mutability":"mutable","name":"size","nameLocation":"13780:4:12","nodeType":"VariableDeclaration","scope":3763,"src":"13772:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3694,"name":"uint256","nodeType":"ElementaryTypeName","src":"13772:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3696,"nodeType":"VariableDeclarationStatement","src":"13772:12:12"},{"expression":{"id":3704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3697,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3695,"src":"13797:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3698,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"13803:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3699,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13796:14:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3702,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"13835:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3700,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"13813:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13824:10:12","memberName":"readUint24","nodeType":"MemberAccess","referencedDeclaration":4814,"src":"13813:21:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint24_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint24,uint256)"}},"id":3703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13813:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint24_$_t_uint256_$","typeString":"tuple(uint24,uint256)"}},"src":"13796:46:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3705,"nodeType":"ExpressionStatement","src":"13796:46:12"},{"assignments":[3707],"declarations":[{"constant":false,"id":3707,"mutability":"mutable","name":"nrindex","nameLocation":"13862:7:12","nodeType":"VariableDeclaration","scope":3763,"src":"13854:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3706,"name":"uint256","nodeType":"ElementaryTypeName","src":"13854:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3711,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3708,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"13872:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3709,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3695,"src":"13881:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13872:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13854:31:12"},{"assignments":[3713,3715],"declarations":[{"constant":false,"id":3713,"mutability":"mutable","name":"internalWeight","nameLocation":"13907:14:12","nodeType":"VariableDeclaration","scope":3763,"src":"13899:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3712,"name":"uint256","nodeType":"ElementaryTypeName","src":"13899:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3715,"mutability":"mutable","name":"internalRoot","nameLocation":"13931:12:12","nodeType":"VariableDeclaration","scope":3763,"src":"13923:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3714,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13923:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3724,"initialValue":{"arguments":[{"id":3717,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3233,"src":"13961:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"id":3718,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"13971:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":3719,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"13980:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3721,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3707,"src":"13998:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"13980:26:12","startExpression":{"id":3720,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"13991:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3716,"name":"recoverBranch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4213,"src":"13947:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_uint256_$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes32,bytes calldata) view returns (uint256,bytes32)"}},"id":3723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13947:60:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_bytes32_$","typeString":"tuple(uint256,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"13898:109:12"},{"expression":{"id":3727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3725,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"14019:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3726,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3707,"src":"14028:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14019:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3728,"nodeType":"ExpressionStatement","src":"14019:16:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3729,"name":"internalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3713,"src":"14052:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3730,"name":"internalThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"14070:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14052:35:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3737,"nodeType":"IfStatement","src":"14048:92:12","trueBody":{"id":3736,"nodeType":"Block","src":"14089:51:12","statements":[{"expression":{"id":3734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3732,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"14103:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3733,"name":"externalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3647,"src":"14113:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14103:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3735,"nodeType":"ExpressionStatement","src":"14103:24:12"}]}},{"assignments":[3739],"declarations":[{"constant":false,"id":3739,"mutability":"mutable","name":"node","nameLocation":"14160:4:12","nodeType":"VariableDeclaration","scope":3763,"src":"14152:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3738,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14152:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3745,"initialValue":{"arguments":[{"id":3741,"name":"internalRoot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3715,"src":"14182:12:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3742,"name":"internalThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"14196:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3743,"name":"externalWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3647,"src":"14215:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3740,"name":"_leafForNested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2706,"src":"14167:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes32,uint256,uint256) pure returns (bytes32)"}},"id":3744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14167:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"14152:78:12"},{"expression":{"id":3760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3746,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"14242:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3747,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"14249:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14265:1:12","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":3749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14257:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3748,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14257:7:12","typeDescriptions":{}}},"id":3751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14257:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14249:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3758,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"14304:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14249:59:12","trueExpression":{"arguments":[{"id":3755,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"14290:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3756,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"14296:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3753,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"14270:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14279:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"14270:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14270:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14242:66:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3761,"nodeType":"ExpressionStatement","src":"14242:66:12"},{"id":3762,"nodeType":"Continue","src":"14320:8:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3765,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"14381:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3766,"name":"FLAG_SUBDIGEST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2607,"src":"14389:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14381:22:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3817,"nodeType":"IfStatement","src":"14377:518:12","trueBody":{"id":3816,"nodeType":"Block","src":"14405:490:12","statements":[{"assignments":[3769],"declarations":[{"constant":false,"id":3769,"mutability":"mutable","name":"hardcoded","nameLocation":"14558:9:12","nodeType":"VariableDeclaration","scope":3816,"src":"14550:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3768,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14550:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3770,"nodeType":"VariableDeclarationStatement","src":"14550:17:12"},{"expression":{"id":3778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3771,"name":"hardcoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"14580:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3772,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"14591:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3773,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14579:19:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3776,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"14624:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3774,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"14601:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14612:11:12","memberName":"readBytes32","nodeType":"MemberAccess","referencedDeclaration":4894,"src":"14601:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes32,uint256)"}},"id":3777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14601:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"src":"14579:52:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3779,"nodeType":"ExpressionStatement","src":"14579:52:12"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3780,"name":"hardcoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"14647:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3781,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"14660:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14647:20:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3792,"nodeType":"IfStatement","src":"14643:79:12","trueBody":{"id":3791,"nodeType":"Block","src":"14669:53:12","statements":[{"expression":{"id":3789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3783,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"14683:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":3786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14697:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3785,"name":"uint256","nodeType":"ElementaryTypeName","src":"14697:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3784,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14692:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14692:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14706:3:12","memberName":"max","nodeType":"MemberAccess","src":"14692:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14683:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3790,"nodeType":"ExpressionStatement","src":"14683:26:12"}]}},{"assignments":[3794],"declarations":[{"constant":false,"id":3794,"mutability":"mutable","name":"node","nameLocation":"14742:4:12","nodeType":"VariableDeclaration","scope":3816,"src":"14734:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3793,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14734:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3798,"initialValue":{"arguments":[{"id":3796,"name":"hardcoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"14776:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3795,"name":"_leafForHardcodedSubdigest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"14749:26:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":3797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14749:37:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"14734:52:12"},{"expression":{"id":3813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3799,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"14798:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3800,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"14805:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14821:1:12","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":3802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14813:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3801,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14813:7:12","typeDescriptions":{}}},"id":3804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14813:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14805:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3811,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3794,"src":"14860:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14805:59:12","trueExpression":{"arguments":[{"id":3808,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"14846:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3809,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3794,"src":"14852:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3806,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"14826:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":3807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14835:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"14826:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14826:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14798:66:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3814,"nodeType":"ExpressionStatement","src":"14798:66:12"},{"id":3815,"nodeType":"Continue","src":"14876:8:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3818,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"14946:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3819,"name":"FLAG_SIGNATURE_ETH_SIGN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2613,"src":"14954:23:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14946:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3908,"nodeType":"IfStatement","src":"14942:933:12","trueBody":{"id":3907,"nodeType":"Block","src":"14979:896:12","statements":[{"assignments":[3822],"declarations":[{"constant":false,"id":3822,"mutability":"mutable","name":"addrWeight","nameLocation":"15271:10:12","nodeType":"VariableDeclaration","scope":3907,"src":"15265:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3821,"name":"uint8","nodeType":"ElementaryTypeName","src":"15265:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3829,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3825,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"15290:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783066","id":3826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15302:4:12","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0x0f"},"src":"15290:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15284:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3823,"name":"uint8","nodeType":"ElementaryTypeName","src":"15284:5:12","typeDescriptions":{}}},"id":3828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15284:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"15265:42:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3830,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3822,"src":"15323:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15337:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15323:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3843,"nodeType":"IfStatement","src":"15319:99:12","trueBody":{"id":3842,"nodeType":"Block","src":"15340:78:12","statements":[{"expression":{"id":3840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3833,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3822,"src":"15355:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3834,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"15367:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3835,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"15354:20:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3838,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"15398:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3836,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"15377:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15388:9:12","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":4788,"src":"15377:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":3839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15377:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"15354:51:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3841,"nodeType":"ExpressionStatement","src":"15354:51:12"}]}},{"assignments":[3845],"declarations":[{"constant":false,"id":3845,"mutability":"mutable","name":"r","nameLocation":"15438:1:12","nodeType":"VariableDeclaration","scope":3907,"src":"15430:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3844,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15430:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3846,"nodeType":"VariableDeclarationStatement","src":"15430:9:12"},{"assignments":[3848],"declarations":[{"constant":false,"id":3848,"mutability":"mutable","name":"s","nameLocation":"15459:1:12","nodeType":"VariableDeclaration","scope":3907,"src":"15451:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3847,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15451:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3849,"nodeType":"VariableDeclarationStatement","src":"15451:9:12"},{"assignments":[3851],"declarations":[{"constant":false,"id":3851,"mutability":"mutable","name":"v","nameLocation":"15478:1:12","nodeType":"VariableDeclaration","scope":3907,"src":"15472:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3850,"name":"uint8","nodeType":"ElementaryTypeName","src":"15472:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3852,"nodeType":"VariableDeclarationStatement","src":"15472:7:12"},{"expression":{"id":3862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3853,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"15492:1:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3854,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3848,"src":"15495:1:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3855,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"15498:1:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3856,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"15501:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3857,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"15491:17:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$","typeString":"tuple(bytes32,bytes32,uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3860,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"15537:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3858,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"15511:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15522:14:12","memberName":"readRSVCompact","nodeType":"MemberAccess","referencedDeclaration":4964,"src":"15511:25:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes32,bytes32,uint8,uint256)"}},"id":3861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15511:33:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_uint256_$","typeString":"tuple(bytes32,bytes32,uint8,uint256)"}},"src":"15491:53:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3863,"nodeType":"ExpressionStatement","src":"15491:53:12"},{"assignments":[3865],"declarations":[{"constant":false,"id":3865,"mutability":"mutable","name":"addr","nameLocation":"15565:4:12","nodeType":"VariableDeclaration","scope":3907,"src":"15557:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3864,"name":"address","nodeType":"ElementaryTypeName","src":"15557:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3878,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","id":3870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15609:34:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""},"value":"\u0019Ethereum Signed Message:\n32"},{"id":3871,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"15645:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3868,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15592:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15596:12:12","memberName":"encodePacked","nodeType":"MemberAccess","src":"15592:16:12","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15592:61:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3867,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15582:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15582:72:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3874,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"15656:1:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3875,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3845,"src":"15659:1:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3876,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3848,"src":"15662:1:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3866,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"15572:9:12","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":3877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15572:92:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15557:107:12"},{"expression":{"id":3881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3879,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"15677:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3880,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3822,"src":"15687:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"15677:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3882,"nodeType":"ExpressionStatement","src":"15677:20:12"},{"assignments":[3884],"declarations":[{"constant":false,"id":3884,"mutability":"mutable","name":"node","nameLocation":"15717:4:12","nodeType":"VariableDeclaration","scope":3907,"src":"15709:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3883,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15709:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3889,"initialValue":{"arguments":[{"id":3886,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3865,"src":"15749:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3887,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3822,"src":"15755:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":3885,"name":"_leafForAddressAndWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2684,"src":"15724:24:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (address,uint256) pure returns (bytes32)"}},"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15724:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"15709:57:12"},{"expression":{"id":3904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3890,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"15778:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3891,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"15785:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15801:1:12","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":3893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15793:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3892,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15793:7:12","typeDescriptions":{}}},"id":3895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15793:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"15785:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3902,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3884,"src":"15840:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15785:59:12","trueExpression":{"arguments":[{"id":3899,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"15826:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3900,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3884,"src":"15832:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3897,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"15806:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":3898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15815:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"15806:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15806:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"15778:66:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3905,"nodeType":"ExpressionStatement","src":"15778:66:12"},{"id":3906,"nodeType":"Continue","src":"15856:8:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3909,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"16012:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3910,"name":"FLAG_SIGNATURE_ANY_ADDRESS_SUBDIGEST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2616,"src":"16020:36:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16012:44:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3971,"nodeType":"IfStatement","src":"16008:617:12","trueBody":{"id":3970,"nodeType":"Block","src":"16058:567:12","statements":[{"assignments":[3913],"declarations":[{"constant":false,"id":3913,"mutability":"mutable","name":"hardcoded","nameLocation":"16211:9:12","nodeType":"VariableDeclaration","scope":3970,"src":"16203:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3912,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16203:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3914,"nodeType":"VariableDeclarationStatement","src":"16203:17:12"},{"expression":{"id":3922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3915,"name":"hardcoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3913,"src":"16233:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3916,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"16244:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3917,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"16232:19:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3920,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"16277:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3918,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"16254:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16265:11:12","memberName":"readBytes32","nodeType":"MemberAccess","referencedDeclaration":4894,"src":"16254:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (bytes32,uint256)"}},"id":3921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16254:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"src":"16232:52:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3923,"nodeType":"ExpressionStatement","src":"16232:52:12"},{"assignments":[3925],"declarations":[{"constant":false,"id":3925,"mutability":"mutable","name":"anyAddressOpHash","nameLocation":"16304:16:12","nodeType":"VariableDeclaration","scope":3970,"src":"16296:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3924,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16296:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3933,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":3930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16348:1:12","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":3929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16340:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3928,"name":"address","nodeType":"ElementaryTypeName","src":"16340:7:12","typeDescriptions":{}}},"id":3931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16340:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3926,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3233,"src":"16323:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},"id":3927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16332:7:12","memberName":"hashFor","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"16323:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_address_$returns$_t_bytes32_$attached_to$_t_struct$_Decoded_$1284_memory_ptr_$","typeString":"function (struct Payload.Decoded memory,address) view returns (bytes32)"}},"id":3932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16323:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"16296:55:12"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3934,"name":"hardcoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3913,"src":"16367:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3935,"name":"anyAddressOpHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3925,"src":"16380:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16367:29:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3946,"nodeType":"IfStatement","src":"16363:88:12","trueBody":{"id":3945,"nodeType":"Block","src":"16398:53:12","statements":[{"expression":{"id":3943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3937,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"16412:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":3940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16426:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3939,"name":"uint256","nodeType":"ElementaryTypeName","src":"16426:7:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3938,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16421:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16421:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16435:3:12","memberName":"max","nodeType":"MemberAccess","src":"16421:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16412:26:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3944,"nodeType":"ExpressionStatement","src":"16412:26:12"}]}},{"assignments":[3948],"declarations":[{"constant":false,"id":3948,"mutability":"mutable","name":"node","nameLocation":"16471:4:12","nodeType":"VariableDeclaration","scope":3970,"src":"16463:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3947,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16463:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3952,"initialValue":{"arguments":[{"id":3950,"name":"hardcoded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3913,"src":"16506:9:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3949,"name":"_leafForAnyAddressSubdigest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2760,"src":"16478:27:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) pure returns (bytes32)"}},"id":3951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16478:38:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"16463:53:12"},{"expression":{"id":3967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3953,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"16528:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3954,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"16535:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16551:1:12","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":3956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16543:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3955,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16543:7:12","typeDescriptions":{}}},"id":3958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16543:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16535:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3965,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"16590:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16535:59:12","trueExpression":{"arguments":[{"id":3962,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"16576:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3963,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"16582:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3960,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"16556:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":3961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16565:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"16556:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16556:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16528:66:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3968,"nodeType":"ExpressionStatement","src":"16528:66:12"},{"id":3969,"nodeType":"Continue","src":"16606:8:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3972,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"16675:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3973,"name":"FLAG_SIGNATURE_SAPIENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2619,"src":"16683:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16675:30:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4088,"nodeType":"IfStatement","src":"16671:1308:12","trueBody":{"id":4087,"nodeType":"Block","src":"16707:1272:12","statements":[{"assignments":[3976],"declarations":[{"constant":false,"id":3976,"mutability":"mutable","name":"addrWeight","nameLocation":"16958:10:12","nodeType":"VariableDeclaration","scope":4087,"src":"16952:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3975,"name":"uint8","nodeType":"ElementaryTypeName","src":"16952:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3983,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3979,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"16977:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783033","id":3980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16989:4:12","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x03"},"src":"16977:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16971:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3977,"name":"uint8","nodeType":"ElementaryTypeName","src":"16971:5:12","typeDescriptions":{}}},"id":3982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16971:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"16952:42:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3984,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3976,"src":"17010:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17024:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17010:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3997,"nodeType":"IfStatement","src":"17006:99:12","trueBody":{"id":3996,"nodeType":"Block","src":"17027:78:12","statements":[{"expression":{"id":3994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3987,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3976,"src":"17042:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3988,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"17054:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3989,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"17041:20:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3992,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"17085:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3990,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"17064:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17075:9:12","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":4788,"src":"17064:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":3993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17064:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"17041:51:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3995,"nodeType":"ExpressionStatement","src":"17041:51:12"}]}},{"assignments":[3999],"declarations":[{"constant":false,"id":3999,"mutability":"mutable","name":"addr","nameLocation":"17125:4:12","nodeType":"VariableDeclaration","scope":4087,"src":"17117:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3998,"name":"address","nodeType":"ElementaryTypeName","src":"17117:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4000,"nodeType":"VariableDeclarationStatement","src":"17117:12:12"},{"expression":{"id":4008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4001,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"17142:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4002,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"17148:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4003,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"17141:14:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4006,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"17181:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4004,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"17158:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17169:11:12","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":4907,"src":"17158:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":4007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17158:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"17141:47:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4009,"nodeType":"ExpressionStatement","src":"17141:47:12"},{"assignments":[4011],"declarations":[{"constant":false,"id":4011,"mutability":"mutable","name":"size","nameLocation":"17242:4:12","nodeType":"VariableDeclaration","scope":4087,"src":"17234:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4010,"name":"uint256","nodeType":"ElementaryTypeName","src":"17234:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4012,"nodeType":"VariableDeclarationStatement","src":"17234:12:12"},{"id":4034,"nodeType":"Block","src":"17258:143:12","statements":[{"assignments":[4014],"declarations":[{"constant":false,"id":4014,"mutability":"mutable","name":"sizeSize","nameLocation":"17280:8:12","nodeType":"VariableDeclaration","scope":4034,"src":"17272:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4013,"name":"uint256","nodeType":"ElementaryTypeName","src":"17272:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4023,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4017,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"17297:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783063","id":4018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17309:4:12","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"17297:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17291:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4015,"name":"uint8","nodeType":"ElementaryTypeName","src":"17291:5:12","typeDescriptions":{}}},"id":4020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17291:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":4021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17318:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"17291:28:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"17272:47:12"},{"expression":{"id":4032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4024,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4011,"src":"17334:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4025,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"17340:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4026,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"17333:14:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4029,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"17371:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4030,"name":"sizeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4014,"src":"17379:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4027,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"17350:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17361:9:12","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4868,"src":"17350:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":4031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17350:38:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"17333:55:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4033,"nodeType":"ExpressionStatement","src":"17333:55:12"}]},{"assignments":[4036],"declarations":[{"constant":false,"id":4036,"mutability":"mutable","name":"nrindex","nameLocation":"17462:7:12","nodeType":"VariableDeclaration","scope":4087,"src":"17454:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4035,"name":"uint256","nodeType":"ElementaryTypeName","src":"17454:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4040,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4037,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"17472:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4038,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4011,"src":"17481:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17472:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17454:31:12"},{"assignments":[4042],"declarations":[{"constant":false,"id":4042,"mutability":"mutable","name":"sapientImageHash","nameLocation":"17580:16:12","nodeType":"VariableDeclaration","scope":4087,"src":"17572:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4041,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17572:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4053,"initialValue":{"arguments":[{"id":4047,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3233,"src":"17638:8:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"}},{"baseExpression":{"id":4048,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"17648:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":4050,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4036,"src":"17666:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"17648:26:12","startExpression":{"id":4049,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"17659:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded memory"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"expression":{"arguments":[{"id":4044,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"17608:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4043,"name":"ISapient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4749,"src":"17599:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISapient_$4749_$","typeString":"type(contract ISapient)"}},"id":4045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17599:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISapient_$4749","typeString":"contract ISapient"}},"id":4046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17614:23:12","memberName":"recoverSapientSignature","nodeType":"MemberAccess","referencedDeclaration":4748,"src":"17599:38:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_struct$_Decoded_$1284_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (struct Payload.Decoded memory,bytes memory) view external returns (bytes32)"}},"id":4052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17599:76:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"17572:103:12"},{"expression":{"id":4056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4054,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"17687:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4055,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4036,"src":"17696:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17687:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4057,"nodeType":"ExpressionStatement","src":"17687:16:12"},{"expression":{"id":4060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4058,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"17772:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4059,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3976,"src":"17782:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17772:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4061,"nodeType":"ExpressionStatement","src":"17772:20:12"},{"assignments":[4063],"declarations":[{"constant":false,"id":4063,"mutability":"mutable","name":"node","nameLocation":"17812:4:12","nodeType":"VariableDeclaration","scope":4087,"src":"17804:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4062,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17804:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4069,"initialValue":{"arguments":[{"id":4065,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"17835:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4066,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3976,"src":"17841:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":4067,"name":"sapientImageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4042,"src":"17853:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4064,"name":"_leafForSapient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"17819:15:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,uint256,bytes32) pure returns (bytes32)"}},"id":4068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17819:51:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"17804:66:12"},{"expression":{"id":4084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4070,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"17882:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4071,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"17889:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17905:1:12","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":4073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17897:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4072,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17897:7:12","typeDescriptions":{}}},"id":4075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17897:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"17889:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4082,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"17944:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"17889:59:12","trueExpression":{"arguments":[{"id":4079,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"17930:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4080,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"17936:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4077,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"17910:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":4078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17919:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"17910:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":4081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17910:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"17882:66:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4085,"nodeType":"ExpressionStatement","src":"17882:66:12"},{"id":4086,"nodeType":"Continue","src":"17960:8:12"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4089,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"18037:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4090,"name":"FLAG_SIGNATURE_SAPIENT_COMPACT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2622,"src":"18045:30:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18037:38:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4204,"nodeType":"IfStatement","src":"18033:1312:12","trueBody":{"id":4203,"nodeType":"Block","src":"18077:1268:12","statements":[{"assignments":[4093],"declarations":[{"constant":false,"id":4093,"mutability":"mutable","name":"addrWeight","nameLocation":"18328:10:12","nodeType":"VariableDeclaration","scope":4203,"src":"18322:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4092,"name":"uint8","nodeType":"ElementaryTypeName","src":"18322:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":4100,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4096,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"18347:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783033","id":4097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18359:4:12","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x03"},"src":"18347:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4095,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18341:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4094,"name":"uint8","nodeType":"ElementaryTypeName","src":"18341:5:12","typeDescriptions":{}}},"id":4099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18341:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"18322:42:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4101,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"18380:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18394:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18380:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4114,"nodeType":"IfStatement","src":"18376:99:12","trueBody":{"id":4113,"nodeType":"Block","src":"18397:78:12","statements":[{"expression":{"id":4111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4104,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"18412:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":4105,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"18424:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4106,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"18411:20:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4109,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"18455:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4107,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"18434:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18445:9:12","memberName":"readUint8","nodeType":"MemberAccess","referencedDeclaration":4788,"src":"18434:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_uint8_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (uint8,uint256)"}},"id":4110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18434:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"18411:51:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4112,"nodeType":"ExpressionStatement","src":"18411:51:12"}]}},{"assignments":[4116],"declarations":[{"constant":false,"id":4116,"mutability":"mutable","name":"addr","nameLocation":"18495:4:12","nodeType":"VariableDeclaration","scope":4203,"src":"18487:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4115,"name":"address","nodeType":"ElementaryTypeName","src":"18487:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4117,"nodeType":"VariableDeclarationStatement","src":"18487:12:12"},{"expression":{"id":4125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4118,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4116,"src":"18512:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4119,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"18518:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4120,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"18511:14:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4123,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"18551:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4121,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"18528:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18539:11:12","memberName":"readAddress","nodeType":"MemberAccess","referencedDeclaration":4907,"src":"18528:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$returns$_t_address_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256) pure returns (address,uint256)"}},"id":4124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18528:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"src":"18511:47:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4126,"nodeType":"ExpressionStatement","src":"18511:47:12"},{"assignments":[4128],"declarations":[{"constant":false,"id":4128,"mutability":"mutable","name":"sizeSize","nameLocation":"18612:8:12","nodeType":"VariableDeclaration","scope":4203,"src":"18604:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4127,"name":"uint256","nodeType":"ElementaryTypeName","src":"18604:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4137,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4131,"name":"firstByte","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"18629:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30783063","id":4132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18641:4:12","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"18629:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18623:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4129,"name":"uint8","nodeType":"ElementaryTypeName","src":"18623:5:12","typeDescriptions":{}}},"id":4134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18623:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":4135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18650:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"18623:28:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"18604:47:12"},{"assignments":[4139],"declarations":[{"constant":false,"id":4139,"mutability":"mutable","name":"size","nameLocation":"18671:4:12","nodeType":"VariableDeclaration","scope":4203,"src":"18663:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4138,"name":"uint256","nodeType":"ElementaryTypeName","src":"18663:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4140,"nodeType":"VariableDeclarationStatement","src":"18663:12:12"},{"expression":{"id":4149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4141,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"18688:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4142,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"18694:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4143,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"18687:14:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4146,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"18725:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4147,"name":"sizeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4128,"src":"18733:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4144,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"18704:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":4145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18715:9:12","memberName":"readUintX","nodeType":"MemberAccess","referencedDeclaration":4868,"src":"18704:20:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata,uint256,uint256) pure returns (uint256,uint256)"}},"id":4148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18704:38:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"18687:55:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4150,"nodeType":"ExpressionStatement","src":"18687:55:12"},{"assignments":[4152],"declarations":[{"constant":false,"id":4152,"mutability":"mutable","name":"nrindex","nameLocation":"18804:7:12","nodeType":"VariableDeclaration","scope":4203,"src":"18796:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4151,"name":"uint256","nodeType":"ElementaryTypeName","src":"18796:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4156,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4153,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"18814:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4154,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4139,"src":"18823:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18814:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18796:31:12"},{"assignments":[4158],"declarations":[{"constant":false,"id":4158,"mutability":"mutable","name":"sapientImageHash","nameLocation":"18922:16:12","nodeType":"VariableDeclaration","scope":4203,"src":"18914:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4157,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18914:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4169,"initialValue":{"arguments":[{"id":4163,"name":"_opHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3235,"src":"19006:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":4164,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"19015:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":4166,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"19033:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"19015:26:12","startExpression":{"id":4165,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"19026:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"expression":{"arguments":[{"id":4160,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4116,"src":"18969:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4159,"name":"ISapientCompact","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4761,"src":"18953:15:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISapientCompact_$4761_$","typeString":"type(contract ISapientCompact)"}},"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18953:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISapientCompact_$4761","typeString":"contract ISapientCompact"}},"id":4162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18975:30:12","memberName":"recoverSapientSignatureCompact","nodeType":"MemberAccess","referencedDeclaration":4760,"src":"18953:52:12","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes memory) view external returns (bytes32)"}},"id":4168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18953:89:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"18914:128:12"},{"expression":{"id":4172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4170,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"19054:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4171,"name":"nrindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"19063:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19054:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4173,"nodeType":"ExpressionStatement","src":"19054:16:12"},{"expression":{"id":4176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4174,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"19138:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4175,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"19148:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"19138:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4177,"nodeType":"ExpressionStatement","src":"19138:20:12"},{"assignments":[4179],"declarations":[{"constant":false,"id":4179,"mutability":"mutable","name":"node","nameLocation":"19178:4:12","nodeType":"VariableDeclaration","scope":4203,"src":"19170:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4178,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19170:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4185,"initialValue":{"arguments":[{"id":4181,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4116,"src":"19201:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4182,"name":"addrWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"19207:10:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":4183,"name":"sapientImageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4158,"src":"19219:16:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4180,"name":"_leafForSapient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"19185:15:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_uint256_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,uint256,bytes32) pure returns (bytes32)"}},"id":4184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19185:51:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"19170:66:12"},{"expression":{"id":4200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4186,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"19248:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4187,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"19255:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19271:1:12","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":4189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19263:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4188,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19263:7:12","typeDescriptions":{}}},"id":4191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19263:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"19255:18:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4198,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4179,"src":"19310:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19255:59:12","trueExpression":{"arguments":[{"id":4195,"name":"root","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3242,"src":"19296:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4196,"name":"node","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4179,"src":"19302:4:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4193,"name":"LibOptim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5019,"src":"19276:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibOptim_$5019_$","typeString":"type(library LibOptim)"}},"id":4194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19285:10:12","memberName":"fkeccak256","nodeType":"MemberAccess","referencedDeclaration":4980,"src":"19276:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":4197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19276:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"19248:66:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4201,"nodeType":"ExpressionStatement","src":"19248:66:12"},{"id":4202,"nodeType":"Continue","src":"19326:8:12"}]}},{"errorCall":{"arguments":[{"id":4206,"name":"flag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"19383:4:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4205,"name":"InvalidSignatureFlag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2658,"src":"19362:20:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":4207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19362:26:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4208,"nodeType":"RevertStatement","src":"19355:33:12"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3247,"name":"rindex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"8592:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3248,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3237,"src":"8601:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8612:6:12","memberName":"length","nodeType":"MemberAccess","src":"8601:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8592:26:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4210,"nodeType":"WhileStatement","src":"8585:10812:12"}]}]},"implemented":true,"kind":"function","modifiers":[],"name":"recoverBranch","nameLocation":"8332:13:12","parameters":{"id":3238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3233,"mutability":"mutable","name":"_payload","nameLocation":"8374:8:12","nodeType":"VariableDeclaration","scope":4213,"src":"8351:31:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_memory_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":3232,"nodeType":"UserDefinedTypeName","pathNode":{"id":3231,"name":"Payload.Decoded","nameLocations":["8351:7:12","8359:7:12"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"8351:15:12"},"referencedDeclaration":1284,"src":"8351:15:12","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":3235,"mutability":"mutable","name":"_opHash","nameLocation":"8396:7:12","nodeType":"VariableDeclaration","scope":4213,"src":"8388:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3234,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8388:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3237,"mutability":"mutable","name":"_signature","nameLocation":"8424:10:12","nodeType":"VariableDeclaration","scope":4213,"src":"8409:25:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3236,"name":"bytes","nodeType":"ElementaryTypeName","src":"8409:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8345:93:12"},"returnParameters":{"id":3243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3240,"mutability":"mutable","name":"weight","nameLocation":"8470:6:12","nodeType":"VariableDeclaration","scope":4213,"src":"8462:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3239,"name":"uint256","nodeType":"ElementaryTypeName","src":"8462:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3242,"mutability":"mutable","name":"root","nameLocation":"8486:4:12","nodeType":"VariableDeclaration","scope":4213,"src":"8478:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3241,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8478:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8461:30:12"},"scope":4214,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"BaseSig","contractDependencies":[],"contractKind":"library","documentation":{"id":2589,"nodeType":"StructuredDocumentation","src":"506:165:12","text":"@title BaseSig\n @author Agustin Aguilar, Michael Standen, William Hua, Shun Kakinoki\n @notice Library for recovering signatures from the base-auth payload"},"fullyImplemented":true,"linearizedBaseContracts":[4214],"name":"BaseSig","nameLocation":"679:7:12","scope":4215,"usedErrors":[2631,2640,2647,2653,2658,2661],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/auth/SelfAuth.sol":{"id":13,"ast":{"absolutePath":"src/modules/auth/SelfAuth.sol","id":4242,"exportedSymbols":{"SelfAuth":[4241]},"nodeType":"SourceUnit","src":"39:426:13","nodes":[{"id":4216,"nodeType":"PragmaDirective","src":"39:24:13","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":4241,"nodeType":"ContractDefinition","src":"206:258:13","nodes":[{"id":4222,"nodeType":"ErrorDefinition","src":"313:32:13","nodes":[],"documentation":{"id":4218,"nodeType":"StructuredDocumentation","src":"238:72:13","text":"@notice Error thrown when the caller is not the same as the contract"},"errorSelector":"a19dbf00","name":"OnlySelf","nameLocation":"319:8:13","parameters":{"id":4221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4220,"mutability":"mutable","name":"_sender","nameLocation":"336:7:13","nodeType":"VariableDeclaration","scope":4222,"src":"328:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4219,"name":"address","nodeType":"ElementaryTypeName","src":"328:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"327:17:13"}},{"id":4240,"nodeType":"ModifierDefinition","src":"349:112:13","nodes":[],"body":{"id":4239,"nodeType":"Block","src":"369:92:13","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4224,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"379:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"383:6:13","memberName":"sender","nodeType":"MemberAccess","src":"379:10:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":4228,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"401:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_SelfAuth_$4241","typeString":"contract SelfAuth"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfAuth_$4241","typeString":"contract SelfAuth"}],"id":4227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"393:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4226,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:13","typeDescriptions":{}}},"id":4229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"393:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"379:27:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4237,"nodeType":"IfStatement","src":"375:75:13","trueBody":{"id":4236,"nodeType":"Block","src":"408:42:13","statements":[{"errorCall":{"arguments":[{"expression":{"id":4232,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"432:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"436:6:13","memberName":"sender","nodeType":"MemberAccess","src":"432:10:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4231,"name":"OnlySelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4222,"src":"423:8:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"423:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4235,"nodeType":"RevertStatement","src":"416:27:13"}]}},{"id":4238,"nodeType":"PlaceholderStatement","src":"455:1:13"}]},"name":"onlySelf","nameLocation":"358:8:13","parameters":{"id":4223,"nodeType":"ParameterList","parameters":[],"src":"366:2:13"},"virtual":false,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"SelfAuth","contractDependencies":[],"contractKind":"contract","documentation":{"id":4217,"nodeType":"StructuredDocumentation","src":"65:141:13","text":"@title SelfAuth\n @author Agustin Aguilar, Michael Standen\n @notice Modifier for checking if the caller is the same as the contract"},"fullyImplemented":true,"linearizedBaseContracts":[4241],"name":"SelfAuth","nameLocation":"224:8:13","scope":4242,"usedErrors":[4222],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/auth/Stage1Auth.sol":{"id":14,"ast":{"absolutePath":"src/modules/auth/Stage1Auth.sol","id":4388,"exportedSymbols":{"BaseAuth":[2564],"Implementation":[1027],"Stage1Auth":[4387],"Storage":[2051],"Wallet":[116]},"nodeType":"SourceUnit","src":"39:1945:14","nodes":[{"id":4243,"nodeType":"PragmaDirective","src":"39:24:14","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":4245,"nodeType":"ImportDirective","src":"65:42:14","nodes":[],"absolutePath":"src/Wallet.sol","file":"../../Wallet.sol","nameLocation":"-1:-1:-1","scope":4388,"sourceUnit":117,"symbolAliases":[{"foreign":{"id":4244,"name":"Wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"74:6:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":4247,"nodeType":"ImportDirective","src":"108:55:14","nodes":[],"absolutePath":"src/modules/Implementation.sol","file":"../Implementation.sol","nameLocation":"-1:-1:-1","scope":4388,"sourceUnit":1028,"symbolAliases":[{"foreign":{"id":4246,"name":"Implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1027,"src":"117:14:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":4249,"nodeType":"ImportDirective","src":"164:41:14","nodes":[],"absolutePath":"src/modules/Storage.sol","file":"../Storage.sol","nameLocation":"-1:-1:-1","scope":4388,"sourceUnit":2052,"symbolAliases":[{"foreign":{"id":4248,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"173:7:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":4251,"nodeType":"ImportDirective","src":"206:42:14","nodes":[],"absolutePath":"src/modules/auth/BaseAuth.sol","file":"./BaseAuth.sol","nameLocation":"-1:-1:-1","scope":4388,"sourceUnit":2565,"symbolAliases":[{"foreign":{"id":4250,"name":"BaseAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2564,"src":"215:8:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":4387,"nodeType":"ContractDefinition","src":"334:1649:14","nodes":[{"id":4259,"nodeType":"ErrorDefinition","src":"442:24:14","nodes":[],"documentation":{"id":4257,"nodeType":"StructuredDocumentation","src":"387:52:14","text":"@notice Error thrown when the image hash is zero"},"errorSelector":"4294d127","name":"ImageHashIsZero","nameLocation":"448:15:14","parameters":{"id":4258,"nodeType":"ParameterList","parameters":[],"src":"463:2:14"}},{"id":4262,"nodeType":"VariableDeclaration","src":"509:39:14","nodes":[],"constant":false,"documentation":{"id":4260,"nodeType":"StructuredDocumentation","src":"470:36:14","text":"@notice Initialization code hash"},"functionSelector":"257671f5","mutability":"immutable","name":"INIT_CODE_HASH","nameLocation":"534:14:14","scope":4387,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4261,"name":"bytes32","nodeType":"ElementaryTypeName","src":"509:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":4265,"nodeType":"VariableDeclaration","src":"582:32:14","nodes":[],"constant":false,"documentation":{"id":4263,"nodeType":"StructuredDocumentation","src":"552:27:14","text":"@notice Factory address"},"functionSelector":"2dd31000","mutability":"immutable","name":"FACTORY","nameLocation":"607:7:14","scope":4387,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4264,"name":"address","nodeType":"ElementaryTypeName","src":"582:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":4268,"nodeType":"VariableDeclaration","src":"663:47:14","nodes":[],"constant":false,"documentation":{"id":4266,"nodeType":"StructuredDocumentation","src":"618:42:14","text":"@notice Stage 2 implementation address"},"functionSelector":"9f69ef54","mutability":"immutable","name":"STAGE_2_IMPLEMENTATION","nameLocation":"688:22:14","scope":4387,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4267,"name":"address","nodeType":"ElementaryTypeName","src":"663:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":4275,"nodeType":"VariableDeclaration","src":"786:118:14","nodes":[],"constant":true,"documentation":{"id":4269,"nodeType":"StructuredDocumentation","src":"715:68:14","text":"@dev keccak256(\"org.arcadeum.module.auth.upgradable.image.hash\")"},"mutability":"constant","name":"IMAGE_HASH_KEY","nameLocation":"812:14:14","scope":4387,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4270,"name":"bytes32","nodeType":"ElementaryTypeName","src":"786:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"307865613731353766613235653361613137643061653264353238306661346532346434323163363138343261613835653435313934653131343561613732626638","id":4273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"837:66:14","typeDescriptions":{"typeIdentifier":"t_rational_106041467482713340379632507891644215435067329692436463218523020519418825747448_by_1","typeString":"int_const 1060...(70 digits omitted)...7448"},"value":"0xea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_106041467482713340379632507891644215435067329692436463218523020519418825747448_by_1","typeString":"int_const 1060...(70 digits omitted)...7448"}],"id":4272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"829:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4271,"name":"bytes32","nodeType":"ElementaryTypeName","src":"829:7:14","typeDescriptions":{}}},"id":4274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"829:75:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"id":4280,"nodeType":"EventDefinition","src":"962:45:14","nodes":[],"anonymous":false,"documentation":{"id":4276,"nodeType":"StructuredDocumentation","src":"909:50:14","text":"@notice Emitted when the image hash is updated"},"eventSelector":"307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa","name":"ImageHashUpdated","nameLocation":"968:16:14","parameters":{"id":4279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4278,"indexed":false,"mutability":"mutable","name":"newImageHash","nameLocation":"993:12:14","nodeType":"VariableDeclaration","scope":4280,"src":"985:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4277,"name":"bytes32","nodeType":"ElementaryTypeName","src":"985:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"984:22:14"}},{"id":4320,"nodeType":"FunctionDefinition","src":"1011:330:14","nodes":[],"body":{"id":4319,"nodeType":"Block","src":"1058:283:14","nodes":[],"statements":[{"assignments":[4288],"declarations":[{"constant":false,"id":4288,"mutability":"mutable","name":"initCodeHash","nameLocation":"1142:12:14","nodeType":"VariableDeclaration","scope":4319,"src":"1134:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4287,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1134:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4306,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":4292,"name":"Wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"1184:6:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Wallet_$116_$","typeString":"type(library Wallet)"}},"id":4293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1191:12:14","memberName":"creationCode","nodeType":"MemberAccess","referencedDeclaration":115,"src":"1184:19:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"arguments":[{"arguments":[{"id":4300,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1229:4:14","typeDescriptions":{"typeIdentifier":"t_contract$_Stage1Auth_$4387","typeString":"contract Stage1Auth"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Stage1Auth_$4387","typeString":"contract Stage1Auth"}],"id":4299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1221:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4298,"name":"address","nodeType":"ElementaryTypeName","src":"1221:7:14","typeDescriptions":{}}},"id":4301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1221:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1213:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":4296,"name":"uint160","nodeType":"ElementaryTypeName","src":"1213:7:14","typeDescriptions":{}}},"id":4302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1213:22:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":4295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1205:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4294,"name":"uint256","nodeType":"ElementaryTypeName","src":"1205:7:14","typeDescriptions":{}}},"id":4303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1205:31:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4290,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1167:3:14","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1171:12:14","memberName":"encodePacked","nodeType":"MemberAccess","src":"1167:16:14","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1167:70:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4289,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1157:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1157:81:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1134:104:14"},{"expression":{"id":4309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4307,"name":"INIT_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4262,"src":"1245:14:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4308,"name":"initCodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4288,"src":"1262:12:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1245:29:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4310,"nodeType":"ExpressionStatement","src":"1245:29:14"},{"expression":{"id":4313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4311,"name":"FACTORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4265,"src":"1280:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4312,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"1290:8:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1280:18:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4314,"nodeType":"ExpressionStatement","src":"1280:18:14"},{"expression":{"id":4317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4315,"name":"STAGE_2_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4268,"src":"1304:22:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4316,"name":"_stage2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4284,"src":"1329:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1304:32:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4318,"nodeType":"ExpressionStatement","src":"1304:32:14"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":4285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4282,"mutability":"mutable","name":"_factory","nameLocation":"1031:8:14","nodeType":"VariableDeclaration","scope":4320,"src":"1023:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4281,"name":"address","nodeType":"ElementaryTypeName","src":"1023:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4284,"mutability":"mutable","name":"_stage2","nameLocation":"1049:7:14","nodeType":"VariableDeclaration","scope":4320,"src":"1041:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4283,"name":"address","nodeType":"ElementaryTypeName","src":"1041:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1022:35:14"},"returnParameters":{"id":4286,"nodeType":"ParameterList","parameters":[],"src":"1058:0:14"},"scope":4387,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":4353,"nodeType":"FunctionDefinition","src":"1345:393:14","nodes":[],"body":{"id":4352,"nodeType":"Block","src":"1425:313:14","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4326,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4322,"src":"1470:10:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1492:1:14","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":4328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1484:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4327,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1484:7:14","typeDescriptions":{}}},"id":4330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1484:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1470:24:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4336,"nodeType":"IfStatement","src":"1466:69:14","trueBody":{"id":4335,"nodeType":"Block","src":"1496:39:14","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4332,"name":"ImageHashIsZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4259,"src":"1511:15:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1511:17:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4334,"nodeType":"RevertStatement","src":"1504:24:14"}]}},{"expression":{"arguments":[{"id":4340,"name":"IMAGE_HASH_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4275,"src":"1561:14:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4341,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4322,"src":"1577:10:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4337,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"1540:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":4339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1548:12:14","memberName":"writeBytes32","nodeType":"MemberAccess","referencedDeclaration":1999,"src":"1540:20:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":4342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1540:48:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4343,"nodeType":"ExpressionStatement","src":"1540:48:14"},{"eventCall":{"arguments":[{"id":4345,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4322,"src":"1616:10:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4344,"name":"ImageHashUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4280,"src":"1599:16:14","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":4346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1599:28:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4347,"nodeType":"EmitStatement","src":"1594:33:14"},{"expression":{"arguments":[{"id":4349,"name":"STAGE_2_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4268,"src":"1710:22:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4348,"name":"_updateImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1012,"src":"1688:21:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1688:45:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4351,"nodeType":"ExpressionStatement","src":"1688:45:14"}]},"baseFunctions":[4531],"implemented":true,"kind":"function","modifiers":[],"name":"_updateImageHash","nameLocation":"1354:16:14","overrides":{"id":4324,"nodeType":"OverrideSpecifier","overrides":[],"src":"1416:8:14"},"parameters":{"id":4323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4322,"mutability":"mutable","name":"_imageHash","nameLocation":"1384:10:14","nodeType":"VariableDeclaration","scope":4353,"src":"1376:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4321,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1376:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1370:28:14"},"returnParameters":{"id":4325,"nodeType":"ParameterList","parameters":[],"src":"1425:0:14"},"scope":4387,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":4386,"nodeType":"FunctionDefinition","src":"1742:238:14","nodes":[],"body":{"id":4385,"nodeType":"Block","src":"1839:141:14","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"ff","id":4370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"1903:7:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""}},{"id":4371,"name":"FACTORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4265,"src":"1912:7:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4372,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4355,"src":"1921:10:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4373,"name":"INIT_CODE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4262,"src":"1933:14:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string hex\"ff\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4368,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1886:3:14","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4369,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1890:12:14","memberName":"encodePacked","nodeType":"MemberAccess","src":"1886:16:14","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1886:62:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4367,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1876:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1876:73:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1868:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4365,"name":"uint256","nodeType":"ElementaryTypeName","src":"1868:7:14","typeDescriptions":{}}},"id":4376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1868:82:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1860:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":4363,"name":"uint160","nodeType":"ElementaryTypeName","src":"1860:7:14","typeDescriptions":{}}},"id":4377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1860:91:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":4362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1852:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4361,"name":"address","nodeType":"ElementaryTypeName","src":"1852:7:14","typeDescriptions":{}}},"id":4378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1852:100:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":4381,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1970:4:14","typeDescriptions":{"typeIdentifier":"t_contract$_Stage1Auth_$4387","typeString":"contract Stage1Auth"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Stage1Auth_$4387","typeString":"contract Stage1Auth"}],"id":4380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1962:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4379,"name":"address","nodeType":"ElementaryTypeName","src":"1962:7:14","typeDescriptions":{}}},"id":4382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1962:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1852:123:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4360,"id":4384,"nodeType":"Return","src":"1845:130:14"}]},"baseFunctions":[4526],"implemented":true,"kind":"function","modifiers":[],"name":"_isValidImage","nameLocation":"1751:13:14","overrides":{"id":4357,"nodeType":"OverrideSpecifier","overrides":[],"src":"1815:8:14"},"parameters":{"id":4356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4355,"mutability":"mutable","name":"_imageHash","nameLocation":"1778:10:14","nodeType":"VariableDeclaration","scope":4386,"src":"1770:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4354,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1770:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1764:28:14"},"returnParameters":{"id":4360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4359,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4386,"src":"1833:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4358,"name":"bool","nodeType":"ElementaryTypeName","src":"1833:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1832:6:14"},"scope":4387,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":4253,"name":"BaseAuth","nameLocations":["357:8:14"],"nodeType":"IdentifierPath","referencedDeclaration":2564,"src":"357:8:14"},"id":4254,"nodeType":"InheritanceSpecifier","src":"357:8:14"},{"baseName":{"id":4255,"name":"Implementation","nameLocations":["367:14:14"],"nodeType":"IdentifierPath","referencedDeclaration":1027,"src":"367:14:14"},"id":4256,"nodeType":"InheritanceSpecifier","src":"367:14:14"}],"canonicalName":"Stage1Auth","contractDependencies":[],"contractKind":"contract","documentation":{"id":4252,"nodeType":"StructuredDocumentation","src":"250:84:14","text":"@title Stage1Auth\n @author Agustin Aguilar\n @notice Stage 1 auth contract"},"fullyImplemented":true,"linearizedBaseContracts":[4387,1027,2564,4241,4631,4749,4732,4532],"name":"Stage1Auth","nameLocation":"343:10:14","scope":4388,"usedErrors":[1155,2100,2107,2114,2123,2631,2640,2647,2653,2658,2661,4222,4259],"usedEvents":[975,2132,4280]}],"license":"Apache-2.0"}},"src/modules/auth/Stage2Auth.sol":{"id":15,"ast":{"absolutePath":"src/modules/auth/Stage2Auth.sol","id":4481,"exportedSymbols":{"BaseAuth":[2564],"Implementation":[1027],"Stage2Auth":[4480],"Storage":[2051]},"nodeType":"SourceUnit","src":"39:1326:15","nodes":[{"id":4389,"nodeType":"PragmaDirective","src":"39:24:15","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":4391,"nodeType":"ImportDirective","src":"65:55:15","nodes":[],"absolutePath":"src/modules/Implementation.sol","file":"../Implementation.sol","nameLocation":"-1:-1:-1","scope":4481,"sourceUnit":1028,"symbolAliases":[{"foreign":{"id":4390,"name":"Implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1027,"src":"74:14:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":4393,"nodeType":"ImportDirective","src":"121:41:15","nodes":[],"absolutePath":"src/modules/Storage.sol","file":"../Storage.sol","nameLocation":"-1:-1:-1","scope":4481,"sourceUnit":2052,"symbolAliases":[{"foreign":{"id":4392,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"130:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":4395,"nodeType":"ImportDirective","src":"163:42:15","nodes":[],"absolutePath":"src/modules/auth/BaseAuth.sol","file":"./BaseAuth.sol","nameLocation":"-1:-1:-1","scope":4481,"sourceUnit":2565,"symbolAliases":[{"foreign":{"id":4394,"name":"BaseAuth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2564,"src":"172:8:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":4480,"nodeType":"ContractDefinition","src":"291:1073:15","nodes":[{"id":4407,"nodeType":"VariableDeclaration","src":"415:118:15","nodes":[],"constant":true,"documentation":{"id":4401,"nodeType":"StructuredDocumentation","src":"344:68:15","text":"@dev keccak256(\"org.arcadeum.module.auth.upgradable.image.hash\")"},"mutability":"constant","name":"IMAGE_HASH_KEY","nameLocation":"441:14:15","scope":4480,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4402,"name":"bytes32","nodeType":"ElementaryTypeName","src":"415:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"307865613731353766613235653361613137643061653264353238306661346532346434323163363138343261613835653435313934653131343561613732626638","id":4405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"466:66:15","typeDescriptions":{"typeIdentifier":"t_rational_106041467482713340379632507891644215435067329692436463218523020519418825747448_by_1","typeString":"int_const 1060...(70 digits omitted)...7448"},"value":"0xea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf8"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_106041467482713340379632507891644215435067329692436463218523020519418825747448_by_1","typeString":"int_const 1060...(70 digits omitted)...7448"}],"id":4404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"458:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4403,"name":"bytes32","nodeType":"ElementaryTypeName","src":"458:7:15","typeDescriptions":{}}},"id":4406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"458:75:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"id":4412,"nodeType":"EventDefinition","src":"591:45:15","nodes":[],"anonymous":false,"documentation":{"id":4408,"nodeType":"StructuredDocumentation","src":"538:50:15","text":"@notice Emitted when the image hash is updated"},"eventSelector":"307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa","name":"ImageHashUpdated","nameLocation":"597:16:15","parameters":{"id":4411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4410,"indexed":false,"mutability":"mutable","name":"newImageHash","nameLocation":"622:12:15","nodeType":"VariableDeclaration","scope":4412,"src":"614:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4409,"name":"bytes32","nodeType":"ElementaryTypeName","src":"614:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"613:22:15"}},{"id":4415,"nodeType":"ErrorDefinition","src":"695:24:15","nodes":[],"documentation":{"id":4413,"nodeType":"StructuredDocumentation","src":"640:52:15","text":"@notice Error thrown when the image hash is zero"},"errorSelector":"4294d127","name":"ImageHashIsZero","nameLocation":"701:15:15","parameters":{"id":4414,"nodeType":"ParameterList","parameters":[],"src":"716:2:15"}},{"id":4427,"nodeType":"FunctionDefinition","src":"795:114:15","nodes":[],"body":{"id":4426,"nodeType":"Block","src":"856:53:15","nodes":[],"statements":[{"expression":{"arguments":[{"id":4423,"name":"IMAGE_HASH_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4407,"src":"889:14:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4421,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"869:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":4422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"877:11:15","memberName":"readBytes32","nodeType":"MemberAccess","referencedDeclaration":2008,"src":"869:19:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":4424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"869:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":4420,"id":4425,"nodeType":"Return","src":"862:42:15"}]},"documentation":{"id":4416,"nodeType":"StructuredDocumentation","src":"723:69:15","text":"@notice Get the image hash\n @return imageHash The image hash"},"functionSelector":"51605d80","implemented":true,"kind":"function","modifiers":[],"name":"imageHash","nameLocation":"804:9:15","parameters":{"id":4417,"nodeType":"ParameterList","parameters":[],"src":"813:2:15"},"returnParameters":{"id":4420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4419,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4427,"src":"847:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4418,"name":"bytes32","nodeType":"ElementaryTypeName","src":"847:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"846:9:15"},"scope":4480,"stateMutability":"view","virtual":true,"visibility":"external"},{"id":4450,"nodeType":"FunctionDefinition","src":"913:192:15","nodes":[],"body":{"id":4449,"nodeType":"Block","src":"1010:95:15","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4435,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"1023:10:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1045:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1037:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4436,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1037:7:15","typeDescriptions":{}}},"id":4439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1037:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1023:24:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4441,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"1051:10:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":4444,"name":"IMAGE_HASH_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4407,"src":"1085:14:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4442,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"1065:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":4443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1073:11:15","memberName":"readBytes32","nodeType":"MemberAccess","referencedDeclaration":2008,"src":"1065:19:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":4445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1065:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1051:49:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1023:77:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4434,"id":4448,"nodeType":"Return","src":"1016:84:15"}]},"baseFunctions":[4526],"implemented":true,"kind":"function","modifiers":[],"name":"_isValidImage","nameLocation":"922:13:15","overrides":{"id":4431,"nodeType":"OverrideSpecifier","overrides":[],"src":"986:8:15"},"parameters":{"id":4430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4429,"mutability":"mutable","name":"_imageHash","nameLocation":"949:10:15","nodeType":"VariableDeclaration","scope":4450,"src":"941:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4428,"name":"bytes32","nodeType":"ElementaryTypeName","src":"941:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"935:28:15"},"returnParameters":{"id":4434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4433,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4450,"src":"1004:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4432,"name":"bool","nodeType":"ElementaryTypeName","src":"1004:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1003:6:15"},"scope":4480,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":4479,"nodeType":"FunctionDefinition","src":"1109:252:15","nodes":[],"body":{"id":4478,"nodeType":"Block","src":"1189:172:15","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":4461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4456,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"1199:10:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1221:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1213:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4457,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1213:7:15","typeDescriptions":{}}},"id":4460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1213:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1199:24:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4466,"nodeType":"IfStatement","src":"1195:69:15","trueBody":{"id":4465,"nodeType":"Block","src":"1225:39:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4462,"name":"ImageHashIsZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4415,"src":"1240:15:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1240:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4464,"nodeType":"RevertStatement","src":"1233:24:15"}]}},{"expression":{"arguments":[{"id":4470,"name":"IMAGE_HASH_KEY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4407,"src":"1290:14:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4471,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"1306:10:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":4467,"name":"Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"1269:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Storage_$2051_$","typeString":"type(library Storage)"}},"id":4469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1277:12:15","memberName":"writeBytes32","nodeType":"MemberAccess","referencedDeclaration":1999,"src":"1269:20:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":4472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1269:48:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4473,"nodeType":"ExpressionStatement","src":"1269:48:15"},{"eventCall":{"arguments":[{"id":4475,"name":"_imageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"1345:10:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4474,"name":"ImageHashUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4412,"src":"1328:16:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":4476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1328:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4477,"nodeType":"EmitStatement","src":"1323:33:15"}]},"baseFunctions":[4531],"implemented":true,"kind":"function","modifiers":[],"name":"_updateImageHash","nameLocation":"1118:16:15","overrides":{"id":4454,"nodeType":"OverrideSpecifier","overrides":[],"src":"1180:8:15"},"parameters":{"id":4453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4452,"mutability":"mutable","name":"_imageHash","nameLocation":"1148:10:15","nodeType":"VariableDeclaration","scope":4479,"src":"1140:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4451,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1140:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1134:28:15"},"returnParameters":{"id":4455,"nodeType":"ParameterList","parameters":[],"src":"1189:0:15"},"scope":4480,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":4397,"name":"BaseAuth","nameLocations":["314:8:15"],"nodeType":"IdentifierPath","referencedDeclaration":2564,"src":"314:8:15"},"id":4398,"nodeType":"InheritanceSpecifier","src":"314:8:15"},{"baseName":{"id":4399,"name":"Implementation","nameLocations":["324:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":1027,"src":"324:14:15"},"id":4400,"nodeType":"InheritanceSpecifier","src":"324:14:15"}],"canonicalName":"Stage2Auth","contractDependencies":[],"contractKind":"contract","documentation":{"id":4396,"nodeType":"StructuredDocumentation","src":"207:84:15","text":"@title Stage2Auth\n @author Agustin Aguilar\n @notice Stage 2 auth contract"},"fullyImplemented":true,"linearizedBaseContracts":[4480,1027,2564,4241,4631,4749,4732,4532],"name":"Stage2Auth","nameLocation":"300:10:15","scope":4481,"usedErrors":[1155,2100,2107,2114,2123,2631,2640,2647,2653,2658,2661,4222,4415],"usedEvents":[975,2132,4412]}],"license":"Apache-2.0"}},"src/modules/interfaces/IAccount.sol":{"id":16,"ast":{"absolutePath":"src/modules/interfaces/IAccount.sol","id":4517,"exportedSymbols":{"IAccount":[4516],"PackedUserOperation":[4502]},"nodeType":"SourceUnit","src":"32:3866:16","nodes":[{"id":4482,"nodeType":"PragmaDirective","src":"32:24:16","nodes":[],"literals":["solidity","^","0.8",".28"]},{"id":4502,"nodeType":"StructDefinition","src":"1222:223:16","nodes":[],"canonicalName":"PackedUserOperation","documentation":{"id":4483,"nodeType":"StructuredDocumentation","src":"58:1163:16","text":" User Operation struct\n @param sender - The sender account of this request.\n @param nonce - Unique value the sender uses to verify it is not a replay.\n @param initCode - If set, the account contract will be created by this constructor\n @param callData - The method call to execute on this account.\n @param accountGasLimits - Packed gas limits for validateUserOp and gas limit passed to the callData method call.\n @param preVerificationGas - Gas not calculated by the handleOps method, but added to the gas paid.\n Covers batch overhead.\n @param gasFees - packed gas fields maxPriorityFeePerGas and maxFeePerGas - Same as EIP-1559 gas parameters.\n @param paymasterAndData - If set, this field holds the paymaster address, verification gas limit, postOp gas limit and paymaster-specific extra data\n The paymaster will pay for the transaction instead of the sender.\n @param signature - Sender-verified signature over the entire request, the EntryPoint address and the chain ID."},"members":[{"constant":false,"id":4485,"mutability":"mutable","name":"sender","nameLocation":"1261:6:16","nodeType":"VariableDeclaration","scope":4502,"src":"1253:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4484,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4487,"mutability":"mutable","name":"nonce","nameLocation":"1279:5:16","nodeType":"VariableDeclaration","scope":4502,"src":"1271:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4486,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4489,"mutability":"mutable","name":"initCode","nameLocation":"1294:8:16","nodeType":"VariableDeclaration","scope":4502,"src":"1288:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4488,"name":"bytes","nodeType":"ElementaryTypeName","src":"1288:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4491,"mutability":"mutable","name":"callData","nameLocation":"1312:8:16","nodeType":"VariableDeclaration","scope":4502,"src":"1306:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4490,"name":"bytes","nodeType":"ElementaryTypeName","src":"1306:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4493,"mutability":"mutable","name":"accountGasLimits","nameLocation":"1332:16:16","nodeType":"VariableDeclaration","scope":4502,"src":"1324:24:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4492,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1324:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4495,"mutability":"mutable","name":"preVerificationGas","nameLocation":"1360:18:16","nodeType":"VariableDeclaration","scope":4502,"src":"1352:26:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4494,"name":"uint256","nodeType":"ElementaryTypeName","src":"1352:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4497,"mutability":"mutable","name":"gasFees","nameLocation":"1390:7:16","nodeType":"VariableDeclaration","scope":4502,"src":"1382:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4496,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1382:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4499,"mutability":"mutable","name":"paymasterAndData","nameLocation":"1407:16:16","nodeType":"VariableDeclaration","scope":4502,"src":"1401:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4498,"name":"bytes","nodeType":"ElementaryTypeName","src":"1401:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4501,"mutability":"mutable","name":"signature","nameLocation":"1433:9:16","nodeType":"VariableDeclaration","scope":4502,"src":"1427:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":4500,"name":"bytes","nodeType":"ElementaryTypeName","src":"1427:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"PackedUserOperation","nameLocation":"1229:19:16","scope":4517,"visibility":"public"},{"id":4516,"nodeType":"ContractDefinition","src":"1447:2450:16","nodes":[{"id":4515,"nodeType":"FunctionDefinition","src":"3726:168:16","nodes":[],"documentation":{"id":4503,"nodeType":"StructuredDocumentation","src":"1471:2252:16","text":" Validate user's signature and nonce\n the entryPoint will make the call to the recipient only if this validation call returns successfully.\n signature failure should be reported by returning SIG_VALIDATION_FAILED (1).\n This allows making a \"simulation call\" without a valid signature\n Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\n @dev Must validate caller is the entryPoint.\n Must validate the signature and nonce\n @param userOp - The operation that is about to be executed.\n @param userOpHash - Hash of the user's request data. can be used as the basis for signature.\n @param missingAccountFunds - Missing funds on the account's deposit in the entrypoint.\n This is the minimum amount to transfer to the sender(entryPoint) to be\n able to make the call. The excess is left as a deposit in the entrypoint\n for future calls. Can be withdrawn anytime using \"entryPoint.withdrawTo()\".\n In case there is a paymaster in the request (or the current deposit is high\n enough), this value will be zero.\n @return validationData - Packaged ValidationData structure. use `_packValidationData` and\n `_unpackValidationData` to encode and decode.\n <20-byte> aggregatorOrSigFail - 0 for valid signature, 1 to mark signature failure,\n otherwise, an address of an \"aggregator\" contract.\n <6-byte> validUntil - Last timestamp this operation is valid at, or 0 for \"indefinitely\"\n <6-byte> validAfter - First timestamp this operation is valid\n If an account doesn't use time-range, it is enough to\n return SIG_VALIDATION_FAILED value (1) for signature failure.\n Note that the validation code cannot use block.timestamp (or block.number) directly."},"functionSelector":"19822f7c","implemented":false,"kind":"function","modifiers":[],"name":"validateUserOp","nameLocation":"3735:14:16","parameters":{"id":4511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4506,"mutability":"mutable","name":"userOp","nameLocation":"3784:6:16","nodeType":"VariableDeclaration","scope":4515,"src":"3755:35:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_PackedUserOperation_$4502_calldata_ptr","typeString":"struct PackedUserOperation"},"typeName":{"id":4505,"nodeType":"UserDefinedTypeName","pathNode":{"id":4504,"name":"PackedUserOperation","nameLocations":["3755:19:16"],"nodeType":"IdentifierPath","referencedDeclaration":4502,"src":"3755:19:16"},"referencedDeclaration":4502,"src":"3755:19:16","typeDescriptions":{"typeIdentifier":"t_struct$_PackedUserOperation_$4502_storage_ptr","typeString":"struct PackedUserOperation"}},"visibility":"internal"},{"constant":false,"id":4508,"mutability":"mutable","name":"userOpHash","nameLocation":"3804:10:16","nodeType":"VariableDeclaration","scope":4515,"src":"3796:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4507,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3796:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4510,"mutability":"mutable","name":"missingAccountFunds","nameLocation":"3828:19:16","nodeType":"VariableDeclaration","scope":4515,"src":"3820:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4509,"name":"uint256","nodeType":"ElementaryTypeName","src":"3820:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3749:102:16"},"returnParameters":{"id":4514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4513,"mutability":"mutable","name":"validationData","nameLocation":"3878:14:16","nodeType":"VariableDeclaration","scope":4515,"src":"3870:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4512,"name":"uint256","nodeType":"ElementaryTypeName","src":"3870:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3869:24:16"},"scope":4516,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IAccount","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[4516],"name":"IAccount","nameLocation":"1457:8:16","scope":4517,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"src/modules/interfaces/IAuth.sol":{"id":17,"ast":{"absolutePath":"src/modules/interfaces/IAuth.sol","id":4533,"exportedSymbols":{"IAuth":[4532]},"nodeType":"SourceUnit","src":"39:355:17","nodes":[{"id":4518,"nodeType":"PragmaDirective","src":"39:24:17","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":4532,"nodeType":"ContractDefinition","src":"192:201:17","nodes":[{"id":4526,"nodeType":"FunctionDefinition","src":"221:95:17","nodes":[],"implemented":false,"kind":"function","modifiers":[],"name":"_isValidImage","nameLocation":"230:13:17","parameters":{"id":4522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4521,"mutability":"mutable","name":"imageHash","nameLocation":"257:9:17","nodeType":"VariableDeclaration","scope":4526,"src":"249:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4520,"name":"bytes32","nodeType":"ElementaryTypeName","src":"249:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"243:27:17"},"returnParameters":{"id":4525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4524,"mutability":"mutable","name":"isValid","nameLocation":"307:7:17","nodeType":"VariableDeclaration","scope":4526,"src":"302:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4523,"name":"bool","nodeType":"ElementaryTypeName","src":"302:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"301:14:17"},"scope":4532,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":4531,"nodeType":"FunctionDefinition","src":"320:70:17","nodes":[],"implemented":false,"kind":"function","modifiers":[],"name":"_updateImageHash","nameLocation":"329:16:17","parameters":{"id":4529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4528,"mutability":"mutable","name":"imageHash","nameLocation":"359:9:17","nodeType":"VariableDeclaration","scope":4531,"src":"351:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4527,"name":"bytes32","nodeType":"ElementaryTypeName","src":"351:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"345:27:17"},"returnParameters":{"id":4530,"nodeType":"ParameterList","parameters":[],"src":"389:0:17"},"scope":4532,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[],"canonicalName":"IAuth","contractDependencies":[],"contractKind":"contract","documentation":{"id":4519,"nodeType":"StructuredDocumentation","src":"65:127:17","text":"@title IAuth\n @author Agustin Aguilar, Michael Standen, William Hua\n @notice Internal interface for the auth modules"},"fullyImplemented":false,"linearizedBaseContracts":[4532],"name":"IAuth","nameLocation":"210:5:17","scope":4533,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/ICheckpointer.sol":{"id":18,"ast":{"absolutePath":"src/modules/interfaces/ICheckpointer.sol","id":4554,"exportedSymbols":{"ICheckpointer":[4553],"Snapshot":[4540]},"nodeType":"SourceUnit","src":"39:628:18","nodes":[{"id":4534,"nodeType":"PragmaDirective","src":"39:24:18","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":4540,"nodeType":"StructDefinition","src":"198:62:18","nodes":[],"canonicalName":"Snapshot","documentation":{"id":4535,"nodeType":"StructuredDocumentation","src":"65:133:18","text":"@notice Snapshot for a specific wallet\n @param imageHash Image hash of the wallet\n @param checkpoint Checkpoint identifier"},"members":[{"constant":false,"id":4537,"mutability":"mutable","name":"imageHash","nameLocation":"226:9:18","nodeType":"VariableDeclaration","scope":4540,"src":"218:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4536,"name":"bytes32","nodeType":"ElementaryTypeName","src":"218:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4539,"mutability":"mutable","name":"checkpoint","nameLocation":"247:10:18","nodeType":"VariableDeclaration","scope":4540,"src":"239:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4538,"name":"uint256","nodeType":"ElementaryTypeName","src":"239:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Snapshot","nameLocation":"205:8:18","scope":4554,"visibility":"public"},{"id":4553,"nodeType":"ContractDefinition","src":"365:301:18","nodes":[{"id":4552,"nodeType":"FunctionDefinition","src":"553:110:18","nodes":[],"documentation":{"id":4542,"nodeType":"StructuredDocumentation","src":"394:156:18","text":"@notice Get the snapshot for a specific wallet\n @param _wallet The wallet address\n @param _proof The proof\n @return snapshot The snapshot"},"functionSelector":"ccce3bc8","implemented":false,"kind":"function","modifiers":[],"name":"snapshotFor","nameLocation":"562:11:18","parameters":{"id":4547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4544,"mutability":"mutable","name":"_wallet","nameLocation":"582:7:18","nodeType":"VariableDeclaration","scope":4552,"src":"574:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4543,"name":"address","nodeType":"ElementaryTypeName","src":"574:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4546,"mutability":"mutable","name":"_proof","nameLocation":"606:6:18","nodeType":"VariableDeclaration","scope":4552,"src":"591:21:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4545,"name":"bytes","nodeType":"ElementaryTypeName","src":"591:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"573:40:18"},"returnParameters":{"id":4551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4550,"mutability":"mutable","name":"snapshot","nameLocation":"653:8:18","nodeType":"VariableDeclaration","scope":4552,"src":"637:24:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_memory_ptr","typeString":"struct Snapshot"},"typeName":{"id":4549,"nodeType":"UserDefinedTypeName","pathNode":{"id":4548,"name":"Snapshot","nameLocations":["637:8:18"],"nodeType":"IdentifierPath","referencedDeclaration":4540,"src":"637:8:18"},"referencedDeclaration":4540,"src":"637:8:18","typeDescriptions":{"typeIdentifier":"t_struct$_Snapshot_$4540_storage_ptr","typeString":"struct Snapshot"}},"visibility":"internal"}],"src":"636:26:18"},"scope":4553,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ICheckpointer","contractDependencies":[],"contractKind":"interface","documentation":{"id":4541,"nodeType":"StructuredDocumentation","src":"262:103:18","text":"@title ICheckpointer\n @author Agustin Aguilar\n @notice Interface for the checkpointer module"},"fullyImplemented":false,"linearizedBaseContracts":[4553],"name":"ICheckpointer","nameLocation":"375:13:18","scope":4554,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/IDelegatedExtension.sol":{"id":19,"ast":{"absolutePath":"src/modules/interfaces/IDelegatedExtension.sol","id":4574,"exportedSymbols":{"IDelegatedExtension":[4573]},"nodeType":"SourceUnit","src":"39:626:19","nodes":[{"id":4555,"nodeType":"PragmaDirective","src":"39:24:19","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":4573,"nodeType":"ContractDefinition","src":"181:483:19","nodes":[{"id":4572,"nodeType":"FunctionDefinition","src":"476:185:19","nodes":[],"documentation":{"id":4557,"nodeType":"StructuredDocumentation","src":"216:257:19","text":"@notice Handle a sequence delegate call\n @param _opHash The operation hash\n @param _startingGas The starting gas\n @param _index The index\n @param _numCalls The number of calls\n @param _space The space\n @param _data The data"},"functionSelector":"4c4e814c","implemented":false,"kind":"function","modifiers":[],"name":"handleSequenceDelegateCall","nameLocation":"485:26:19","parameters":{"id":4570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4559,"mutability":"mutable","name":"_opHash","nameLocation":"525:7:19","nodeType":"VariableDeclaration","scope":4572,"src":"517:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4558,"name":"bytes32","nodeType":"ElementaryTypeName","src":"517:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4561,"mutability":"mutable","name":"_startingGas","nameLocation":"546:12:19","nodeType":"VariableDeclaration","scope":4572,"src":"538:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4560,"name":"uint256","nodeType":"ElementaryTypeName","src":"538:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4563,"mutability":"mutable","name":"_index","nameLocation":"572:6:19","nodeType":"VariableDeclaration","scope":4572,"src":"564:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4562,"name":"uint256","nodeType":"ElementaryTypeName","src":"564:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4565,"mutability":"mutable","name":"_numCalls","nameLocation":"592:9:19","nodeType":"VariableDeclaration","scope":4572,"src":"584:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4564,"name":"uint256","nodeType":"ElementaryTypeName","src":"584:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4567,"mutability":"mutable","name":"_space","nameLocation":"615:6:19","nodeType":"VariableDeclaration","scope":4572,"src":"607:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4566,"name":"uint256","nodeType":"ElementaryTypeName","src":"607:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4569,"mutability":"mutable","name":"_data","nameLocation":"642:5:19","nodeType":"VariableDeclaration","scope":4572,"src":"627:20:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4568,"name":"bytes","nodeType":"ElementaryTypeName","src":"627:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"511:140:19"},"returnParameters":{"id":4571,"nodeType":"ParameterList","parameters":[],"src":"660:0:19"},"scope":4573,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IDelegatedExtension","contractDependencies":[],"contractKind":"interface","documentation":{"id":4556,"nodeType":"StructuredDocumentation","src":"65:116:19","text":"@title IDelegatedExtension\n @author Agustin Aguilar\n @notice Interface for the delegated extension module"},"fullyImplemented":false,"linearizedBaseContracts":[4573],"name":"IDelegatedExtension","nameLocation":"191:19:19","scope":4574,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/IERC1155Receiver.sol":{"id":20,"ast":{"absolutePath":"src/modules/interfaces/IERC1155Receiver.sol","id":4612,"exportedSymbols":{"IERC1155Receiver":[4611]},"nodeType":"SourceUnit","src":"39:1457:20","nodes":[{"id":4575,"nodeType":"PragmaDirective","src":"39:24:20","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":4611,"nodeType":"ContractDefinition","src":"147:1348:20","nodes":[{"id":4592,"nodeType":"FunctionDefinition","src":"645:173:20","nodes":[],"documentation":{"id":4577,"nodeType":"StructuredDocumentation","src":"179:463:20","text":"@notice Called when a single ERC1155 token is transferred to this contract\n @param operator The address which initiated the transfer\n @param from The address which previously owned the token\n @param tokenId The ID of the token being transferred\n @param value The amount of token being transferred\n @param data Additional data with no specified format\n @return magicValue On a success, the selector of the function that was called"},"functionSelector":"f23a6e61","implemented":false,"kind":"function","modifiers":[],"name":"onERC1155Received","nameLocation":"654:17:20","parameters":{"id":4588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4579,"mutability":"mutable","name":"operator","nameLocation":"685:8:20","nodeType":"VariableDeclaration","scope":4592,"src":"677:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4578,"name":"address","nodeType":"ElementaryTypeName","src":"677:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4581,"mutability":"mutable","name":"from","nameLocation":"707:4:20","nodeType":"VariableDeclaration","scope":4592,"src":"699:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4580,"name":"address","nodeType":"ElementaryTypeName","src":"699:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4583,"mutability":"mutable","name":"tokenId","nameLocation":"725:7:20","nodeType":"VariableDeclaration","scope":4592,"src":"717:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4582,"name":"uint256","nodeType":"ElementaryTypeName","src":"717:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4585,"mutability":"mutable","name":"value","nameLocation":"746:5:20","nodeType":"VariableDeclaration","scope":4592,"src":"738:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4584,"name":"uint256","nodeType":"ElementaryTypeName","src":"738:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4587,"mutability":"mutable","name":"data","nameLocation":"772:4:20","nodeType":"VariableDeclaration","scope":4592,"src":"757:19:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4586,"name":"bytes","nodeType":"ElementaryTypeName","src":"757:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"671:109:20"},"returnParameters":{"id":4591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4590,"mutability":"mutable","name":"magicValue","nameLocation":"806:10:20","nodeType":"VariableDeclaration","scope":4592,"src":"799:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4589,"name":"bytes4","nodeType":"ElementaryTypeName","src":"799:6:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"798:19:20"},"scope":4611,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4610,"nodeType":"FunctionDefinition","src":"1295:197:20","nodes":[],"documentation":{"id":4593,"nodeType":"StructuredDocumentation","src":"822:470:20","text":"@notice Called when multiple ERC1155 tokens are transferred to this contract\n @param operator The address which initiated the transfer\n @param from The address which previously owned the token\n @param ids The list of token IDs being transferred\n @param values The amounts of each token being transferred\n @param data Additional data with no specified format\n @return magicValue On a success, the selector of the function that was called"},"functionSelector":"bc197c81","implemented":false,"kind":"function","modifiers":[],"name":"onERC1155BatchReceived","nameLocation":"1304:22:20","parameters":{"id":4606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4595,"mutability":"mutable","name":"operator","nameLocation":"1340:8:20","nodeType":"VariableDeclaration","scope":4610,"src":"1332:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4594,"name":"address","nodeType":"ElementaryTypeName","src":"1332:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4597,"mutability":"mutable","name":"from","nameLocation":"1362:4:20","nodeType":"VariableDeclaration","scope":4610,"src":"1354:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4596,"name":"address","nodeType":"ElementaryTypeName","src":"1354:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4600,"mutability":"mutable","name":"ids","nameLocation":"1391:3:20","nodeType":"VariableDeclaration","scope":4610,"src":"1372:22:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4598,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4599,"nodeType":"ArrayTypeName","src":"1372:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4603,"mutability":"mutable","name":"values","nameLocation":"1419:6:20","nodeType":"VariableDeclaration","scope":4610,"src":"1400:25:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4601,"name":"uint256","nodeType":"ElementaryTypeName","src":"1400:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4602,"nodeType":"ArrayTypeName","src":"1400:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":4605,"mutability":"mutable","name":"data","nameLocation":"1446:4:20","nodeType":"VariableDeclaration","scope":4610,"src":"1431:19:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4604,"name":"bytes","nodeType":"ElementaryTypeName","src":"1431:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1326:128:20"},"returnParameters":{"id":4609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4608,"mutability":"mutable","name":"magicValue","nameLocation":"1480:10:20","nodeType":"VariableDeclaration","scope":4610,"src":"1473:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4607,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1473:6:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1472:19:20"},"scope":4611,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":4576,"nodeType":"StructuredDocumentation","src":"65:82:20","text":"@title IERC1155Receiver\n @notice Interface for the ERC1155 receiver module"},"fullyImplemented":false,"linearizedBaseContracts":[4611],"name":"IERC1155Receiver","nameLocation":"157:16:20","scope":4612,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/IERC1271.sol":{"id":21,"ast":{"absolutePath":"src/modules/interfaces/IERC1271.sol","id":4644,"exportedSymbols":{"IERC1271":[4631],"IERC1271Data":[4643],"IERC1271_MAGIC_VALUE_BYTES":[4619],"IERC1271_MAGIC_VALUE_HASH":[4616]},"nodeType":"SourceUnit","src":"39:1764:21","nodes":[{"id":4613,"nodeType":"PragmaDirective","src":"39:24:21","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":4616,"nodeType":"VariableDeclaration","src":"65:54:21","nodes":[],"constant":true,"mutability":"constant","name":"IERC1271_MAGIC_VALUE_HASH","nameLocation":"81:25:21","scope":4644,"stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4614,"name":"bytes4","nodeType":"ElementaryTypeName","src":"65:6:21","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783136323662613765","id":4615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"109:10:21","typeDescriptions":{"typeIdentifier":"t_rational_371636862_by_1","typeString":"int_const 371636862"},"value":"0x1626ba7e"},"visibility":"internal"},{"id":4619,"nodeType":"VariableDeclaration","src":"121:55:21","nodes":[],"constant":true,"mutability":"constant","name":"IERC1271_MAGIC_VALUE_BYTES","nameLocation":"137:26:21","scope":4644,"stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4617,"name":"bytes4","nodeType":"ElementaryTypeName","src":"121:6:21","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30783230633133623062","id":4618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"166:10:21","typeDescriptions":{"typeIdentifier":"t_rational_549534475_by_1","typeString":"int_const 549534475"},"value":"0x20c13b0b"},"visibility":"internal"},{"id":4631,"nodeType":"ContractDefinition","src":"233:734:21","nodes":[{"id":4630,"nodeType":"FunctionDefinition","src":"854:110:21","nodes":[],"documentation":{"id":4621,"nodeType":"StructuredDocumentation","src":"257:594:21","text":"@notice Verifies whether the provided signature is valid with respect to the provided hash\n @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256(\"isValidSignature(bytes32,bytes)\")\n > This function MAY modify Ethereum's state\n @param _hash keccak256 hash that was signed\n @param _signature Signature byte array associated with _data\n @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise"},"functionSelector":"1626ba7e","implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"863:16:21","parameters":{"id":4626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4623,"mutability":"mutable","name":"_hash","nameLocation":"888:5:21","nodeType":"VariableDeclaration","scope":4630,"src":"880:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4622,"name":"bytes32","nodeType":"ElementaryTypeName","src":"880:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4625,"mutability":"mutable","name":"_signature","nameLocation":"910:10:21","nodeType":"VariableDeclaration","scope":4630,"src":"895:25:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4624,"name":"bytes","nodeType":"ElementaryTypeName","src":"895:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"879:42:21"},"returnParameters":{"id":4629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4628,"mutability":"mutable","name":"magicValue","nameLocation":"952:10:21","nodeType":"VariableDeclaration","scope":4630,"src":"945:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4627,"name":"bytes4","nodeType":"ElementaryTypeName","src":"945:6:21","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"944:19:21"},"scope":4631,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1271","contractDependencies":[],"contractKind":"interface","documentation":{"id":4620,"nodeType":"StructuredDocumentation","src":"179:54:21","text":"@title IERC1271\n @notice Interface for ERC1271"},"fullyImplemented":false,"linearizedBaseContracts":[4631],"name":"IERC1271","nameLocation":"243:8:21","scope":4644,"usedErrors":[],"usedEvents":[]},{"id":4643,"nodeType":"ContractDefinition","src":"1069:733:21","nodes":[{"id":4642,"nodeType":"FunctionDefinition","src":"1682:117:21","nodes":[],"documentation":{"id":4633,"nodeType":"StructuredDocumentation","src":"1097:582:21","text":"@notice Verifies whether the provided signature is valid with respect to the provided hash\n @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n > This function MAY modify Ethereum's state\n @param _data Data that was signed\n @param _signature Signature byte array associated with _data\n @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise"},"functionSelector":"20c13b0b","implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"1691:16:21","parameters":{"id":4638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4635,"mutability":"mutable","name":"_data","nameLocation":"1723:5:21","nodeType":"VariableDeclaration","scope":4642,"src":"1708:20:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4634,"name":"bytes","nodeType":"ElementaryTypeName","src":"1708:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4637,"mutability":"mutable","name":"_signature","nameLocation":"1745:10:21","nodeType":"VariableDeclaration","scope":4642,"src":"1730:25:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4636,"name":"bytes","nodeType":"ElementaryTypeName","src":"1730:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1707:49:21"},"returnParameters":{"id":4641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4640,"mutability":"mutable","name":"magicValue","nameLocation":"1787:10:21","nodeType":"VariableDeclaration","scope":4642,"src":"1780:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4639,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1780:6:21","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1779:19:21"},"scope":4643,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC1271Data","contractDependencies":[],"contractKind":"interface","documentation":{"id":4632,"nodeType":"StructuredDocumentation","src":"969:100:21","text":"@title IERC1271Data\n @notice Deprecated interface for ERC1271 using bytes instead of bytes32"},"fullyImplemented":false,"linearizedBaseContracts":[4643],"name":"IERC1271Data","nameLocation":"1079:12:21","scope":4644,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/IERC223Receiver.sol":{"id":22,"ast":{"absolutePath":"src/modules/interfaces/IERC223Receiver.sol","id":4660,"exportedSymbols":{"IERC223Receiver":[4659]},"nodeType":"SourceUnit","src":"39:548:22","nodes":[{"id":4645,"nodeType":"PragmaDirective","src":"39:24:22","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":4659,"nodeType":"ContractDefinition","src":"145:441:22","nodes":[{"id":4658,"nodeType":"FunctionDefinition","src":"474:109:22","nodes":[],"documentation":{"id":4647,"nodeType":"StructuredDocumentation","src":"176:295:22","text":"@notice Called when ERC223 tokens are received by this contract\n @param from The address which previously owned the tokens\n @param value The amount of tokens being transferred\n @param data Transaction metadata\n @return signature The signature of the function to be called"},"functionSelector":"8943ec02","implemented":false,"kind":"function","modifiers":[],"name":"tokenReceived","nameLocation":"483:13:22","parameters":{"id":4654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4649,"mutability":"mutable","name":"from","nameLocation":"505:4:22","nodeType":"VariableDeclaration","scope":4658,"src":"497:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4648,"name":"address","nodeType":"ElementaryTypeName","src":"497:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4651,"mutability":"mutable","name":"value","nameLocation":"519:5:22","nodeType":"VariableDeclaration","scope":4658,"src":"511:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4650,"name":"uint256","nodeType":"ElementaryTypeName","src":"511:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4653,"mutability":"mutable","name":"data","nameLocation":"541:4:22","nodeType":"VariableDeclaration","scope":4658,"src":"526:19:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4652,"name":"bytes","nodeType":"ElementaryTypeName","src":"526:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"496:50:22"},"returnParameters":{"id":4657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4656,"mutability":"mutable","name":"signature","nameLocation":"572:9:22","nodeType":"VariableDeclaration","scope":4658,"src":"565:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4655,"name":"bytes4","nodeType":"ElementaryTypeName","src":"565:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"564:18:22"},"scope":4659,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC223Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":4646,"nodeType":"StructuredDocumentation","src":"65:80:22","text":"@title IERC223Receiver\n @notice Interface for the ERC223 receiver module"},"fullyImplemented":false,"linearizedBaseContracts":[4659],"name":"IERC223Receiver","nameLocation":"155:15:22","scope":4660,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/IERC721Receiver.sol":{"id":23,"ast":{"absolutePath":"src/modules/interfaces/IERC721Receiver.sol","id":4678,"exportedSymbols":{"IERC721Receiver":[4677]},"nodeType":"SourceUnit","src":"39:702:23","nodes":[{"id":4661,"nodeType":"PragmaDirective","src":"39:24:23","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":4677,"nodeType":"ContractDefinition","src":"145:595:23","nodes":[{"id":4676,"nodeType":"FunctionDefinition","src":"584:153:23","nodes":[],"documentation":{"id":4663,"nodeType":"StructuredDocumentation","src":"176:405:23","text":"@notice Called when a single ERC721 token is transferred to this contract\n @param operator The address which initiated the transfer\n @param from The address which previously owned the token\n @param tokenId The ID of the token being transferred\n @param data Additional data with no specified format\n @return magicValue On a success, the selector of the function that was called"},"functionSelector":"150b7a02","implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"593:16:23","parameters":{"id":4672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4665,"mutability":"mutable","name":"operator","nameLocation":"623:8:23","nodeType":"VariableDeclaration","scope":4676,"src":"615:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4664,"name":"address","nodeType":"ElementaryTypeName","src":"615:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4667,"mutability":"mutable","name":"from","nameLocation":"645:4:23","nodeType":"VariableDeclaration","scope":4676,"src":"637:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4666,"name":"address","nodeType":"ElementaryTypeName","src":"637:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4669,"mutability":"mutable","name":"tokenId","nameLocation":"663:7:23","nodeType":"VariableDeclaration","scope":4676,"src":"655:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4668,"name":"uint256","nodeType":"ElementaryTypeName","src":"655:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4671,"mutability":"mutable","name":"data","nameLocation":"691:4:23","nodeType":"VariableDeclaration","scope":4676,"src":"676:19:23","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4670,"name":"bytes","nodeType":"ElementaryTypeName","src":"676:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"609:90:23"},"returnParameters":{"id":4675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4674,"mutability":"mutable","name":"magicValue","nameLocation":"725:10:23","nodeType":"VariableDeclaration","scope":4676,"src":"718:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4673,"name":"bytes4","nodeType":"ElementaryTypeName","src":"718:6:23","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"717:19:23"},"scope":4677,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":4662,"nodeType":"StructuredDocumentation","src":"65:80:23","text":"@title IERC721Receiver\n @notice Interface for the ERC721 receiver module"},"fullyImplemented":false,"linearizedBaseContracts":[4677],"name":"IERC721Receiver","nameLocation":"155:15:23","scope":4678,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/IERC777Receiver.sol":{"id":24,"ast":{"absolutePath":"src/modules/interfaces/IERC777Receiver.sol","id":4698,"exportedSymbols":{"IERC777Receiver":[4697]},"nodeType":"SourceUnit","src":"39:745:24","nodes":[{"id":4679,"nodeType":"PragmaDirective","src":"39:24:24","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":4697,"nodeType":"ContractDefinition","src":"145:638:24","nodes":[{"id":4696,"nodeType":"FunctionDefinition","src":"609:171:24","nodes":[],"documentation":{"id":4681,"nodeType":"StructuredDocumentation","src":"176:430:24","text":"@notice Called when tokens are received by this contract\n @param operator The address which initiated the transfer\n @param from The address which previously owned the tokens\n @param to The address which is receiving the tokens\n @param amount The amount of tokens being transferred\n @param data Additional data with no specified format\n @param operatorData Additional data with no specified format"},"functionSelector":"0023de29","implemented":false,"kind":"function","modifiers":[],"name":"tokensReceived","nameLocation":"618:14:24","parameters":{"id":4694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4683,"mutability":"mutable","name":"operator","nameLocation":"646:8:24","nodeType":"VariableDeclaration","scope":4696,"src":"638:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4682,"name":"address","nodeType":"ElementaryTypeName","src":"638:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4685,"mutability":"mutable","name":"from","nameLocation":"668:4:24","nodeType":"VariableDeclaration","scope":4696,"src":"660:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4684,"name":"address","nodeType":"ElementaryTypeName","src":"660:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4687,"mutability":"mutable","name":"to","nameLocation":"686:2:24","nodeType":"VariableDeclaration","scope":4696,"src":"678:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4686,"name":"address","nodeType":"ElementaryTypeName","src":"678:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4689,"mutability":"mutable","name":"amount","nameLocation":"702:6:24","nodeType":"VariableDeclaration","scope":4696,"src":"694:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4688,"name":"uint256","nodeType":"ElementaryTypeName","src":"694:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4691,"mutability":"mutable","name":"data","nameLocation":"729:4:24","nodeType":"VariableDeclaration","scope":4696,"src":"714:19:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4690,"name":"bytes","nodeType":"ElementaryTypeName","src":"714:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4693,"mutability":"mutable","name":"operatorData","nameLocation":"754:12:24","nodeType":"VariableDeclaration","scope":4696,"src":"739:27:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4692,"name":"bytes","nodeType":"ElementaryTypeName","src":"739:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"632:138:24"},"returnParameters":{"id":4695,"nodeType":"ParameterList","parameters":[],"src":"779:0:24"},"scope":4697,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IERC777Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":4680,"nodeType":"StructuredDocumentation","src":"65:80:24","text":"@title IERC777Receiver\n @notice Interface for the ERC777 receiver module"},"fullyImplemented":false,"linearizedBaseContracts":[4697],"name":"IERC777Receiver","nameLocation":"155:15:24","scope":4698,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/IEntryPoint.sol":{"id":25,"ast":{"absolutePath":"src/modules/interfaces/IEntryPoint.sol","id":4706,"exportedSymbols":{"IEntryPoint":[4705]},"nodeType":"SourceUnit","src":"32:118:25","nodes":[{"id":4699,"nodeType":"PragmaDirective","src":"32:24:25","nodes":[],"literals":["solidity","^","0.8",".28"]},{"id":4705,"nodeType":"ContractDefinition","src":"58:91:25","nodes":[{"id":4704,"nodeType":"FunctionDefinition","src":"85:61:25","nodes":[],"functionSelector":"b760faf9","implemented":false,"kind":"function","modifiers":[],"name":"depositTo","nameLocation":"94:9:25","parameters":{"id":4702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4701,"mutability":"mutable","name":"account","nameLocation":"117:7:25","nodeType":"VariableDeclaration","scope":4704,"src":"109:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4700,"name":"address","nodeType":"ElementaryTypeName","src":"109:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"103:25:25"},"returnParameters":{"id":4703,"nodeType":"ParameterList","parameters":[],"src":"145:0:25"},"scope":4705,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IEntryPoint","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"linearizedBaseContracts":[4705],"name":"IEntryPoint","nameLocation":"68:11:25","scope":4706,"usedErrors":[],"usedEvents":[]}],"license":"MIT"}},"src/modules/interfaces/IPartialAuth.sol":{"id":26,"ast":{"absolutePath":"src/modules/interfaces/IPartialAuth.sol","id":4733,"exportedSymbols":{"IPartialAuth":[4732],"Payload":[1918]},"nodeType":"SourceUnit","src":"39:913:26","nodes":[{"id":4707,"nodeType":"PragmaDirective","src":"39:24:26","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":4709,"nodeType":"ImportDirective","src":"65:41:26","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"../Payload.sol","nameLocation":"-1:-1:-1","scope":4733,"sourceUnit":1919,"symbolAliases":[{"foreign":{"id":4708,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"74:7:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":4732,"nodeType":"ContractDefinition","src":"210:741:26","nodes":[{"id":4731,"nodeType":"FunctionDefinition","src":"655:293:26","nodes":[],"documentation":{"id":4711,"nodeType":"StructuredDocumentation","src":"238:414:26","text":"@notice Recover the partial signature\n @param _payload The payload\n @param _signature The signature to recover\n @return threshold The signature threshold\n @return weight The derived weight\n @return isValidImage Whether the image hash is valid\n @return imageHash The derived image hash\n @return checkpoint The checkpoint identifier\n @return opHash The hash of the payload"},"functionSelector":"ad55366b","implemented":false,"kind":"function","modifiers":[],"name":"recoverPartialSignature","nameLocation":"664:23:26","parameters":{"id":4717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4714,"mutability":"mutable","name":"_payload","nameLocation":"718:8:26","nodeType":"VariableDeclaration","scope":4731,"src":"693:33:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_calldata_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":4713,"nodeType":"UserDefinedTypeName","pathNode":{"id":4712,"name":"Payload.Decoded","nameLocations":["693:7:26","701:7:26"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"693:15:26"},"referencedDeclaration":1284,"src":"693:15:26","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":4716,"mutability":"mutable","name":"_signature","nameLocation":"747:10:26","nodeType":"VariableDeclaration","scope":4731,"src":"732:25:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4715,"name":"bytes","nodeType":"ElementaryTypeName","src":"732:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"687:74:26"},"returnParameters":{"id":4730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4719,"mutability":"mutable","name":"threshold","nameLocation":"812:9:26","nodeType":"VariableDeclaration","scope":4731,"src":"804:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4718,"name":"uint256","nodeType":"ElementaryTypeName","src":"804:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4721,"mutability":"mutable","name":"weight","nameLocation":"837:6:26","nodeType":"VariableDeclaration","scope":4731,"src":"829:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4720,"name":"uint256","nodeType":"ElementaryTypeName","src":"829:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4723,"mutability":"mutable","name":"isValidImage","nameLocation":"856:12:26","nodeType":"VariableDeclaration","scope":4731,"src":"851:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4722,"name":"bool","nodeType":"ElementaryTypeName","src":"851:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4725,"mutability":"mutable","name":"imageHash","nameLocation":"884:9:26","nodeType":"VariableDeclaration","scope":4731,"src":"876:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4724,"name":"bytes32","nodeType":"ElementaryTypeName","src":"876:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4727,"mutability":"mutable","name":"checkpoint","nameLocation":"909:10:26","nodeType":"VariableDeclaration","scope":4731,"src":"901:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4726,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4729,"mutability":"mutable","name":"opHash","nameLocation":"935:6:26","nodeType":"VariableDeclaration","scope":4731,"src":"927:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4728,"name":"bytes32","nodeType":"ElementaryTypeName","src":"927:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"796:151:26"},"scope":4732,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"IPartialAuth","contractDependencies":[],"contractKind":"interface","documentation":{"id":4710,"nodeType":"StructuredDocumentation","src":"108:102:26","text":"@title IPartialAuth\n @author Agustin Aguilar\n @notice Interface for the partial auth module"},"fullyImplemented":false,"linearizedBaseContracts":[4732],"name":"IPartialAuth","nameLocation":"220:12:26","scope":4733,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/modules/interfaces/ISapient.sol":{"id":27,"ast":{"absolutePath":"src/modules/interfaces/ISapient.sol","id":4762,"exportedSymbols":{"ISapient":[4749],"ISapientCompact":[4761],"Payload":[1918]},"nodeType":"SourceUnit","src":"39:1460:27","nodes":[{"id":4734,"nodeType":"PragmaDirective","src":"39:24:27","nodes":[],"literals":["solidity","^","0.8",".27"]},{"id":4736,"nodeType":"ImportDirective","src":"65:41:27","nodes":[],"absolutePath":"src/modules/Payload.sol","file":"../Payload.sol","nameLocation":"-1:-1:-1","scope":4762,"sourceUnit":1919,"symbolAliases":[{"foreign":{"id":4735,"name":"Payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1918,"src":"74:7:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":4749,"nodeType":"ContractDefinition","src":"384:413:27","nodes":[{"id":4748,"nodeType":"FunctionDefinition","src":"647:147:27","nodes":[],"documentation":{"id":4738,"nodeType":"StructuredDocumentation","src":"408:236:27","text":"@notice Recovers the image hash of a given signature\n @param payload The payload to recover the signature from\n @param signature The signature to recover the image hash from\n @return imageHash The recovered image hash"},"functionSelector":"13792a4a","implemented":false,"kind":"function","modifiers":[],"name":"recoverSapientSignature","nameLocation":"656:23:27","parameters":{"id":4744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4741,"mutability":"mutable","name":"payload","nameLocation":"710:7:27","nodeType":"VariableDeclaration","scope":4748,"src":"685:32:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_calldata_ptr","typeString":"struct Payload.Decoded"},"typeName":{"id":4740,"nodeType":"UserDefinedTypeName","pathNode":{"id":4739,"name":"Payload.Decoded","nameLocations":["685:7:27","693:7:27"],"nodeType":"IdentifierPath","referencedDeclaration":1284,"src":"685:15:27"},"referencedDeclaration":1284,"src":"685:15:27","typeDescriptions":{"typeIdentifier":"t_struct$_Decoded_$1284_storage_ptr","typeString":"struct Payload.Decoded"}},"visibility":"internal"},{"constant":false,"id":4743,"mutability":"mutable","name":"signature","nameLocation":"738:9:27","nodeType":"VariableDeclaration","scope":4748,"src":"723:24:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4742,"name":"bytes","nodeType":"ElementaryTypeName","src":"723:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"679:72:27"},"returnParameters":{"id":4747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4746,"mutability":"mutable","name":"imageHash","nameLocation":"783:9:27","nodeType":"VariableDeclaration","scope":4748,"src":"775:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4745,"name":"bytes32","nodeType":"ElementaryTypeName","src":"775:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"774:19:27"},"scope":4749,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ISapient","contractDependencies":[],"contractKind":"interface","documentation":{"id":4737,"nodeType":"StructuredDocumentation","src":"108:276:27","text":"@title ISapient\n @author Agustin Aguilar, Michael Standen\n @notice Sapient signers take an explicit payload and return their own \"imageHash\" as result\n @dev The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration"},"fullyImplemented":false,"linearizedBaseContracts":[4749],"name":"ISapient","nameLocation":"394:8:27","scope":4762,"usedErrors":[],"usedEvents":[]},{"id":4761,"nodeType":"ContractDefinition","src":"1082:416:27","nodes":[{"id":4760,"nodeType":"FunctionDefinition","src":"1359:136:27","nodes":[],"documentation":{"id":4751,"nodeType":"StructuredDocumentation","src":"1113:243:27","text":"@notice Recovers the image hash of a given signature, using a hashed payload\n @param digest The digest of the payload\n @param signature The signature to recover the image hash from\n @return imageHash The recovered image hash"},"functionSelector":"898bd921","implemented":false,"kind":"function","modifiers":[],"name":"recoverSapientSignatureCompact","nameLocation":"1368:30:27","parameters":{"id":4756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4753,"mutability":"mutable","name":"digest","nameLocation":"1412:6:27","nodeType":"VariableDeclaration","scope":4760,"src":"1404:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4752,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1404:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4755,"mutability":"mutable","name":"signature","nameLocation":"1439:9:27","nodeType":"VariableDeclaration","scope":4760,"src":"1424:24:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4754,"name":"bytes","nodeType":"ElementaryTypeName","src":"1424:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1398:54:27"},"returnParameters":{"id":4759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4758,"mutability":"mutable","name":"imageHash","nameLocation":"1484:9:27","nodeType":"VariableDeclaration","scope":4760,"src":"1476:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4757,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1476:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1475:19:27"},"scope":4761,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[],"canonicalName":"ISapientCompact","contractDependencies":[],"contractKind":"interface","documentation":{"id":4750,"nodeType":"StructuredDocumentation","src":"799:283:27","text":"@title ISapientCompact\n @author Agustin Aguilar, Michael Standen\n @notice Sapient signers take a compacted payload and return their own \"imageHash\" as result\n @dev The consumer of this signer must validate if the imageHash is valid or not, for the desired configuration"},"fullyImplemented":false,"linearizedBaseContracts":[4761],"name":"ISapientCompact","nameLocation":"1092:15:27","scope":4762,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/utils/LibBytes.sol":{"id":28,"ast":{"absolutePath":"src/utils/LibBytes.sol","id":4966,"exportedSymbols":{"LibBytes":[4965]},"nodeType":"SourceUnit","src":"39:3970:28","nodes":[{"id":4763,"nodeType":"PragmaDirective","src":"39:24:28","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":4965,"nodeType":"ContractDefinition","src":"432:3576:28","nodes":[{"id":4775,"nodeType":"FunctionDefinition","src":"454:225:28","nodes":[],"body":{"id":4774,"nodeType":"Block","src":"560:119:28","nodes":[],"statements":[{"AST":{"nativeSrc":"575:100:28","nodeType":"YulBlock","src":"575:100:28","statements":[{"nativeSrc":"583:38:28","nodeType":"YulVariableDeclaration","src":"583:38:28","value":{"arguments":[{"name":"_data.offset","nativeSrc":"608:12:28","nodeType":"YulIdentifier","src":"608:12:28"}],"functionName":{"name":"calldataload","nativeSrc":"595:12:28","nodeType":"YulIdentifier","src":"595:12:28"},"nativeSrc":"595:26:28","nodeType":"YulFunctionCall","src":"595:26:28"},"variables":[{"name":"word","nativeSrc":"587:4:28","nodeType":"YulTypedName","src":"587:4:28","type":""}]},{"nativeSrc":"628:19:28","nodeType":"YulAssignment","src":"628:19:28","value":{"arguments":[{"kind":"number","nativeSrc":"637:3:28","nodeType":"YulLiteral","src":"637:3:28","type":"","value":"248"},{"name":"word","nativeSrc":"642:4:28","nodeType":"YulIdentifier","src":"642:4:28"}],"functionName":{"name":"shr","nativeSrc":"633:3:28","nodeType":"YulIdentifier","src":"633:3:28"},"nativeSrc":"633:14:28","nodeType":"YulFunctionCall","src":"633:14:28"},"variableNames":[{"name":"a","nativeSrc":"628:1:28","nodeType":"YulIdentifier","src":"628:1:28"}]},{"nativeSrc":"654:15:28","nodeType":"YulAssignment","src":"654:15:28","value":{"kind":"number","nativeSrc":"668:1:28","nodeType":"YulLiteral","src":"668:1:28","type":"","value":"1"},"variableNames":[{"name":"newPointer","nativeSrc":"654:10:28","nodeType":"YulIdentifier","src":"654:10:28"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4766,"isOffset":true,"isSlot":false,"src":"608:12:28","suffix":"offset","valueSize":1},{"declaration":4769,"isOffset":false,"isSlot":false,"src":"628:1:28","valueSize":1},{"declaration":4771,"isOffset":false,"isSlot":false,"src":"654:10:28","valueSize":1}],"id":4773,"nodeType":"InlineAssembly","src":"566:109:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readFirstUint8","nameLocation":"463:14:28","parameters":{"id":4767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4766,"mutability":"mutable","name":"_data","nameLocation":"498:5:28","nodeType":"VariableDeclaration","scope":4775,"src":"483:20:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4765,"name":"bytes","nodeType":"ElementaryTypeName","src":"483:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"477:30:28"},"returnParameters":{"id":4772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4769,"mutability":"mutable","name":"a","nameLocation":"537:1:28","nodeType":"VariableDeclaration","scope":4775,"src":"531:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4768,"name":"uint8","nodeType":"ElementaryTypeName","src":"531:5:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4771,"mutability":"mutable","name":"newPointer","nameLocation":"548:10:28","nodeType":"VariableDeclaration","scope":4775,"src":"540:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4770,"name":"uint256","nodeType":"ElementaryTypeName","src":"540:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"530:29:28"},"scope":4965,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4788,"nodeType":"FunctionDefinition","src":"683:254:28","nodes":[],"body":{"id":4787,"nodeType":"Block","src":"792:145:28","nodes":[],"statements":[{"AST":{"nativeSrc":"807:126:28","nodeType":"YulBlock","src":"807:126:28","statements":[{"nativeSrc":"815:51:28","nodeType":"YulVariableDeclaration","src":"815:51:28","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"844:6:28","nodeType":"YulIdentifier","src":"844:6:28"},{"name":"_data.offset","nativeSrc":"852:12:28","nodeType":"YulIdentifier","src":"852:12:28"}],"functionName":{"name":"add","nativeSrc":"840:3:28","nodeType":"YulIdentifier","src":"840:3:28"},"nativeSrc":"840:25:28","nodeType":"YulFunctionCall","src":"840:25:28"}],"functionName":{"name":"calldataload","nativeSrc":"827:12:28","nodeType":"YulIdentifier","src":"827:12:28"},"nativeSrc":"827:39:28","nodeType":"YulFunctionCall","src":"827:39:28"},"variables":[{"name":"word","nativeSrc":"819:4:28","nodeType":"YulTypedName","src":"819:4:28","type":""}]},{"nativeSrc":"873:19:28","nodeType":"YulAssignment","src":"873:19:28","value":{"arguments":[{"kind":"number","nativeSrc":"882:3:28","nodeType":"YulLiteral","src":"882:3:28","type":"","value":"248"},{"name":"word","nativeSrc":"887:4:28","nodeType":"YulIdentifier","src":"887:4:28"}],"functionName":{"name":"shr","nativeSrc":"878:3:28","nodeType":"YulIdentifier","src":"878:3:28"},"nativeSrc":"878:14:28","nodeType":"YulFunctionCall","src":"878:14:28"},"variableNames":[{"name":"a","nativeSrc":"873:1:28","nodeType":"YulIdentifier","src":"873:1:28"}]},{"nativeSrc":"899:28:28","nodeType":"YulAssignment","src":"899:28:28","value":{"arguments":[{"name":"_index","nativeSrc":"917:6:28","nodeType":"YulIdentifier","src":"917:6:28"},{"kind":"number","nativeSrc":"925:1:28","nodeType":"YulLiteral","src":"925:1:28","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"913:3:28","nodeType":"YulIdentifier","src":"913:3:28"},"nativeSrc":"913:14:28","nodeType":"YulFunctionCall","src":"913:14:28"},"variableNames":[{"name":"newPointer","nativeSrc":"899:10:28","nodeType":"YulIdentifier","src":"899:10:28"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4777,"isOffset":true,"isSlot":false,"src":"852:12:28","suffix":"offset","valueSize":1},{"declaration":4779,"isOffset":false,"isSlot":false,"src":"844:6:28","valueSize":1},{"declaration":4779,"isOffset":false,"isSlot":false,"src":"917:6:28","valueSize":1},{"declaration":4782,"isOffset":false,"isSlot":false,"src":"873:1:28","valueSize":1},{"declaration":4784,"isOffset":false,"isSlot":false,"src":"899:10:28","valueSize":1}],"id":4786,"nodeType":"InlineAssembly","src":"798:135:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint8","nameLocation":"692:9:28","parameters":{"id":4780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4777,"mutability":"mutable","name":"_data","nameLocation":"717:5:28","nodeType":"VariableDeclaration","scope":4788,"src":"702:20:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4776,"name":"bytes","nodeType":"ElementaryTypeName","src":"702:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4779,"mutability":"mutable","name":"_index","nameLocation":"732:6:28","nodeType":"VariableDeclaration","scope":4788,"src":"724:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4778,"name":"uint256","nodeType":"ElementaryTypeName","src":"724:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"701:38:28"},"returnParameters":{"id":4785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4782,"mutability":"mutable","name":"a","nameLocation":"769:1:28","nodeType":"VariableDeclaration","scope":4788,"src":"763:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4781,"name":"uint8","nodeType":"ElementaryTypeName","src":"763:5:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4784,"mutability":"mutable","name":"newPointer","nameLocation":"780:10:28","nodeType":"VariableDeclaration","scope":4788,"src":"772:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4783,"name":"uint256","nodeType":"ElementaryTypeName","src":"772:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"762:29:28"},"scope":4965,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4801,"nodeType":"FunctionDefinition","src":"941:256:28","nodes":[],"body":{"id":4800,"nodeType":"Block","src":"1052:145:28","nodes":[],"statements":[{"AST":{"nativeSrc":"1067:126:28","nodeType":"YulBlock","src":"1067:126:28","statements":[{"nativeSrc":"1075:51:28","nodeType":"YulVariableDeclaration","src":"1075:51:28","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"1104:6:28","nodeType":"YulIdentifier","src":"1104:6:28"},{"name":"_data.offset","nativeSrc":"1112:12:28","nodeType":"YulIdentifier","src":"1112:12:28"}],"functionName":{"name":"add","nativeSrc":"1100:3:28","nodeType":"YulIdentifier","src":"1100:3:28"},"nativeSrc":"1100:25:28","nodeType":"YulFunctionCall","src":"1100:25:28"}],"functionName":{"name":"calldataload","nativeSrc":"1087:12:28","nodeType":"YulIdentifier","src":"1087:12:28"},"nativeSrc":"1087:39:28","nodeType":"YulFunctionCall","src":"1087:39:28"},"variables":[{"name":"word","nativeSrc":"1079:4:28","nodeType":"YulTypedName","src":"1079:4:28","type":""}]},{"nativeSrc":"1133:19:28","nodeType":"YulAssignment","src":"1133:19:28","value":{"arguments":[{"kind":"number","nativeSrc":"1142:3:28","nodeType":"YulLiteral","src":"1142:3:28","type":"","value":"240"},{"name":"word","nativeSrc":"1147:4:28","nodeType":"YulIdentifier","src":"1147:4:28"}],"functionName":{"name":"shr","nativeSrc":"1138:3:28","nodeType":"YulIdentifier","src":"1138:3:28"},"nativeSrc":"1138:14:28","nodeType":"YulFunctionCall","src":"1138:14:28"},"variableNames":[{"name":"a","nativeSrc":"1133:1:28","nodeType":"YulIdentifier","src":"1133:1:28"}]},{"nativeSrc":"1159:28:28","nodeType":"YulAssignment","src":"1159:28:28","value":{"arguments":[{"name":"_index","nativeSrc":"1177:6:28","nodeType":"YulIdentifier","src":"1177:6:28"},{"kind":"number","nativeSrc":"1185:1:28","nodeType":"YulLiteral","src":"1185:1:28","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"1173:3:28","nodeType":"YulIdentifier","src":"1173:3:28"},"nativeSrc":"1173:14:28","nodeType":"YulFunctionCall","src":"1173:14:28"},"variableNames":[{"name":"newPointer","nativeSrc":"1159:10:28","nodeType":"YulIdentifier","src":"1159:10:28"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4790,"isOffset":true,"isSlot":false,"src":"1112:12:28","suffix":"offset","valueSize":1},{"declaration":4792,"isOffset":false,"isSlot":false,"src":"1104:6:28","valueSize":1},{"declaration":4792,"isOffset":false,"isSlot":false,"src":"1177:6:28","valueSize":1},{"declaration":4795,"isOffset":false,"isSlot":false,"src":"1133:1:28","valueSize":1},{"declaration":4797,"isOffset":false,"isSlot":false,"src":"1159:10:28","valueSize":1}],"id":4799,"nodeType":"InlineAssembly","src":"1058:135:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint16","nameLocation":"950:10:28","parameters":{"id":4793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4790,"mutability":"mutable","name":"_data","nameLocation":"976:5:28","nodeType":"VariableDeclaration","scope":4801,"src":"961:20:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4789,"name":"bytes","nodeType":"ElementaryTypeName","src":"961:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4792,"mutability":"mutable","name":"_index","nameLocation":"991:6:28","nodeType":"VariableDeclaration","scope":4801,"src":"983:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4791,"name":"uint256","nodeType":"ElementaryTypeName","src":"983:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"960:38:28"},"returnParameters":{"id":4798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4795,"mutability":"mutable","name":"a","nameLocation":"1029:1:28","nodeType":"VariableDeclaration","scope":4801,"src":"1022:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":4794,"name":"uint16","nodeType":"ElementaryTypeName","src":"1022:6:28","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":4797,"mutability":"mutable","name":"newPointer","nameLocation":"1040:10:28","nodeType":"VariableDeclaration","scope":4801,"src":"1032:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4796,"name":"uint256","nodeType":"ElementaryTypeName","src":"1032:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1021:30:28"},"scope":4965,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4814,"nodeType":"FunctionDefinition","src":"1201:256:28","nodes":[],"body":{"id":4813,"nodeType":"Block","src":"1312:145:28","nodes":[],"statements":[{"AST":{"nativeSrc":"1327:126:28","nodeType":"YulBlock","src":"1327:126:28","statements":[{"nativeSrc":"1335:51:28","nodeType":"YulVariableDeclaration","src":"1335:51:28","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"1364:6:28","nodeType":"YulIdentifier","src":"1364:6:28"},{"name":"_data.offset","nativeSrc":"1372:12:28","nodeType":"YulIdentifier","src":"1372:12:28"}],"functionName":{"name":"add","nativeSrc":"1360:3:28","nodeType":"YulIdentifier","src":"1360:3:28"},"nativeSrc":"1360:25:28","nodeType":"YulFunctionCall","src":"1360:25:28"}],"functionName":{"name":"calldataload","nativeSrc":"1347:12:28","nodeType":"YulIdentifier","src":"1347:12:28"},"nativeSrc":"1347:39:28","nodeType":"YulFunctionCall","src":"1347:39:28"},"variables":[{"name":"word","nativeSrc":"1339:4:28","nodeType":"YulTypedName","src":"1339:4:28","type":""}]},{"nativeSrc":"1393:19:28","nodeType":"YulAssignment","src":"1393:19:28","value":{"arguments":[{"kind":"number","nativeSrc":"1402:3:28","nodeType":"YulLiteral","src":"1402:3:28","type":"","value":"232"},{"name":"word","nativeSrc":"1407:4:28","nodeType":"YulIdentifier","src":"1407:4:28"}],"functionName":{"name":"shr","nativeSrc":"1398:3:28","nodeType":"YulIdentifier","src":"1398:3:28"},"nativeSrc":"1398:14:28","nodeType":"YulFunctionCall","src":"1398:14:28"},"variableNames":[{"name":"a","nativeSrc":"1393:1:28","nodeType":"YulIdentifier","src":"1393:1:28"}]},{"nativeSrc":"1419:28:28","nodeType":"YulAssignment","src":"1419:28:28","value":{"arguments":[{"name":"_index","nativeSrc":"1437:6:28","nodeType":"YulIdentifier","src":"1437:6:28"},{"kind":"number","nativeSrc":"1445:1:28","nodeType":"YulLiteral","src":"1445:1:28","type":"","value":"3"}],"functionName":{"name":"add","nativeSrc":"1433:3:28","nodeType":"YulIdentifier","src":"1433:3:28"},"nativeSrc":"1433:14:28","nodeType":"YulFunctionCall","src":"1433:14:28"},"variableNames":[{"name":"newPointer","nativeSrc":"1419:10:28","nodeType":"YulIdentifier","src":"1419:10:28"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4803,"isOffset":true,"isSlot":false,"src":"1372:12:28","suffix":"offset","valueSize":1},{"declaration":4805,"isOffset":false,"isSlot":false,"src":"1364:6:28","valueSize":1},{"declaration":4805,"isOffset":false,"isSlot":false,"src":"1437:6:28","valueSize":1},{"declaration":4808,"isOffset":false,"isSlot":false,"src":"1393:1:28","valueSize":1},{"declaration":4810,"isOffset":false,"isSlot":false,"src":"1419:10:28","valueSize":1}],"id":4812,"nodeType":"InlineAssembly","src":"1318:135:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint24","nameLocation":"1210:10:28","parameters":{"id":4806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4803,"mutability":"mutable","name":"_data","nameLocation":"1236:5:28","nodeType":"VariableDeclaration","scope":4814,"src":"1221:20:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4802,"name":"bytes","nodeType":"ElementaryTypeName","src":"1221:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4805,"mutability":"mutable","name":"_index","nameLocation":"1251:6:28","nodeType":"VariableDeclaration","scope":4814,"src":"1243:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4804,"name":"uint256","nodeType":"ElementaryTypeName","src":"1243:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:38:28"},"returnParameters":{"id":4811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4808,"mutability":"mutable","name":"a","nameLocation":"1289:1:28","nodeType":"VariableDeclaration","scope":4814,"src":"1282:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":4807,"name":"uint24","nodeType":"ElementaryTypeName","src":"1282:6:28","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":4810,"mutability":"mutable","name":"newPointer","nameLocation":"1300:10:28","nodeType":"VariableDeclaration","scope":4814,"src":"1292:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4809,"name":"uint256","nodeType":"ElementaryTypeName","src":"1292:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1281:30:28"},"scope":4965,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4827,"nodeType":"FunctionDefinition","src":"1461:256:28","nodes":[],"body":{"id":4826,"nodeType":"Block","src":"1572:145:28","nodes":[],"statements":[{"AST":{"nativeSrc":"1587:126:28","nodeType":"YulBlock","src":"1587:126:28","statements":[{"nativeSrc":"1595:51:28","nodeType":"YulVariableDeclaration","src":"1595:51:28","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"1624:6:28","nodeType":"YulIdentifier","src":"1624:6:28"},{"name":"_data.offset","nativeSrc":"1632:12:28","nodeType":"YulIdentifier","src":"1632:12:28"}],"functionName":{"name":"add","nativeSrc":"1620:3:28","nodeType":"YulIdentifier","src":"1620:3:28"},"nativeSrc":"1620:25:28","nodeType":"YulFunctionCall","src":"1620:25:28"}],"functionName":{"name":"calldataload","nativeSrc":"1607:12:28","nodeType":"YulIdentifier","src":"1607:12:28"},"nativeSrc":"1607:39:28","nodeType":"YulFunctionCall","src":"1607:39:28"},"variables":[{"name":"word","nativeSrc":"1599:4:28","nodeType":"YulTypedName","src":"1599:4:28","type":""}]},{"nativeSrc":"1653:19:28","nodeType":"YulAssignment","src":"1653:19:28","value":{"arguments":[{"kind":"number","nativeSrc":"1662:3:28","nodeType":"YulLiteral","src":"1662:3:28","type":"","value":"192"},{"name":"word","nativeSrc":"1667:4:28","nodeType":"YulIdentifier","src":"1667:4:28"}],"functionName":{"name":"shr","nativeSrc":"1658:3:28","nodeType":"YulIdentifier","src":"1658:3:28"},"nativeSrc":"1658:14:28","nodeType":"YulFunctionCall","src":"1658:14:28"},"variableNames":[{"name":"a","nativeSrc":"1653:1:28","nodeType":"YulIdentifier","src":"1653:1:28"}]},{"nativeSrc":"1679:28:28","nodeType":"YulAssignment","src":"1679:28:28","value":{"arguments":[{"name":"_index","nativeSrc":"1697:6:28","nodeType":"YulIdentifier","src":"1697:6:28"},{"kind":"number","nativeSrc":"1705:1:28","nodeType":"YulLiteral","src":"1705:1:28","type":"","value":"8"}],"functionName":{"name":"add","nativeSrc":"1693:3:28","nodeType":"YulIdentifier","src":"1693:3:28"},"nativeSrc":"1693:14:28","nodeType":"YulFunctionCall","src":"1693:14:28"},"variableNames":[{"name":"newPointer","nativeSrc":"1679:10:28","nodeType":"YulIdentifier","src":"1679:10:28"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4816,"isOffset":true,"isSlot":false,"src":"1632:12:28","suffix":"offset","valueSize":1},{"declaration":4818,"isOffset":false,"isSlot":false,"src":"1624:6:28","valueSize":1},{"declaration":4818,"isOffset":false,"isSlot":false,"src":"1697:6:28","valueSize":1},{"declaration":4821,"isOffset":false,"isSlot":false,"src":"1653:1:28","valueSize":1},{"declaration":4823,"isOffset":false,"isSlot":false,"src":"1679:10:28","valueSize":1}],"id":4825,"nodeType":"InlineAssembly","src":"1578:135:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint64","nameLocation":"1470:10:28","parameters":{"id":4819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4816,"mutability":"mutable","name":"_data","nameLocation":"1496:5:28","nodeType":"VariableDeclaration","scope":4827,"src":"1481:20:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4815,"name":"bytes","nodeType":"ElementaryTypeName","src":"1481:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4818,"mutability":"mutable","name":"_index","nameLocation":"1511:6:28","nodeType":"VariableDeclaration","scope":4827,"src":"1503:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4817,"name":"uint256","nodeType":"ElementaryTypeName","src":"1503:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1480:38:28"},"returnParameters":{"id":4824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4821,"mutability":"mutable","name":"a","nameLocation":"1549:1:28","nodeType":"VariableDeclaration","scope":4827,"src":"1542:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4820,"name":"uint64","nodeType":"ElementaryTypeName","src":"1542:6:28","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4823,"mutability":"mutable","name":"newPointer","nameLocation":"1560:10:28","nodeType":"VariableDeclaration","scope":4827,"src":"1552:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4822,"name":"uint256","nodeType":"ElementaryTypeName","src":"1552:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1541:30:28"},"scope":4965,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4840,"nodeType":"FunctionDefinition","src":"1721:258:28","nodes":[],"body":{"id":4839,"nodeType":"Block","src":"1834:145:28","nodes":[],"statements":[{"AST":{"nativeSrc":"1849:126:28","nodeType":"YulBlock","src":"1849:126:28","statements":[{"nativeSrc":"1857:51:28","nodeType":"YulVariableDeclaration","src":"1857:51:28","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"1886:6:28","nodeType":"YulIdentifier","src":"1886:6:28"},{"name":"_data.offset","nativeSrc":"1894:12:28","nodeType":"YulIdentifier","src":"1894:12:28"}],"functionName":{"name":"add","nativeSrc":"1882:3:28","nodeType":"YulIdentifier","src":"1882:3:28"},"nativeSrc":"1882:25:28","nodeType":"YulFunctionCall","src":"1882:25:28"}],"functionName":{"name":"calldataload","nativeSrc":"1869:12:28","nodeType":"YulIdentifier","src":"1869:12:28"},"nativeSrc":"1869:39:28","nodeType":"YulFunctionCall","src":"1869:39:28"},"variables":[{"name":"word","nativeSrc":"1861:4:28","nodeType":"YulTypedName","src":"1861:4:28","type":""}]},{"nativeSrc":"1915:18:28","nodeType":"YulAssignment","src":"1915:18:28","value":{"arguments":[{"kind":"number","nativeSrc":"1924:2:28","nodeType":"YulLiteral","src":"1924:2:28","type":"","value":"96"},{"name":"word","nativeSrc":"1928:4:28","nodeType":"YulIdentifier","src":"1928:4:28"}],"functionName":{"name":"shr","nativeSrc":"1920:3:28","nodeType":"YulIdentifier","src":"1920:3:28"},"nativeSrc":"1920:13:28","nodeType":"YulFunctionCall","src":"1920:13:28"},"variableNames":[{"name":"a","nativeSrc":"1915:1:28","nodeType":"YulIdentifier","src":"1915:1:28"}]},{"nativeSrc":"1940:29:28","nodeType":"YulAssignment","src":"1940:29:28","value":{"arguments":[{"name":"_index","nativeSrc":"1958:6:28","nodeType":"YulIdentifier","src":"1958:6:28"},{"kind":"number","nativeSrc":"1966:2:28","nodeType":"YulLiteral","src":"1966:2:28","type":"","value":"20"}],"functionName":{"name":"add","nativeSrc":"1954:3:28","nodeType":"YulIdentifier","src":"1954:3:28"},"nativeSrc":"1954:15:28","nodeType":"YulFunctionCall","src":"1954:15:28"},"variableNames":[{"name":"newPointer","nativeSrc":"1940:10:28","nodeType":"YulIdentifier","src":"1940:10:28"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4829,"isOffset":true,"isSlot":false,"src":"1894:12:28","suffix":"offset","valueSize":1},{"declaration":4831,"isOffset":false,"isSlot":false,"src":"1886:6:28","valueSize":1},{"declaration":4831,"isOffset":false,"isSlot":false,"src":"1958:6:28","valueSize":1},{"declaration":4834,"isOffset":false,"isSlot":false,"src":"1915:1:28","valueSize":1},{"declaration":4836,"isOffset":false,"isSlot":false,"src":"1940:10:28","valueSize":1}],"id":4838,"nodeType":"InlineAssembly","src":"1840:135:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint160","nameLocation":"1730:11:28","parameters":{"id":4832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4829,"mutability":"mutable","name":"_data","nameLocation":"1757:5:28","nodeType":"VariableDeclaration","scope":4840,"src":"1742:20:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4828,"name":"bytes","nodeType":"ElementaryTypeName","src":"1742:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4831,"mutability":"mutable","name":"_index","nameLocation":"1772:6:28","nodeType":"VariableDeclaration","scope":4840,"src":"1764:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4830,"name":"uint256","nodeType":"ElementaryTypeName","src":"1764:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1741:38:28"},"returnParameters":{"id":4837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4834,"mutability":"mutable","name":"a","nameLocation":"1811:1:28","nodeType":"VariableDeclaration","scope":4840,"src":"1803:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":4833,"name":"uint160","nodeType":"ElementaryTypeName","src":"1803:7:28","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"},{"constant":false,"id":4836,"mutability":"mutable","name":"newPointer","nameLocation":"1822:10:28","nodeType":"VariableDeclaration","scope":4840,"src":"1814:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4835,"name":"uint256","nodeType":"ElementaryTypeName","src":"1814:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1802:31:28"},"scope":4965,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4853,"nodeType":"FunctionDefinition","src":"1983:226:28","nodes":[],"body":{"id":4852,"nodeType":"Block","src":"2096:113:28","nodes":[],"statements":[{"AST":{"nativeSrc":"2111:94:28","nodeType":"YulBlock","src":"2111:94:28","statements":[{"nativeSrc":"2119:44:28","nodeType":"YulAssignment","src":"2119:44:28","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"2141:6:28","nodeType":"YulIdentifier","src":"2141:6:28"},{"name":"_data.offset","nativeSrc":"2149:12:28","nodeType":"YulIdentifier","src":"2149:12:28"}],"functionName":{"name":"add","nativeSrc":"2137:3:28","nodeType":"YulIdentifier","src":"2137:3:28"},"nativeSrc":"2137:25:28","nodeType":"YulFunctionCall","src":"2137:25:28"}],"functionName":{"name":"calldataload","nativeSrc":"2124:12:28","nodeType":"YulIdentifier","src":"2124:12:28"},"nativeSrc":"2124:39:28","nodeType":"YulFunctionCall","src":"2124:39:28"},"variableNames":[{"name":"a","nativeSrc":"2119:1:28","nodeType":"YulIdentifier","src":"2119:1:28"}]},{"nativeSrc":"2170:29:28","nodeType":"YulAssignment","src":"2170:29:28","value":{"arguments":[{"name":"_index","nativeSrc":"2188:6:28","nodeType":"YulIdentifier","src":"2188:6:28"},{"kind":"number","nativeSrc":"2196:2:28","nodeType":"YulLiteral","src":"2196:2:28","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2184:3:28","nodeType":"YulIdentifier","src":"2184:3:28"},"nativeSrc":"2184:15:28","nodeType":"YulFunctionCall","src":"2184:15:28"},"variableNames":[{"name":"newPointer","nativeSrc":"2170:10:28","nodeType":"YulIdentifier","src":"2170:10:28"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4842,"isOffset":true,"isSlot":false,"src":"2149:12:28","suffix":"offset","valueSize":1},{"declaration":4844,"isOffset":false,"isSlot":false,"src":"2141:6:28","valueSize":1},{"declaration":4844,"isOffset":false,"isSlot":false,"src":"2188:6:28","valueSize":1},{"declaration":4847,"isOffset":false,"isSlot":false,"src":"2119:1:28","valueSize":1},{"declaration":4849,"isOffset":false,"isSlot":false,"src":"2170:10:28","valueSize":1}],"id":4851,"nodeType":"InlineAssembly","src":"2102:103:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUint256","nameLocation":"1992:11:28","parameters":{"id":4845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4842,"mutability":"mutable","name":"_data","nameLocation":"2019:5:28","nodeType":"VariableDeclaration","scope":4853,"src":"2004:20:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4841,"name":"bytes","nodeType":"ElementaryTypeName","src":"2004:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4844,"mutability":"mutable","name":"_index","nameLocation":"2034:6:28","nodeType":"VariableDeclaration","scope":4853,"src":"2026:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4843,"name":"uint256","nodeType":"ElementaryTypeName","src":"2026:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2003:38:28"},"returnParameters":{"id":4850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4847,"mutability":"mutable","name":"a","nameLocation":"2073:1:28","nodeType":"VariableDeclaration","scope":4853,"src":"2065:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4846,"name":"uint256","nodeType":"ElementaryTypeName","src":"2065:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4849,"mutability":"mutable","name":"newPointer","nameLocation":"2084:10:28","nodeType":"VariableDeclaration","scope":4853,"src":"2076:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4848,"name":"uint256","nodeType":"ElementaryTypeName","src":"2076:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2064:31:28"},"scope":4965,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4868,"nodeType":"FunctionDefinition","src":"2213:380:28","nodes":[],"body":{"id":4867,"nodeType":"Block","src":"2357:236:28","nodes":[],"statements":[{"AST":{"nativeSrc":"2372:217:28","nodeType":"YulBlock","src":"2372:217:28","statements":[{"nativeSrc":"2380:51:28","nodeType":"YulVariableDeclaration","src":"2380:51:28","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"2409:6:28","nodeType":"YulIdentifier","src":"2409:6:28"},{"name":"_data.offset","nativeSrc":"2417:12:28","nodeType":"YulIdentifier","src":"2417:12:28"}],"functionName":{"name":"add","nativeSrc":"2405:3:28","nodeType":"YulIdentifier","src":"2405:3:28"},"nativeSrc":"2405:25:28","nodeType":"YulFunctionCall","src":"2405:25:28"}],"functionName":{"name":"calldataload","nativeSrc":"2392:12:28","nodeType":"YulIdentifier","src":"2392:12:28"},"nativeSrc":"2392:39:28","nodeType":"YulFunctionCall","src":"2392:39:28"},"variables":[{"name":"word","nativeSrc":"2384:4:28","nodeType":"YulTypedName","src":"2384:4:28","type":""}]},{"nativeSrc":"2438:38:28","nodeType":"YulVariableDeclaration","src":"2438:38:28","value":{"arguments":[{"kind":"number","nativeSrc":"2455:3:28","nodeType":"YulLiteral","src":"2455:3:28","type":"","value":"256"},{"arguments":[{"name":"_length","nativeSrc":"2464:7:28","nodeType":"YulIdentifier","src":"2464:7:28"},{"kind":"number","nativeSrc":"2473:1:28","nodeType":"YulLiteral","src":"2473:1:28","type":"","value":"8"}],"functionName":{"name":"mul","nativeSrc":"2460:3:28","nodeType":"YulIdentifier","src":"2460:3:28"},"nativeSrc":"2460:15:28","nodeType":"YulFunctionCall","src":"2460:15:28"}],"functionName":{"name":"sub","nativeSrc":"2451:3:28","nodeType":"YulIdentifier","src":"2451:3:28"},"nativeSrc":"2451:25:28","nodeType":"YulFunctionCall","src":"2451:25:28"},"variables":[{"name":"shift","nativeSrc":"2442:5:28","nodeType":"YulTypedName","src":"2442:5:28","type":""}]},{"nativeSrc":"2483:59:28","nodeType":"YulAssignment","src":"2483:59:28","value":{"arguments":[{"arguments":[{"name":"shift","nativeSrc":"2496:5:28","nodeType":"YulIdentifier","src":"2496:5:28"},{"name":"word","nativeSrc":"2503:4:28","nodeType":"YulIdentifier","src":"2503:4:28"}],"functionName":{"name":"shr","nativeSrc":"2492:3:28","nodeType":"YulIdentifier","src":"2492:3:28"},"nativeSrc":"2492:16:28","nodeType":"YulFunctionCall","src":"2492:16:28"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2522:1:28","nodeType":"YulLiteral","src":"2522:1:28","type":"","value":"8"},{"name":"_length","nativeSrc":"2525:7:28","nodeType":"YulIdentifier","src":"2525:7:28"}],"functionName":{"name":"mul","nativeSrc":"2518:3:28","nodeType":"YulIdentifier","src":"2518:3:28"},"nativeSrc":"2518:15:28","nodeType":"YulFunctionCall","src":"2518:15:28"},{"kind":"number","nativeSrc":"2535:1:28","nodeType":"YulLiteral","src":"2535:1:28","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2514:3:28","nodeType":"YulIdentifier","src":"2514:3:28"},"nativeSrc":"2514:23:28","nodeType":"YulFunctionCall","src":"2514:23:28"},{"kind":"number","nativeSrc":"2539:1:28","nodeType":"YulLiteral","src":"2539:1:28","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2510:3:28","nodeType":"YulIdentifier","src":"2510:3:28"},"nativeSrc":"2510:31:28","nodeType":"YulFunctionCall","src":"2510:31:28"}],"functionName":{"name":"and","nativeSrc":"2488:3:28","nodeType":"YulIdentifier","src":"2488:3:28"},"nativeSrc":"2488:54:28","nodeType":"YulFunctionCall","src":"2488:54:28"},"variableNames":[{"name":"a","nativeSrc":"2483:1:28","nodeType":"YulIdentifier","src":"2483:1:28"}]},{"nativeSrc":"2549:34:28","nodeType":"YulAssignment","src":"2549:34:28","value":{"arguments":[{"name":"_index","nativeSrc":"2567:6:28","nodeType":"YulIdentifier","src":"2567:6:28"},{"name":"_length","nativeSrc":"2575:7:28","nodeType":"YulIdentifier","src":"2575:7:28"}],"functionName":{"name":"add","nativeSrc":"2563:3:28","nodeType":"YulIdentifier","src":"2563:3:28"},"nativeSrc":"2563:20:28","nodeType":"YulFunctionCall","src":"2563:20:28"},"variableNames":[{"name":"newPointer","nativeSrc":"2549:10:28","nodeType":"YulIdentifier","src":"2549:10:28"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4855,"isOffset":true,"isSlot":false,"src":"2417:12:28","suffix":"offset","valueSize":1},{"declaration":4857,"isOffset":false,"isSlot":false,"src":"2409:6:28","valueSize":1},{"declaration":4857,"isOffset":false,"isSlot":false,"src":"2567:6:28","valueSize":1},{"declaration":4859,"isOffset":false,"isSlot":false,"src":"2464:7:28","valueSize":1},{"declaration":4859,"isOffset":false,"isSlot":false,"src":"2525:7:28","valueSize":1},{"declaration":4859,"isOffset":false,"isSlot":false,"src":"2575:7:28","valueSize":1},{"declaration":4862,"isOffset":false,"isSlot":false,"src":"2483:1:28","valueSize":1},{"declaration":4864,"isOffset":false,"isSlot":false,"src":"2549:10:28","valueSize":1}],"id":4866,"nodeType":"InlineAssembly","src":"2363:226:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readUintX","nameLocation":"2222:9:28","parameters":{"id":4860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4855,"mutability":"mutable","name":"_data","nameLocation":"2252:5:28","nodeType":"VariableDeclaration","scope":4868,"src":"2237:20:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4854,"name":"bytes","nodeType":"ElementaryTypeName","src":"2237:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4857,"mutability":"mutable","name":"_index","nameLocation":"2271:6:28","nodeType":"VariableDeclaration","scope":4868,"src":"2263:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4856,"name":"uint256","nodeType":"ElementaryTypeName","src":"2263:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4859,"mutability":"mutable","name":"_length","nameLocation":"2291:7:28","nodeType":"VariableDeclaration","scope":4868,"src":"2283:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4858,"name":"uint256","nodeType":"ElementaryTypeName","src":"2283:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2231:71:28"},"returnParameters":{"id":4865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4862,"mutability":"mutable","name":"a","nameLocation":"2334:1:28","nodeType":"VariableDeclaration","scope":4868,"src":"2326:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4861,"name":"uint256","nodeType":"ElementaryTypeName","src":"2326:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4864,"mutability":"mutable","name":"newPointer","nameLocation":"2345:10:28","nodeType":"VariableDeclaration","scope":4868,"src":"2337:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4863,"name":"uint256","nodeType":"ElementaryTypeName","src":"2337:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:31:28"},"scope":4965,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4881,"nodeType":"FunctionDefinition","src":"2597:325:28","nodes":[],"body":{"id":4880,"nodeType":"Block","src":"2710:212:28","nodes":[],"statements":[{"AST":{"nativeSrc":"2725:193:28","nodeType":"YulBlock","src":"2725:193:28","statements":[{"nativeSrc":"2733:53:28","nodeType":"YulVariableDeclaration","src":"2733:53:28","value":{"arguments":[{"arguments":[{"name":"_pointer","nativeSrc":"2762:8:28","nodeType":"YulIdentifier","src":"2762:8:28"},{"name":"_data.offset","nativeSrc":"2772:12:28","nodeType":"YulIdentifier","src":"2772:12:28"}],"functionName":{"name":"add","nativeSrc":"2758:3:28","nodeType":"YulIdentifier","src":"2758:3:28"},"nativeSrc":"2758:27:28","nodeType":"YulFunctionCall","src":"2758:27:28"}],"functionName":{"name":"calldataload","nativeSrc":"2745:12:28","nodeType":"YulIdentifier","src":"2745:12:28"},"nativeSrc":"2745:41:28","nodeType":"YulFunctionCall","src":"2745:41:28"},"variables":[{"name":"word","nativeSrc":"2737:4:28","nodeType":"YulTypedName","src":"2737:4:28","type":""}]},{"nativeSrc":"2793:82:28","nodeType":"YulAssignment","src":"2793:82:28","value":{"arguments":[{"name":"word","nativeSrc":"2802:4:28","nodeType":"YulIdentifier","src":"2802:4:28"},{"kind":"number","nativeSrc":"2808:66:28","nodeType":"YulLiteral","src":"2808:66:28","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"2798:3:28","nodeType":"YulIdentifier","src":"2798:3:28"},"nativeSrc":"2798:77:28","nodeType":"YulFunctionCall","src":"2798:77:28"},"variableNames":[{"name":"a","nativeSrc":"2793:1:28","nodeType":"YulIdentifier","src":"2793:1:28"}]},{"nativeSrc":"2882:30:28","nodeType":"YulAssignment","src":"2882:30:28","value":{"arguments":[{"name":"_pointer","nativeSrc":"2900:8:28","nodeType":"YulIdentifier","src":"2900:8:28"},{"kind":"number","nativeSrc":"2910:1:28","nodeType":"YulLiteral","src":"2910:1:28","type":"","value":"4"}],"functionName":{"name":"add","nativeSrc":"2896:3:28","nodeType":"YulIdentifier","src":"2896:3:28"},"nativeSrc":"2896:16:28","nodeType":"YulFunctionCall","src":"2896:16:28"},"variableNames":[{"name":"newPointer","nativeSrc":"2882:10:28","nodeType":"YulIdentifier","src":"2882:10:28"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4870,"isOffset":true,"isSlot":false,"src":"2772:12:28","suffix":"offset","valueSize":1},{"declaration":4872,"isOffset":false,"isSlot":false,"src":"2762:8:28","valueSize":1},{"declaration":4872,"isOffset":false,"isSlot":false,"src":"2900:8:28","valueSize":1},{"declaration":4875,"isOffset":false,"isSlot":false,"src":"2793:1:28","valueSize":1},{"declaration":4877,"isOffset":false,"isSlot":false,"src":"2882:10:28","valueSize":1}],"id":4879,"nodeType":"InlineAssembly","src":"2716:202:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readBytes4","nameLocation":"2606:10:28","parameters":{"id":4873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4870,"mutability":"mutable","name":"_data","nameLocation":"2632:5:28","nodeType":"VariableDeclaration","scope":4881,"src":"2617:20:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4869,"name":"bytes","nodeType":"ElementaryTypeName","src":"2617:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4872,"mutability":"mutable","name":"_pointer","nameLocation":"2647:8:28","nodeType":"VariableDeclaration","scope":4881,"src":"2639:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4871,"name":"uint256","nodeType":"ElementaryTypeName","src":"2639:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2616:40:28"},"returnParameters":{"id":4878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4875,"mutability":"mutable","name":"a","nameLocation":"2687:1:28","nodeType":"VariableDeclaration","scope":4881,"src":"2680:8:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4874,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2680:6:28","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":4877,"mutability":"mutable","name":"newPointer","nameLocation":"2698:10:28","nodeType":"VariableDeclaration","scope":4881,"src":"2690:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4876,"name":"uint256","nodeType":"ElementaryTypeName","src":"2690:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2679:30:28"},"scope":4965,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4894,"nodeType":"FunctionDefinition","src":"2926:232:28","nodes":[],"body":{"id":4893,"nodeType":"Block","src":"3041:117:28","nodes":[],"statements":[{"AST":{"nativeSrc":"3056:98:28","nodeType":"YulBlock","src":"3056:98:28","statements":[{"nativeSrc":"3064:46:28","nodeType":"YulAssignment","src":"3064:46:28","value":{"arguments":[{"arguments":[{"name":"_pointer","nativeSrc":"3086:8:28","nodeType":"YulIdentifier","src":"3086:8:28"},{"name":"_data.offset","nativeSrc":"3096:12:28","nodeType":"YulIdentifier","src":"3096:12:28"}],"functionName":{"name":"add","nativeSrc":"3082:3:28","nodeType":"YulIdentifier","src":"3082:3:28"},"nativeSrc":"3082:27:28","nodeType":"YulFunctionCall","src":"3082:27:28"}],"functionName":{"name":"calldataload","nativeSrc":"3069:12:28","nodeType":"YulIdentifier","src":"3069:12:28"},"nativeSrc":"3069:41:28","nodeType":"YulFunctionCall","src":"3069:41:28"},"variableNames":[{"name":"a","nativeSrc":"3064:1:28","nodeType":"YulIdentifier","src":"3064:1:28"}]},{"nativeSrc":"3117:31:28","nodeType":"YulAssignment","src":"3117:31:28","value":{"arguments":[{"name":"_pointer","nativeSrc":"3135:8:28","nodeType":"YulIdentifier","src":"3135:8:28"},{"kind":"number","nativeSrc":"3145:2:28","nodeType":"YulLiteral","src":"3145:2:28","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3131:3:28","nodeType":"YulIdentifier","src":"3131:3:28"},"nativeSrc":"3131:17:28","nodeType":"YulFunctionCall","src":"3131:17:28"},"variableNames":[{"name":"newPointer","nativeSrc":"3117:10:28","nodeType":"YulIdentifier","src":"3117:10:28"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4883,"isOffset":true,"isSlot":false,"src":"3096:12:28","suffix":"offset","valueSize":1},{"declaration":4885,"isOffset":false,"isSlot":false,"src":"3086:8:28","valueSize":1},{"declaration":4885,"isOffset":false,"isSlot":false,"src":"3135:8:28","valueSize":1},{"declaration":4888,"isOffset":false,"isSlot":false,"src":"3064:1:28","valueSize":1},{"declaration":4890,"isOffset":false,"isSlot":false,"src":"3117:10:28","valueSize":1}],"id":4892,"nodeType":"InlineAssembly","src":"3047:107:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readBytes32","nameLocation":"2935:11:28","parameters":{"id":4886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4883,"mutability":"mutable","name":"_data","nameLocation":"2962:5:28","nodeType":"VariableDeclaration","scope":4894,"src":"2947:20:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4882,"name":"bytes","nodeType":"ElementaryTypeName","src":"2947:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4885,"mutability":"mutable","name":"_pointer","nameLocation":"2977:8:28","nodeType":"VariableDeclaration","scope":4894,"src":"2969:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4884,"name":"uint256","nodeType":"ElementaryTypeName","src":"2969:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2946:40:28"},"returnParameters":{"id":4891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4888,"mutability":"mutable","name":"a","nameLocation":"3018:1:28","nodeType":"VariableDeclaration","scope":4894,"src":"3010:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4887,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3010:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4890,"mutability":"mutable","name":"newPointer","nameLocation":"3029:10:28","nodeType":"VariableDeclaration","scope":4894,"src":"3021:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4889,"name":"uint256","nodeType":"ElementaryTypeName","src":"3021:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3009:31:28"},"scope":4965,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4907,"nodeType":"FunctionDefinition","src":"3162:307:28","nodes":[],"body":{"id":4906,"nodeType":"Block","src":"3275:194:28","nodes":[],"statements":[{"AST":{"nativeSrc":"3290:175:28","nodeType":"YulBlock","src":"3290:175:28","statements":[{"nativeSrc":"3298:51:28","nodeType":"YulVariableDeclaration","src":"3298:51:28","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"3327:6:28","nodeType":"YulIdentifier","src":"3327:6:28"},{"name":"_data.offset","nativeSrc":"3335:12:28","nodeType":"YulIdentifier","src":"3335:12:28"}],"functionName":{"name":"add","nativeSrc":"3323:3:28","nodeType":"YulIdentifier","src":"3323:3:28"},"nativeSrc":"3323:25:28","nodeType":"YulFunctionCall","src":"3323:25:28"}],"functionName":{"name":"calldataload","nativeSrc":"3310:12:28","nodeType":"YulIdentifier","src":"3310:12:28"},"nativeSrc":"3310:39:28","nodeType":"YulFunctionCall","src":"3310:39:28"},"variables":[{"name":"word","nativeSrc":"3302:4:28","nodeType":"YulTypedName","src":"3302:4:28","type":""}]},{"nativeSrc":"3356:67:28","nodeType":"YulAssignment","src":"3356:67:28","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3369:2:28","nodeType":"YulLiteral","src":"3369:2:28","type":"","value":"96"},{"name":"word","nativeSrc":"3373:4:28","nodeType":"YulIdentifier","src":"3373:4:28"}],"functionName":{"name":"shr","nativeSrc":"3365:3:28","nodeType":"YulIdentifier","src":"3365:3:28"},"nativeSrc":"3365:13:28","nodeType":"YulFunctionCall","src":"3365:13:28"},{"kind":"number","nativeSrc":"3380:42:28","nodeType":"YulLiteral","src":"3380:42:28","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"3361:3:28","nodeType":"YulIdentifier","src":"3361:3:28"},"nativeSrc":"3361:62:28","nodeType":"YulFunctionCall","src":"3361:62:28"},"variableNames":[{"name":"a","nativeSrc":"3356:1:28","nodeType":"YulIdentifier","src":"3356:1:28"}]},{"nativeSrc":"3430:29:28","nodeType":"YulAssignment","src":"3430:29:28","value":{"arguments":[{"name":"_index","nativeSrc":"3448:6:28","nodeType":"YulIdentifier","src":"3448:6:28"},{"kind":"number","nativeSrc":"3456:2:28","nodeType":"YulLiteral","src":"3456:2:28","type":"","value":"20"}],"functionName":{"name":"add","nativeSrc":"3444:3:28","nodeType":"YulIdentifier","src":"3444:3:28"},"nativeSrc":"3444:15:28","nodeType":"YulFunctionCall","src":"3444:15:28"},"variableNames":[{"name":"newPointer","nativeSrc":"3430:10:28","nodeType":"YulIdentifier","src":"3430:10:28"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4896,"isOffset":true,"isSlot":false,"src":"3335:12:28","suffix":"offset","valueSize":1},{"declaration":4898,"isOffset":false,"isSlot":false,"src":"3327:6:28","valueSize":1},{"declaration":4898,"isOffset":false,"isSlot":false,"src":"3448:6:28","valueSize":1},{"declaration":4901,"isOffset":false,"isSlot":false,"src":"3356:1:28","valueSize":1},{"declaration":4903,"isOffset":false,"isSlot":false,"src":"3430:10:28","valueSize":1}],"id":4905,"nodeType":"InlineAssembly","src":"3281:184:28"}]},"implemented":true,"kind":"function","modifiers":[],"name":"readAddress","nameLocation":"3171:11:28","parameters":{"id":4899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4896,"mutability":"mutable","name":"_data","nameLocation":"3198:5:28","nodeType":"VariableDeclaration","scope":4907,"src":"3183:20:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4895,"name":"bytes","nodeType":"ElementaryTypeName","src":"3183:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4898,"mutability":"mutable","name":"_index","nameLocation":"3213:6:28","nodeType":"VariableDeclaration","scope":4907,"src":"3205:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4897,"name":"uint256","nodeType":"ElementaryTypeName","src":"3205:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3182:38:28"},"returnParameters":{"id":4904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4901,"mutability":"mutable","name":"a","nameLocation":"3252:1:28","nodeType":"VariableDeclaration","scope":4907,"src":"3244:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4900,"name":"address","nodeType":"ElementaryTypeName","src":"3244:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4903,"mutability":"mutable","name":"newPointer","nameLocation":"3263:10:28","nodeType":"VariableDeclaration","scope":4907,"src":"3255:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4902,"name":"uint256","nodeType":"ElementaryTypeName","src":"3255:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3243:31:28"},"scope":4965,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4964,"nodeType":"FunctionDefinition","src":"3511:494:28","nodes":[],"body":{"id":4963,"nodeType":"Block","src":"3659:346:28","nodes":[],"statements":[{"assignments":[4924],"declarations":[{"constant":false,"id":4924,"mutability":"mutable","name":"yParityAndS","nameLocation":"3673:11:28","nodeType":"VariableDeclaration","scope":4963,"src":"3665:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4923,"name":"uint256","nodeType":"ElementaryTypeName","src":"3665:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4925,"nodeType":"VariableDeclarationStatement","src":"3665:19:28"},{"AST":{"nativeSrc":"3699:164:28","nodeType":"YulBlock","src":"3699:164:28","statements":[{"nativeSrc":"3707:44:28","nodeType":"YulAssignment","src":"3707:44:28","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"3729:6:28","nodeType":"YulIdentifier","src":"3729:6:28"},{"name":"_data.offset","nativeSrc":"3737:12:28","nodeType":"YulIdentifier","src":"3737:12:28"}],"functionName":{"name":"add","nativeSrc":"3725:3:28","nodeType":"YulIdentifier","src":"3725:3:28"},"nativeSrc":"3725:25:28","nodeType":"YulFunctionCall","src":"3725:25:28"}],"functionName":{"name":"calldataload","nativeSrc":"3712:12:28","nodeType":"YulIdentifier","src":"3712:12:28"},"nativeSrc":"3712:39:28","nodeType":"YulFunctionCall","src":"3712:39:28"},"variableNames":[{"name":"r","nativeSrc":"3707:1:28","nodeType":"YulIdentifier","src":"3707:1:28"}]},{"nativeSrc":"3758:63:28","nodeType":"YulAssignment","src":"3758:63:28","value":{"arguments":[{"arguments":[{"name":"_index","nativeSrc":"3790:6:28","nodeType":"YulIdentifier","src":"3790:6:28"},{"arguments":[{"name":"_data.offset","nativeSrc":"3802:12:28","nodeType":"YulIdentifier","src":"3802:12:28"},{"kind":"number","nativeSrc":"3816:2:28","nodeType":"YulLiteral","src":"3816:2:28","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3798:3:28","nodeType":"YulIdentifier","src":"3798:3:28"},"nativeSrc":"3798:21:28","nodeType":"YulFunctionCall","src":"3798:21:28"}],"functionName":{"name":"add","nativeSrc":"3786:3:28","nodeType":"YulIdentifier","src":"3786:3:28"},"nativeSrc":"3786:34:28","nodeType":"YulFunctionCall","src":"3786:34:28"}],"functionName":{"name":"calldataload","nativeSrc":"3773:12:28","nodeType":"YulIdentifier","src":"3773:12:28"},"nativeSrc":"3773:48:28","nodeType":"YulFunctionCall","src":"3773:48:28"},"variableNames":[{"name":"yParityAndS","nativeSrc":"3758:11:28","nodeType":"YulIdentifier","src":"3758:11:28"}]},{"nativeSrc":"3828:29:28","nodeType":"YulAssignment","src":"3828:29:28","value":{"arguments":[{"name":"_index","nativeSrc":"3846:6:28","nodeType":"YulIdentifier","src":"3846:6:28"},{"kind":"number","nativeSrc":"3854:2:28","nodeType":"YulLiteral","src":"3854:2:28","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3842:3:28","nodeType":"YulIdentifier","src":"3842:3:28"},"nativeSrc":"3842:15:28","nodeType":"YulFunctionCall","src":"3842:15:28"},"variableNames":[{"name":"newPointer","nativeSrc":"3828:10:28","nodeType":"YulIdentifier","src":"3828:10:28"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4910,"isOffset":true,"isSlot":false,"src":"3737:12:28","suffix":"offset","valueSize":1},{"declaration":4910,"isOffset":true,"isSlot":false,"src":"3802:12:28","suffix":"offset","valueSize":1},{"declaration":4912,"isOffset":false,"isSlot":false,"src":"3729:6:28","valueSize":1},{"declaration":4912,"isOffset":false,"isSlot":false,"src":"3790:6:28","valueSize":1},{"declaration":4912,"isOffset":false,"isSlot":false,"src":"3846:6:28","valueSize":1},{"declaration":4921,"isOffset":false,"isSlot":false,"src":"3828:10:28","valueSize":1},{"declaration":4915,"isOffset":false,"isSlot":false,"src":"3707:1:28","valueSize":1},{"declaration":4924,"isOffset":false,"isSlot":false,"src":"3758:11:28","valueSize":1}],"id":4926,"nodeType":"InlineAssembly","src":"3690:173:28"},{"assignments":[4928],"declarations":[{"constant":false,"id":4928,"mutability":"mutable","name":"yParity","nameLocation":"3876:7:28","nodeType":"VariableDeclaration","scope":4963,"src":"3868:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4927,"name":"uint256","nodeType":"ElementaryTypeName","src":"3868:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4935,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4931,"name":"yParityAndS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4924,"src":"3894:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":4932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3909:3:28","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"3894:18:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3886:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4929,"name":"uint256","nodeType":"ElementaryTypeName","src":"3886:7:28","typeDescriptions":{}}},"id":4934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3886:27:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3868:45:28"},{"expression":{"id":4952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4936,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"3919:1:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4941,"name":"yParityAndS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4924,"src":"3939:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3931:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4939,"name":"uint256","nodeType":"ElementaryTypeName","src":"3931:7:28","typeDescriptions":{}}},"id":4942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3931:20:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"id":4948,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"id":4945,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3956:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"323535","id":4944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3961:3:28","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"3956:8:28","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}}],"id":4946,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3955:10:28","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3968:1:28","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3955:14:28","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}}],"id":4949,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3954:16:28","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}},"src":"3931:39:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3923:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4937,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3923:7:28","typeDescriptions":{}}},"id":4951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3923:48:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3919:52:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4953,"nodeType":"ExpressionStatement","src":"3919:52:28"},{"expression":{"id":4961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4954,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4919,"src":"3977:1:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4957,"name":"yParity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4928,"src":"3987:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3981:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4955,"name":"uint8","nodeType":"ElementaryTypeName","src":"3981:5:28","typeDescriptions":{}}},"id":4958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3981:14:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":4959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3998:2:28","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"3981:19:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3977:23:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":4962,"nodeType":"ExpressionStatement","src":"3977:23:28"}]},"documentation":{"id":4908,"nodeType":"StructuredDocumentation","src":"3473:35:28","text":"@dev ERC-2098 Compact Signature"},"implemented":true,"kind":"function","modifiers":[],"name":"readRSVCompact","nameLocation":"3520:14:28","parameters":{"id":4913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4910,"mutability":"mutable","name":"_data","nameLocation":"3555:5:28","nodeType":"VariableDeclaration","scope":4964,"src":"3540:20:28","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4909,"name":"bytes","nodeType":"ElementaryTypeName","src":"3540:5:28","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4912,"mutability":"mutable","name":"_index","nameLocation":"3574:6:28","nodeType":"VariableDeclaration","scope":4964,"src":"3566:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4911,"name":"uint256","nodeType":"ElementaryTypeName","src":"3566:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3534:50:28"},"returnParameters":{"id":4922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4915,"mutability":"mutable","name":"r","nameLocation":"3616:1:28","nodeType":"VariableDeclaration","scope":4964,"src":"3608:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4914,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3608:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4917,"mutability":"mutable","name":"s","nameLocation":"3627:1:28","nodeType":"VariableDeclaration","scope":4964,"src":"3619:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4916,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3619:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4919,"mutability":"mutable","name":"v","nameLocation":"3636:1:28","nodeType":"VariableDeclaration","scope":4964,"src":"3630:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4918,"name":"uint8","nodeType":"ElementaryTypeName","src":"3630:5:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4921,"mutability":"mutable","name":"newPointer","nameLocation":"3647:10:28","nodeType":"VariableDeclaration","scope":4964,"src":"3639:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4920,"name":"uint256","nodeType":"ElementaryTypeName","src":"3639:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3607:51:28"},"scope":4965,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"LibBytes","contractDependencies":[],"contractKind":"library","documentation":{"id":4764,"nodeType":"StructuredDocumentation","src":"65:367:28","text":"@title Library for reading data from bytes arrays\n @author Agustin Aguilar (aa@horizon.io), Michael Standen (mstan@horizon.io)\n @notice This library contains functions for reading data from bytes arrays.\n @dev These functions do not check if the input index is within the bounds of the data array.\n @dev Reading out of bounds may return dirty values."},"fullyImplemented":true,"linearizedBaseContracts":[4965],"name":"LibBytes","nameLocation":"440:8:28","scope":4966,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}},"src/utils/LibOptim.sol":{"id":29,"ast":{"absolutePath":"src/utils/LibOptim.sol","id":5020,"exportedSymbols":{"LibOptim":[5019]},"nodeType":"SourceUnit","src":"39:2154:29","nodes":[{"id":4967,"nodeType":"PragmaDirective","src":"39:24:29","nodes":[],"literals":["solidity","^","0.8",".18"]},{"id":5019,"nodeType":"ContractDefinition","src":"162:2030:29","nodes":[{"id":4980,"nodeType":"FunctionDefinition","src":"461:173:29","nodes":[],"body":{"id":4979,"nodeType":"Block","src":"539:95:29","nodes":[],"statements":[{"AST":{"nativeSrc":"554:76:29","nodeType":"YulBlock","src":"554:76:29","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"569:1:29","nodeType":"YulLiteral","src":"569:1:29","type":"","value":"0"},{"name":"_a","nativeSrc":"572:2:29","nodeType":"YulIdentifier","src":"572:2:29"}],"functionName":{"name":"mstore","nativeSrc":"562:6:29","nodeType":"YulIdentifier","src":"562:6:29"},"nativeSrc":"562:13:29","nodeType":"YulFunctionCall","src":"562:13:29"},"nativeSrc":"562:13:29","nodeType":"YulExpressionStatement","src":"562:13:29"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"589:2:29","nodeType":"YulLiteral","src":"589:2:29","type":"","value":"32"},{"name":"_b","nativeSrc":"593:2:29","nodeType":"YulIdentifier","src":"593:2:29"}],"functionName":{"name":"mstore","nativeSrc":"582:6:29","nodeType":"YulIdentifier","src":"582:6:29"},"nativeSrc":"582:14:29","nodeType":"YulFunctionCall","src":"582:14:29"},"nativeSrc":"582:14:29","nodeType":"YulExpressionStatement","src":"582:14:29"},{"nativeSrc":"603:21:29","nodeType":"YulAssignment","src":"603:21:29","value":{"arguments":[{"kind":"number","nativeSrc":"618:1:29","nodeType":"YulLiteral","src":"618:1:29","type":"","value":"0"},{"kind":"number","nativeSrc":"621:2:29","nodeType":"YulLiteral","src":"621:2:29","type":"","value":"64"}],"functionName":{"name":"keccak256","nativeSrc":"608:9:29","nodeType":"YulIdentifier","src":"608:9:29"},"nativeSrc":"608:16:29","nodeType":"YulFunctionCall","src":"608:16:29"},"variableNames":[{"name":"c","nativeSrc":"603:1:29","nodeType":"YulIdentifier","src":"603:1:29"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4971,"isOffset":false,"isSlot":false,"src":"572:2:29","valueSize":1},{"declaration":4973,"isOffset":false,"isSlot":false,"src":"593:2:29","valueSize":1},{"declaration":4976,"isOffset":false,"isSlot":false,"src":"603:1:29","valueSize":1}],"id":4978,"nodeType":"InlineAssembly","src":"545:85:29"}]},"documentation":{"id":4969,"nodeType":"StructuredDocumentation","src":"184:274:29","text":" @notice Computes the keccak256 hash of two 32-byte inputs.\n @dev It uses only scratch memory space.\n @param _a The first 32 bytes of the hash.\n @param _b The second 32 bytes of the hash.\n @return c The keccak256 hash of the two 32-byte inputs."},"implemented":true,"kind":"function","modifiers":[],"name":"fkeccak256","nameLocation":"470:10:29","parameters":{"id":4974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4971,"mutability":"mutable","name":"_a","nameLocation":"489:2:29","nodeType":"VariableDeclaration","scope":4980,"src":"481:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4970,"name":"bytes32","nodeType":"ElementaryTypeName","src":"481:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4973,"mutability":"mutable","name":"_b","nameLocation":"501:2:29","nodeType":"VariableDeclaration","scope":4980,"src":"493:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4972,"name":"bytes32","nodeType":"ElementaryTypeName","src":"493:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"480:24:29"},"returnParameters":{"id":4977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4976,"mutability":"mutable","name":"c","nameLocation":"536:1:29","nodeType":"VariableDeclaration","scope":4980,"src":"528:9:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4975,"name":"bytes32","nodeType":"ElementaryTypeName","src":"528:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"527:11:29"},"scope":5019,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":4988,"nodeType":"FunctionDefinition","src":"758:271:29","nodes":[],"body":{"id":4987,"nodeType":"Block","src":"819:210:29","nodes":[],"statements":[{"AST":{"nativeSrc":"834:191:29","nodeType":"YulBlock","src":"834:191:29","statements":[{"nativeSrc":"842:28:29","nodeType":"YulVariableDeclaration","src":"842:28:29","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"854:14:29","nodeType":"YulIdentifier","src":"854:14:29"},"nativeSrc":"854:16:29","nodeType":"YulFunctionCall","src":"854:16:29"},"variables":[{"name":"size","nativeSrc":"846:4:29","nodeType":"YulTypedName","src":"846:4:29","type":""}]},{"nativeSrc":"877:16:29","nodeType":"YulAssignment","src":"877:16:29","value":{"arguments":[{"kind":"number","nativeSrc":"888:4:29","nodeType":"YulLiteral","src":"888:4:29","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"882:5:29","nodeType":"YulIdentifier","src":"882:5:29"},"nativeSrc":"882:11:29","nodeType":"YulFunctionCall","src":"882:11:29"},"variableNames":[{"name":"r","nativeSrc":"877:1:29","nodeType":"YulIdentifier","src":"877:1:29"}]},{"nativeSrc":"900:23:29","nodeType":"YulVariableDeclaration","src":"900:23:29","value":{"arguments":[{"name":"r","nativeSrc":"917:1:29","nodeType":"YulIdentifier","src":"917:1:29"},{"kind":"number","nativeSrc":"920:2:29","nodeType":"YulLiteral","src":"920:2:29","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"913:3:29","nodeType":"YulIdentifier","src":"913:3:29"},"nativeSrc":"913:10:29","nodeType":"YulFunctionCall","src":"913:10:29"},"variables":[{"name":"start","nativeSrc":"904:5:29","nodeType":"YulTypedName","src":"904:5:29","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"937:4:29","nodeType":"YulLiteral","src":"937:4:29","type":"","value":"0x40"},{"arguments":[{"name":"start","nativeSrc":"947:5:29","nodeType":"YulIdentifier","src":"947:5:29"},{"name":"size","nativeSrc":"954:4:29","nodeType":"YulIdentifier","src":"954:4:29"}],"functionName":{"name":"add","nativeSrc":"943:3:29","nodeType":"YulIdentifier","src":"943:3:29"},"nativeSrc":"943:16:29","nodeType":"YulFunctionCall","src":"943:16:29"}],"functionName":{"name":"mstore","nativeSrc":"930:6:29","nodeType":"YulIdentifier","src":"930:6:29"},"nativeSrc":"930:30:29","nodeType":"YulFunctionCall","src":"930:30:29"},"nativeSrc":"930:30:29","nodeType":"YulExpressionStatement","src":"930:30:29"},{"expression":{"arguments":[{"name":"r","nativeSrc":"974:1:29","nodeType":"YulIdentifier","src":"974:1:29"},{"name":"size","nativeSrc":"977:4:29","nodeType":"YulIdentifier","src":"977:4:29"}],"functionName":{"name":"mstore","nativeSrc":"967:6:29","nodeType":"YulIdentifier","src":"967:6:29"},"nativeSrc":"967:15:29","nodeType":"YulFunctionCall","src":"967:15:29"},"nativeSrc":"967:15:29","nodeType":"YulExpressionStatement","src":"967:15:29"},{"expression":{"arguments":[{"name":"start","nativeSrc":"1004:5:29","nodeType":"YulIdentifier","src":"1004:5:29"},{"kind":"number","nativeSrc":"1011:1:29","nodeType":"YulLiteral","src":"1011:1:29","type":"","value":"0"},{"name":"size","nativeSrc":"1014:4:29","nodeType":"YulIdentifier","src":"1014:4:29"}],"functionName":{"name":"returndatacopy","nativeSrc":"989:14:29","nodeType":"YulIdentifier","src":"989:14:29"},"nativeSrc":"989:30:29","nodeType":"YulFunctionCall","src":"989:30:29"},"nativeSrc":"989:30:29","nodeType":"YulExpressionStatement","src":"989:30:29"}]},"evmVersion":"paris","externalReferences":[{"declaration":4984,"isOffset":false,"isSlot":false,"src":"877:1:29","valueSize":1},{"declaration":4984,"isOffset":false,"isSlot":false,"src":"917:1:29","valueSize":1},{"declaration":4984,"isOffset":false,"isSlot":false,"src":"974:1:29","valueSize":1}],"id":4986,"nodeType":"InlineAssembly","src":"825:200:29"}]},"documentation":{"id":4981,"nodeType":"StructuredDocumentation","src":"638:117:29","text":" @notice Returns the return data from the last call.\n @return r The return data from the last call."},"implemented":true,"kind":"function","modifiers":[],"name":"returnData","nameLocation":"767:10:29","parameters":{"id":4982,"nodeType":"ParameterList","parameters":[],"src":"777:2:29"},"returnParameters":{"id":4985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4984,"mutability":"mutable","name":"r","nameLocation":"816:1:29","nodeType":"VariableDeclaration","scope":4988,"src":"803:14:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4983,"name":"bytes","nodeType":"ElementaryTypeName","src":"803:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"802:16:29"},"scope":5019,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":5004,"nodeType":"FunctionDefinition","src":"1431:196:29","nodes":[],"body":{"id":5003,"nodeType":"Block","src":"1532:95:29","nodes":[],"statements":[{"AST":{"nativeSrc":"1547:76:29","nodeType":"YulBlock","src":"1547:76:29","statements":[{"nativeSrc":"1555:62:29","nodeType":"YulAssignment","src":"1555:62:29","value":{"arguments":[{"name":"_gas","nativeSrc":"1565:4:29","nodeType":"YulIdentifier","src":"1565:4:29"},{"name":"_to","nativeSrc":"1571:3:29","nodeType":"YulIdentifier","src":"1571:3:29"},{"name":"_val","nativeSrc":"1576:4:29","nodeType":"YulIdentifier","src":"1576:4:29"},{"arguments":[{"name":"_data","nativeSrc":"1586:5:29","nodeType":"YulIdentifier","src":"1586:5:29"},{"kind":"number","nativeSrc":"1593:2:29","nodeType":"YulLiteral","src":"1593:2:29","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1582:3:29","nodeType":"YulIdentifier","src":"1582:3:29"},"nativeSrc":"1582:14:29","nodeType":"YulFunctionCall","src":"1582:14:29"},{"arguments":[{"name":"_data","nativeSrc":"1604:5:29","nodeType":"YulIdentifier","src":"1604:5:29"}],"functionName":{"name":"mload","nativeSrc":"1598:5:29","nodeType":"YulIdentifier","src":"1598:5:29"},"nativeSrc":"1598:12:29","nodeType":"YulFunctionCall","src":"1598:12:29"},{"kind":"number","nativeSrc":"1612:1:29","nodeType":"YulLiteral","src":"1612:1:29","type":"","value":"0"},{"kind":"number","nativeSrc":"1615:1:29","nodeType":"YulLiteral","src":"1615:1:29","type":"","value":"0"}],"functionName":{"name":"call","nativeSrc":"1560:4:29","nodeType":"YulIdentifier","src":"1560:4:29"},"nativeSrc":"1560:57:29","nodeType":"YulFunctionCall","src":"1560:57:29"},"variableNames":[{"name":"r","nativeSrc":"1555:1:29","nodeType":"YulIdentifier","src":"1555:1:29"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4997,"isOffset":false,"isSlot":false,"src":"1586:5:29","valueSize":1},{"declaration":4997,"isOffset":false,"isSlot":false,"src":"1604:5:29","valueSize":1},{"declaration":4995,"isOffset":false,"isSlot":false,"src":"1565:4:29","valueSize":1},{"declaration":4991,"isOffset":false,"isSlot":false,"src":"1571:3:29","valueSize":1},{"declaration":4993,"isOffset":false,"isSlot":false,"src":"1576:4:29","valueSize":1},{"declaration":5000,"isOffset":false,"isSlot":false,"src":"1555:1:29","valueSize":1}],"id":5002,"nodeType":"InlineAssembly","src":"1538:85:29"}]},"documentation":{"id":4989,"nodeType":"StructuredDocumentation","src":"1033:395:29","text":" @notice Calls another contract with the given parameters.\n @dev This method doesn't increase the memory pointer.\n @param _to The address of the contract to call.\n @param _val The value to send to the contract.\n @param _gas The amount of gas to provide for the call.\n @param _data The data to send to the contract.\n @return r The success status of the call."},"implemented":true,"kind":"function","modifiers":[],"name":"call","nameLocation":"1440:4:29","parameters":{"id":4998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4991,"mutability":"mutable","name":"_to","nameLocation":"1453:3:29","nodeType":"VariableDeclaration","scope":5004,"src":"1445:11:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4990,"name":"address","nodeType":"ElementaryTypeName","src":"1445:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4993,"mutability":"mutable","name":"_val","nameLocation":"1466:4:29","nodeType":"VariableDeclaration","scope":5004,"src":"1458:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4992,"name":"uint256","nodeType":"ElementaryTypeName","src":"1458:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4995,"mutability":"mutable","name":"_gas","nameLocation":"1480:4:29","nodeType":"VariableDeclaration","scope":5004,"src":"1472:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4994,"name":"uint256","nodeType":"ElementaryTypeName","src":"1472:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4997,"mutability":"mutable","name":"_data","nameLocation":"1499:5:29","nodeType":"VariableDeclaration","scope":5004,"src":"1486:18:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4996,"name":"bytes","nodeType":"ElementaryTypeName","src":"1486:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1444:61:29"},"returnParameters":{"id":5001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5000,"mutability":"mutable","name":"r","nameLocation":"1529:1:29","nodeType":"VariableDeclaration","scope":5004,"src":"1524:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4999,"name":"bool","nodeType":"ElementaryTypeName","src":"1524:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1523:8:29"},"scope":5019,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":5018,"nodeType":"FunctionDefinition","src":"1997:192:29","nodes":[],"body":{"id":5017,"nodeType":"Block","src":"2092:97:29","nodes":[],"statements":[{"AST":{"nativeSrc":"2107:78:29","nodeType":"YulBlock","src":"2107:78:29","statements":[{"nativeSrc":"2115:64:29","nodeType":"YulAssignment","src":"2115:64:29","value":{"arguments":[{"name":"_gas","nativeSrc":"2133:4:29","nodeType":"YulIdentifier","src":"2133:4:29"},{"name":"_to","nativeSrc":"2139:3:29","nodeType":"YulIdentifier","src":"2139:3:29"},{"arguments":[{"name":"_data","nativeSrc":"2148:5:29","nodeType":"YulIdentifier","src":"2148:5:29"},{"kind":"number","nativeSrc":"2155:2:29","nodeType":"YulLiteral","src":"2155:2:29","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2144:3:29","nodeType":"YulIdentifier","src":"2144:3:29"},"nativeSrc":"2144:14:29","nodeType":"YulFunctionCall","src":"2144:14:29"},{"arguments":[{"name":"_data","nativeSrc":"2166:5:29","nodeType":"YulIdentifier","src":"2166:5:29"}],"functionName":{"name":"mload","nativeSrc":"2160:5:29","nodeType":"YulIdentifier","src":"2160:5:29"},"nativeSrc":"2160:12:29","nodeType":"YulFunctionCall","src":"2160:12:29"},{"kind":"number","nativeSrc":"2174:1:29","nodeType":"YulLiteral","src":"2174:1:29","type":"","value":"0"},{"kind":"number","nativeSrc":"2177:1:29","nodeType":"YulLiteral","src":"2177:1:29","type":"","value":"0"}],"functionName":{"name":"delegatecall","nativeSrc":"2120:12:29","nodeType":"YulIdentifier","src":"2120:12:29"},"nativeSrc":"2120:59:29","nodeType":"YulFunctionCall","src":"2120:59:29"},"variableNames":[{"name":"r","nativeSrc":"2115:1:29","nodeType":"YulIdentifier","src":"2115:1:29"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":5011,"isOffset":false,"isSlot":false,"src":"2148:5:29","valueSize":1},{"declaration":5011,"isOffset":false,"isSlot":false,"src":"2166:5:29","valueSize":1},{"declaration":5009,"isOffset":false,"isSlot":false,"src":"2133:4:29","valueSize":1},{"declaration":5007,"isOffset":false,"isSlot":false,"src":"2139:3:29","valueSize":1},{"declaration":5014,"isOffset":false,"isSlot":false,"src":"2115:1:29","valueSize":1}],"id":5016,"nodeType":"InlineAssembly","src":"2098:87:29"}]},"documentation":{"id":5005,"nodeType":"StructuredDocumentation","src":"1631:363:29","text":" @notice Calls another contract with the given parameters, using delegatecall.\n @dev This method doesn't increase the memory pointer.\n @param _to The address of the contract to call.\n @param _gas The amount of gas to provide for the call.\n @param _data The data to send to the contract.\n @return r The success status of the call."},"implemented":true,"kind":"function","modifiers":[],"name":"delegatecall","nameLocation":"2006:12:29","parameters":{"id":5012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5007,"mutability":"mutable","name":"_to","nameLocation":"2027:3:29","nodeType":"VariableDeclaration","scope":5018,"src":"2019:11:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5006,"name":"address","nodeType":"ElementaryTypeName","src":"2019:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5009,"mutability":"mutable","name":"_gas","nameLocation":"2040:4:29","nodeType":"VariableDeclaration","scope":5018,"src":"2032:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5008,"name":"uint256","nodeType":"ElementaryTypeName","src":"2032:7:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5011,"mutability":"mutable","name":"_data","nameLocation":"2059:5:29","nodeType":"VariableDeclaration","scope":5018,"src":"2046:18:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5010,"name":"bytes","nodeType":"ElementaryTypeName","src":"2046:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2018:47:29"},"returnParameters":{"id":5015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5014,"mutability":"mutable","name":"r","nameLocation":"2089:1:29","nodeType":"VariableDeclaration","scope":5018,"src":"2084:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5013,"name":"bool","nodeType":"ElementaryTypeName","src":"2084:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2083:8:29"},"scope":5019,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"LibOptim","contractDependencies":[],"contractKind":"library","documentation":{"id":4968,"nodeType":"StructuredDocumentation","src":"65:97:29","text":"@title LibOptim\n @author Agustin Aguilar\n @notice Library for optimized EVM operations"},"fullyImplemented":true,"linearizedBaseContracts":[5019],"name":"LibOptim","nameLocation":"170:8:29","scope":5020,"usedErrors":[],"usedEvents":[]}],"license":"Apache-2.0"}}}},"solcLongVersion":"0.8.28","solcVersion":"0.8.28"} \ No newline at end of file diff --git a/jobs/sequence_v3/rc-4.yaml b/jobs/sequence_v3/rc-4.yaml index 4190cf4..d523637 100644 --- a/jobs/sequence_v3/rc-4.yaml +++ b/jobs/sequence_v3/rc-4.yaml @@ -3,6 +3,7 @@ version: "2" description: "Sequence v3 contracts (release candidate 3) (commit e7817ac8f49ba4f8934d1e15bd6c222a40e02540) (evm paris)" depends_on: ["p256-verifier"] +deprecated: true # Changelog since rc-3 # diff --git a/jobs/sequence_v3/rc-5.yaml b/jobs/sequence_v3/rc-5.yaml new file mode 100644 index 0000000..dfc1c2d --- /dev/null +++ b/jobs/sequence_v3/rc-5.yaml @@ -0,0 +1,213 @@ +name: "sequence_v3/rc_5" +version: "1" +description: "Sequence v3 contracts (release candidate 5) (commit 0d9061f229da73edae890e6fdd1fbf753028df6d) (evm paris)" +depends_on: ["p256-verifier"] + + +# Changelog since rc-4 +# +# - Events +# - Added `indexed` for call events. +# - Added `indexed` for recovery events. + +actions: + # Remains the same as rc_4 + - name: "factory" + template: "erc-2470" + arguments: + salt: "0xd4d338c5d1f6a77bd065d147e9cacd6ac7ed4c6e361a26baf7896a465ed661b4" + creationCode: "{{Contract(./build-info/rc-3/factory.json:Factory).creationCode}}" + output: true + + # Remains the same as rc_4 + - name: "erc4337-factory-wrapper" + template: "erc-2470" + arguments: + salt: "0x3a947b2bab0180f81253e436c02f6aae86faa744604f17f444e193b47c4bc67a" + creationCode: + type: "constructor-encode" + arguments: + creationCode: "{{Contract(./build-info/rc-4/erc4337-factory-wrapper.json:ERC4337FactoryWrapper).creationCode}}" + types: ["address", "address"] + values: ["{{factory.address}}", "{{entrypoint-4337-07-sender-creator}}"] + output: true + + - name: "stage-1-module" + template: "erc-2470" + arguments: + salt: "0x0aee8e5fdccaf70bbd1ceaa5321de853b9142f5714dcc163592f3842b2819396" + creationCode: + type: "constructor-encode" + arguments: + creationCode: "{{Contract(./build-info/rc-5/stage1.json:Stage1Module).creationCode}}" + types: ["address", "address"] + values: ["{{factory.address}}", "{{address-zero}}"] + output: true + + - name: "stage-1-module-4337-07" + template: "erc-2470" + arguments: + salt: "0xd664aeec7b79eb9b3b33f5de6fd385b117da82ab787734d346090f33c46b780f" + creationCode: + type: "constructor-encode" + arguments: + creationCode: "{{Contract(./build-info/rc-5/stage1.json:Stage1Module).creationCode}}" + types: ["address", "address"] + values: ["{{factory.address}}", "{{entrypoint-4337-07}}"] + output: true + + - name: "stage-2-module" + depends_on: ["stage-1-module"] + template: "static" + arguments: + value: + type: "call" + arguments: + to: "{{stage-1-module.address}}" + signature: "STAGE_2_IMPLEMENTATION() returns (address)" + values: [] + output: true + + - name: "stage-2-module-4337-07" + depends_on: ["stage-1-module-4337-07"] + template: "static" + arguments: + value: + type: "call" + arguments: + to: "{{stage-1-module-4337-07.address}}" + signature: "STAGE_2_IMPLEMENTATION() returns (address)" + values: [] + output: true + + - name: "guest" + template: "erc-2470" + arguments: + salt: "0xcb4dae7b9b2a241b19adb078f35433bb1b02cb63a82ecb49a6fe2a290c4585b4" + creationCode: "{{Contract(./build-info/rc-5/guest.json:Guest).creationCode}}" + output: true + + # Remains the same as rc_4 + - name: "passkeys" + template: "erc-2470" + arguments: + salt: "0x3893f60d58ce8c5e5d885ee94c4f450814d0bb06917820a1c8059f437ecbd7c4" + creationCode: "{{Contract(./build-info/rc-4/passkeys.json:Passkeys).creationCode}}" + output: true + + - name: "recovery" + template: "erc-2470" + arguments: + salt: "0x2367235aa5766b14e874331a8bad01ed8a24ae17b62bc72de819bf81d1a2aa5b" + creationCode: "{{Contract(./build-info/rc-5/recovery.json:Recovery).creationCode}}" + output: true + + # Remains the same as rc_4 + - name: "sessions" + template: "erc-2470" + arguments: + salt: "0x8ab75435a905ce3b50cd8bb75fe32db9f0b370f20611589849dd10434e1eb41e" + creationCode: "{{Contract(./build-info/rc-4/sessions.json:SessionManager).creationCode}}" + output: true + + - name: "verify-factory" + type: "verify-contract" + depends_on: ["factory"] + arguments: + address: "{{factory.address}}" + contract: "{{Contract(./build-info/rc-3/factory.json:Factory)}}" + output: false + + - name: "verify-stage-1-module" + type: "verify-contract" + depends_on: ["stage-1-module"] + arguments: + address: "{{stage-1-module.address}}" + contract: "{{Contract(./build-info/rc-5/stage1.json:Stage1Module)}}" + constructorArguments: + type: "constructor-encode" + arguments: + types: ["address", "address"] + values: ["{{factory.address}}", "{{address-zero}}"] + output: false + + - name: "verify-stage-2-module" + type: "verify-contract" + depends_on: ["stage-1-module"] + arguments: + address: + type: "call" + arguments: + to: "{{stage-1-module.address}}" + signature: "STAGE_2_IMPLEMENTATION() returns (address)" + values: [] + contract: "{{Contract(./build-info/rc-5/stage1.json:Stage2Module)}}" + constructorArguments: + type: "constructor-encode" + arguments: + types: ["address"] + values: ["{{address-zero}}"] + output: false + + - name: "verify-stage-1-module-4337-07" + type: "verify-contract" + depends_on: ["stage-1-module-4337-07"] + arguments: + address: "{{stage-1-module-4337-07.address}}" + contract: "{{Contract(./build-info/rc-5/stage1.json:Stage1Module)}}" + constructorArguments: + type: "constructor-encode" + arguments: + types: ["address", "address"] + values: ["{{factory.address}}", "{{entrypoint-4337-07}}"] + output: false + + - name: "verify-stage-2-module-4337-07" + type: "verify-contract" + depends_on: ["stage-1-module-4337-07"] + arguments: + address: + type: "call" + arguments: + to: "{{stage-1-module-4337-07.address}}" + signature: "STAGE_2_IMPLEMENTATION() returns (address)" + values: [] + contract: "{{Contract(./build-info/rc-5/stage1.json:Stage2Module)}}" + constructorArguments: + type: "constructor-encode" + arguments: + types: ["address"] + values: ["{{entrypoint-4337-07}}"] + output: false + + - name: "verify-guest" + type: "verify-contract" + depends_on: ["guest"] + arguments: + address: "{{guest.address}}" + contract: "{{Contract(./build-info/rc-5/guest.json:Guest)}}" + output: false + + - name: "verify-passkeys" + type: "verify-contract" + depends_on: ["passkeys"] + arguments: + address: "{{passkeys.address}}" + contract: "{{Contract(./build-info/rc-4/passkeys.json:Passkeys)}}" + output: false + + - name: "verify-recovery" + type: "verify-contract" + depends_on: ["recovery"] + arguments: + address: "{{recovery.address}}" + contract: "{{Contract(./build-info/rc-5/recovery.json:Recovery)}}" + output: false + + - name: "verify-sessions" + type: "verify-contract" + depends_on: ["sessions"] + arguments: + address: "{{sessions.address}}" + contract: "{{Contract(./build-info/rc-4/sessions.json:SessionManager)}}" + output: false \ No newline at end of file