diff --git a/contracts/artifacts/wallet-contracts-v3/Stage7702Module.sol/Stage7702Module.json b/contracts/artifacts/wallet-contracts-v3/Stage7702Module.sol/Stage7702Module.json new file mode 100644 index 00000000..4b1bcf49 --- /dev/null +++ b/contracts/artifacts/wallet-contracts-v3/Stage7702Module.sol/Stage7702Module.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"_entryPoint","type":"address","internalType":"address"},{"name":"_defaultCheckpointer","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DEFAULT_CHECKPOINTER","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":"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":"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":"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"}]}],"bytecode":{"object":"0x60c03461008e57601f6140e038819003918201601f19168301916001600160401b0383118484101761009357808492604094855283398101031261008e57610052602061004b836100a9565b92016100a9565b60805260a05260405161402290816100be8239608051818181610e070152611d5c015260a0518181816110340152818161119b0152611a4a0152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b038216820361008e5756fe6080604052600436101561001e575b361561001c5761001c611dc8565b005b60003560e01c806223de291461018d57806313792a4a14610188578063150b7a02146101835780631626ba7e1461017e57806319822f7c146101795780631a9b2337146101745780631f6a1eb91461016f578063295614261461016a5780634fcf3eca1461016557806351605d8014610160578063540e3ad91461015b5780636ea44577146101565780638943ec02146101515780638c3f55631461014c57806392dcb3fc146101475780639c145aed14610142578063a65d69d41461013d578063aaf10f4214610138578063ad55366b14610133578063b93ea7ad1461012e578063bc197c8114610129578063f23a6e61146101245763f727ef1c0361000e57611562565b6114d5565b611403565b6112a4565b611258565b6111bf565b611150565b610fc1565b610f63565b610f27565b610ea3565b610e74565b610dbc565b610d83565b610c67565b610b80565b610a6f565b610a0c565b610957565b6108cf565b610842565b610745565b61024f565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b9181601f840112156101b55782359167ffffffffffffffff83116101b557602083818601950101116101b557565b346101b55760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610286610192565b5061028f6101ba565b506102986101dd565b5060843567ffffffffffffffff81116101b5576102b9903690600401610221565b505060a43567ffffffffffffffff81116101b55761001c903690600401610221565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff82111761032657604052565b6102db565b6040810190811067ffffffffffffffff82111761032657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761032657604052565b6040519061039760e083610347565b565b6040519061039761012083610347565b359060ff821682036101b557565b359081151582036101b557565b67ffffffffffffffff81116103265760051b60200190565b67ffffffffffffffff811161032657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192610422826103dc565b916104306040519384610347565b8294818452818301116101b5578281602093846000960137010152565b9080601f830112156101b55781602061046893359101610416565b90565b81601f820112156101b557803590610482826103c4565b926104906040519485610347565b82845260208085019360051b830101918183116101b55760208101935b8385106104bc57505050505090565b843567ffffffffffffffff81116101b557820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082860301126101b557610503610388565b9161051060208301610200565b83526040820135602084015260608201359267ffffffffffffffff84116101b55760e08361054588602080988198010161044d565b60408401526080810135606084015261056060a082016103b7565b608084015261057160c082016103b7565b60a0840152013560c08201528152019401936104ad565b9080601f830112156101b557813561059f816103c4565b926105ad6040519485610347565b81845260208085019260051b8201019283116101b557602001905b8282106105d55750505090565b602080916105e284610200565b8152019101906105c8565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82850301126101b55761065f610399565b9061066c816004016103a9565b825261067a602482016103b7565b6020830152604481013567ffffffffffffffff81116101b5578460046106a29284010161046b565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff81116101b5578460046106de9284010161044d565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116101b5576004859161071b930101610588565b610100820152916024359067ffffffffffffffff82116101b55761074191600401610221565b9091565b346101b557610753366105ed565b909161010081019261076e61076985515161166a565b61168a565b9160005b855180518210156107d557906107cf6107aa61079083600195611708565b5173ffffffffffffffffffffffffffffffffffffffff1690565b6107b48388611708565b9073ffffffffffffffffffffffffffffffffffffffff169052565b01610772565b50508383866107ea336107b483515185611708565b526107f6818484611e9a565b50156108085760405160018152602090f35b61083e906040519384937ff58cc8b500000000000000000000000000000000000000000000000000000000855260048501611963565b0390fd5b346101b55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610879610192565b506108826101ba565b5060643567ffffffffffffffff81116101b5576108a3903690600401610221565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b346101b55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043560243567ffffffffffffffff81116101b55760209161092761092d923690600401610221565b91611988565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126101b5576109da60209160243560443591600401611a31565b604051908152f35b7fffffffff000000000000000000000000000000000000000000000000000000008116036101b557565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020610a51600435610a4c816109e2565b6120aa565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b557610ab9903690600401610221565b60243567ffffffffffffffff81116101b557610ad9903690600401610221565b9160027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610b5657610b309360027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55611b9b565b60017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b7f37ed32e80000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557600435303303610c39578015610c0f576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a1005b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557600435610c9d816109e2565b303303610c395773ffffffffffffffffffffffffffffffffffffffff610cc2826120aa565b1615610d285760407fffffffff000000000000000000000000000000000000000000000000000000007f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19216610d19600082612eef565b815190815260006020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f1c3812cc000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b60009103126101b557565b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760206109da611c91565b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101b5576004359067ffffffffffffffff82116101b55761074191600401610221565b610e7d36610e2b565b90303303610c3957610e9361001c925a926121df565b90610e9d826128f4565b9061255e565b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610eda610192565b5060443567ffffffffffffffff81116101b557610efb903690600401610221565b505060206040517f8943ec02000000000000000000000000000000000000000000000000000000008152f35b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760206109da600435612982565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576040610f9f6004356129c8565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346101b557610fcf36610e2b565b9060027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610b565760027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156111265733036110f857303b156101b5576110a29160009160405193849283927f6ea4457700000000000000000000000000000000000000000000000000000000845260048401611d87565b038183305af180156110f3576110d85760017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b806110e760006110ed93610347565b80610d78565b38610b30565b6119d4565b7f1d6ddbf4000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7fd13d78350000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060006017303b146112195773ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6017600080303c60005162ef01008160e81c14611237575b50610a51565b73ffffffffffffffffffffffffffffffffffffffff915060481c1638611231565b346101b55760c061127460008061126e366105ed565b91612ac9565b92909190611280611c91565b821490604051958652602086015260408501526060840152608083015260a0820152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576004356112da816109e2565b6112e26101ba565b90303303610c395773ffffffffffffffffffffffffffffffffffffffff611308826120aa565b16611382577f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19173ffffffffffffffffffffffffffffffffffffffff7fffffffff000000000000000000000000000000000000000000000000000000006040931691166113758183612eef565b82519182526020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f5b4d6d6a000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b9181601f840112156101b55782359167ffffffffffffffff83116101b5576020808501948460051b0101116101b557565b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55761143a610192565b506114436101ba565b5060443567ffffffffffffffff81116101b5576114649036906004016113d2565b505060643567ffffffffffffffff81116101b5576114869036906004016113d2565b505060843567ffffffffffffffff81116101b5576114a8903690600401610221565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55761150c610192565b506115156101ba565b5060843567ffffffffffffffff81116101b557611536903690600401610221565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043561159c6101ba565b604435916bffffffffffffffffffffffff83168093036101b557303303610c39578273ffffffffffffffffffffffffffffffffffffffff836116277febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1967fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606097881b161785612e6b565b6040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906001820180921161167857565b61163b565b9190820180921161167857565b90611694826103c4565b6116a16040519182610347565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06116cf82946103c4565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805182101561171c5760209160051b010190565b6116d9565b919082519283825260005b84811061176b5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b8060208092840101518282860101520161172c565b9080602083519182815201916020808360051b8301019401926000915b8383106117ac57505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c08061181f604085015160e0604086015260e0850190611721565b936060810151606085015260808101511515608085015260a0810151151560a085015201519101529701930193019193929061179d565b906020808351928381520192019060005b8181106118745750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611867565b805160ff168252610468916020828101511515908201526101006118fe6118d860408501516101206040860152610120850190611780565b606085015160608501526080850151608085015260a085015184820360a0860152611721565b9260c081015160c084015260e081015160e0840152015190610100818403910152611856565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b9161197a61046894926040855260408501906118a0565b926020818503910152611924565b906119a5929161199661204f565b906003825260e0820152611e9a565b50156119cf577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b6040513d6000823e3d90fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156101b5570180359067ffffffffffffffff82116101b5576020019181360383136101b557565b909173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115611126578133036110f85780611ae5575b5050611ad57f1626ba7e0000000000000000000000000000000000000000000000000000000092610927836101007fffffffff000000000000000000000000000000000000000000000000000000009501906119e0565b1603611ae057600090565b600190565b813b156101b5576040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015291600091839160249183915af19283156110f3576109277fffffffff0000000000000000000000000000000000000000000000000000000093611ad5937f1626ba7e0000000000000000000000000000000000000000000000000000000096611b86575b5093505092611a7e565b806110e76000611b9593610347565b38611b7c565b91939290611baa905a936121df565b9160608301516080840151611bbe82612982565b818103611c5d57509060017f1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881920190611bf78282612eb0565b604080519182526020820192909252a1611c12828685611e9a565b929015611c25575061039793945061255e565b8361083e87926040519384937fa2b6d61b00000000000000000000000000000000000000000000000000000000855260048501611963565b917f9b6514f40000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf85480610468575060405160208101907f53657175656e6365207369676e65723a0a00000000000000000000000000000082527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660318201526001604582015260458152611d25606582610347565b519020600052600160205260406000206000526000602052604060002060005273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016602052604060002090565b916020610468938181520191611924565b3d15611dc3573d90611da9826103dc565b91611db76040519384610347565b82523d6000602084013e565b606090565b600436108015611dd55750565b611e0b906000357fffffffff00000000000000000000000000000000000000000000000000000000811691611e5d575b506120aa565b73ffffffffffffffffffffffffffffffffffffffff8116611e295750565b60008091604051368382378036810184815203915af4611e47611d98565b9015611e5557602081519101f35b602081519101fd5b7fffffffff000000000000000000000000000000000000000000000000000000008092503660040360031b1b161638611e05565b901561171c5790565b611ecd611ea78484611e91565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f800000000000000000000000000000000000000000000000000000000000000080821614611f505750611f05926000928392612ac9565b905091909192808210611f20575050611f1d90613ce1565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f0200000000000000000000000000000000000000000000000000000000000000908116146020820152611f86925090506128f4565b90611f90826129c8565b4281111561201d575073ffffffffffffffffffffffffffffffffffffffff81168015159081612012575b50611fc6575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b905033141538611fba565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff821117610326576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b73ffffffffffffffffffffffffffffffffffffffff906040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a120845216604082015260408152612121606082610347565b519020541690565b90612133826103c4565b6121406040519182610347565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061216e82946103c4565b019060005b82811061217f57505050565b60209060405161218e8161030a565b60008152600083820152606060408201526000606082015260006080820152600060a0820152600060c082015282828501015201612173565b909392938483116101b55784116101b5578101920390565b906121e861204f565b6000815291600190803560f81c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316016124b75750600060608601525b600761223760ff831660011c90565b1680612466575b50601081811603612438575060015b61225681612129565b604086019081526000925b82841061229e5750505050036122745790565b7f0bdf80380000000000000000000000000000000000000000000000000000000060005260046000fd5b9293919290918082013560f81c9060010194908560018083160361241657506122e8306122cc848751611708565b519073ffffffffffffffffffffffffffffffffffffffff169052565b6002808216146123f6575b6004808216146123a8575b600880821614612373575b9061235a61235460c0846123346010806001981614608061232b888c51611708565b51019015159052565b61234a60208083161460a061232b888c51611708565b1660061c60031690565b60ff1690565b60c0612367838751611708565b51015201929190612261565b946001919061235a906123549060c09086810135906020019990606061239a878b51611708565b510152939450505050612309565b946123f0908381013560e81c906003016123e96123d06123c8848461167d565b838c896121c7565b919060406123df888b51611708565b5101923691610416565b905261167d565b946122fe565b9482810135906020019590602061240e848751611708565b5101526122f3565b61243396508381013560601c9060140196906122cc848751611708565b6122e8565b60209081160361245557600282019181013560f01c905b9061224d565b600182019181013560f81c9061244f565b6124aa919383929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b929060808601523861223e565b80830135606090811c908701526014019250612228565b6124e6604092959493956060835260608301906118a0565b9460208201520152565b9261046896959260c09592855260208501526040840152606083015260808201528160a08201520190611721565b604090610468939281528160208201520190611721565b61254b61046894926060835260608301906118a0565b9260208201526040818403910152611721565b916000604082019384515190825b82811061257d575b50505050505050565b612588818851611708565b519361259760a0860151151590565b8061287b575b612841575060009360608101518015801580612838575b6128005784906125c76080850151151590565b156127ba57612672926125ee855173ffffffffffffffffffffffffffffffffffffffff1690565b91156127b457505a905b61266d8b61264160608d01516040890151908c8b604051998a967f4c4e814c000000000000000000000000000000000000000000000000000000006020890152602488016124f0565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284610347565b612e3e565b156126bb575b50600190867f5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a604051806126b185829190602083019252565b0390a25b0161256c565b60c00180511561276b57600181511461272c57516002146126dc5738612678565b93505050507fc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b91925061270d612e50565b9061271d6040519283928361251e565b0390a238808080808080612574565b508461083e612739612e50565b6040519384937f7f6b0bb100000000000000000000000000000000000000000000000000000000855260048501612535565b50925060018093867f115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d6127ac61279f612e50565b604051918291868361251e565b0390a26126b5565b906125f8565b83516127f593925073ffffffffffffffffffffffffffffffffffffffff16916020850151916000146127fa57505a905b604085015192612e2c565b612672565b906127ea565b838861083e5a6040519384937f21395274000000000000000000000000000000000000000000000000000000008552600485016124ce565b50815a106125b4565b9350600190867f9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b604051806127ac85829190602083019252565b50801561259d565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b1660318301526045820152604581526128ee606582610347565b51902090565b6129566128ee61291461290e602085015115153090612f2e565b93613029565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610347565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e83526040820152604081526129c1606082610347565b5190205490565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612a07606082610347565b51902054906bffffffffffffffffffffffff8260601c921690565b60405190612a2f8261032b565b60006020838281520152565b60031115612a4557565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b908160409103126101b557602060405191612a8e8361032b565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff61046894931681528160208201520190611721565b909491939291853560f81c600190938190612ae2612a22565b92612aec82612a3b565b60018203612cf6575b50600180871614612c95575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908096918196602016612b649060051c90565b612b6d9061166a565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a81612bb9846128f4565b988993612bc5936121c7565b91612bcf9361346b565b9098612be391600052602052604060002090565b90612bf691600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16612c1f91600052602052604060002090565b94815190868215159283612c8a575b505081612c7b575b50612c3e5750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b90506020820151101538612c36565b141591508638612c2e565b909691939450612ca781989398612a3b565b612ccc57612cc19581612cb9936121c7565b93909261321e565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06040881601612af5578981013560601c9750601401915087878a84612d3f85612a3b565b60028503612d50575b505050612af5565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c92604092612dd5929091612da091612d99918a90612d93898361167d565b926121c7565b3691610416565b83519586809481937fccce3bc80000000000000000000000000000000000000000000000000000000083523060048401612a9c565b0392165afa80156110f357612df392600091612dfd575b509361167d565b9087388a81612d48565b612e1f915060403d604011612e25575b612e178183610347565b810190612a74565b38612dec565b503d612e0d565b9160009391849360208451940192f190565b9160009291839260208351930191f490565b3d90604051916020818401016040528083526000602084013e565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612eaa606082610347565b51902055565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8352604082015260408152612eaa606082610347565b60405160208101917fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208352604082015260408152612eaa606082610347565b15612fde576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a081526128ee60c082610347565b4690612f37565b805160209091019060005b818110612ffd5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612ff0565b61010081015160405161304481612956602082018095612fe5565b51902090613053815160ff1690565b60ff8116806130cc575050906128ee61306f6040840151613d1b565b9261295660806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b6001810361312a57505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466938101938452908101919091526060810192909252906128ee8160808101612956565b6002810361318057505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4602082019081529181019290925260608201929092526128ee8160808101612956565b6003036131d4575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466602082019081529181019290925260608201929092526128ee8160808101612956565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b906124e69060409396959496606084526060840191611924565b919492909260009560009560009560009560009561323a61204f565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b82811061329157505050505050508051151580613283575b612c3e5750565b50602081015184111561327c565b600381019d50959b50939950919750929091906132b5908b9085013560e81c61167d565b958287036133f5578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c036133c65750613302916132fb898c9387896121c7565b908b612ac9565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106133805750928b885114613377575b808b101561334557508a60c08501528992959295949194939093613264565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b60008852613326565b8d8f61083e61339185858c8e6121c7565b9390926040519485947fb006aba000000000000000000000000000000000000000000000000000000000865260048601613204565b979899809b926133db8b6133e294888a6121c7565b9086612ac9565b50929d919c909b929a9092918e8e613316565b8a6002916132c2565b908160209103126101b55751610468816109e2565b604090610468949281528160208201520191611924565b73ffffffffffffffffffffffffffffffffffffffff610468959360609383521660208201528160408201520191611924565b908160209103126101b5575190565b9391909360009460009460005b818110613486575050505050565b8481013560f881901c9860019092019788979692909160fc1c988915613c7a575060018914613c3a5760028914613a6d5760038914613a3e57600489146139bd576006891461391d57600589146138cf576007891461380857600889146137b2576009891461368957600a8914613526577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b90919293949596975060038916978815613678575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908101908161359e9187876121c7565b6040517f898bd921000000000000000000000000000000000000000000000000000000008152939184916135d6918a60048501613413565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156110f35761361993600093613645575b5060ff909a168091019a613f7c565b90801561363f579061363391600052602052604060002090565b955b9392919093613478565b50613633565b60ff91935061366a9060203d8111613671575b6136628183610347565b81019061345c565b929061360a565b503d613658565b8084013560f81c985060010161353b565b909192939495969750600389169788156137a1575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190810190816137019187876121c7565b6040517f13792a4a00000000000000000000000000000000000000000000000000000000815293918491613739918b60048501611963565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156110f35761377b93600093613645575060ff909a168091019a613f7c565b90801561379b579061379591600052602052604060002090565b95613635565b50613795565b8084013560f81c985060010161369e565b9850602087019750949593949293919290918201356137d086613f23565b81146137e0575b61377b90613f3d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98506137d7565b975090919293949597600f169687156138bd575b6020600061382e61389b9a9b86613e56565b9c9092918a604051613871816129568a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156110f35761377b9060ff6000519a1680910199612883565b600189019883013560f81c975061381c565b9850602087019750949593949293919290918201358085146138f5575b61377b90613ee4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98506138ec565b989091929394959662ffffff985061393f612354600c8416603f9060021c1690565b9182156139a9575b6003168015613998575b90819061397c90613974908781013560e81c906003019c168c01809c89896121c7565b90898b61346b565b91111561398f575b9061377b9291613e99565b99820199613984565b50600281019084013560f01c613951565b8482013560f81c9250600190910190613947565b975097613a13613a20929394959697600f613a2893169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866121c7565b90868861346b565b9061379592980198600052602052604060002090565b98509650939492939192909190808201359060200196801561379b579061379591600052602052604060002090565b90919293949596975060038916978815613c29575b8084013560601c99613ae19160140190613aa19060021c600316612354565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b90810190613b4560208c613af785858b8b6121c7565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501613413565b0392165afa9081156110f3577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091613bfb575b501603613bb757509060ff61377b92991680910199612883565b61083e613bc88c93899389896121c7565b906040519485947fb2fed7ae0000000000000000000000000000000000000000000000000000000086526004860161342a565b613c1c915060203d8111613c22575b613c148183610347565b8101906133fe565b38613b9d565b503d613c0a565b8381013560f81c9850600101613a82565b98600f91929394959697985016968715613c69575b601481019761377b9160ff9091169084013560601c612883565b8281013560f81c9750600101613c4f565b98509091929394959698600f16978815613ccc575b5060206000613ca261389b9a9b86613e56565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c97506020613c8f565b613ce9611c91565b1490565b805160209091019060005b818110613d055750505090565b8251845260209384019390920191600101613cf8565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613d61613d4b836103c4565b92613d596040519485610347565b8084526103c4565b0136602083013760005b8351811015613e3d5780613d8160019286611708565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152613e2961012082610347565b519020613e368285611708565b5201613d6b565b509091506040516128ee81612956602082018095613ced565b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff81116116785791565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a00000000000000008552603884015260588301526078820152607881526128ee609882610347565b60405160208101917f53657175656e636520737461746963206469676573743a0a000000000000000083526038820152603881526128ee605882610347565b6129566128ee61291461290e600060208601511515612f2e565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a83526040820152604081526128ee606082610347565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d81526128ee608d8261034756fea264697066735822122070d2ccb5d2e8d1051d4fbeee4718ed4044611e6d09516015fc4e660973e187a464736f6c634300081c0033","sourceMap":"438:410:49:-:0;;;;;;;;;;;;;-1:-1:-1;;438:410:49;;;;-1:-1:-1;;;;;438:410:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;1024:43:77;;754:24:64;;438:410:49;;;;;;;;1024:43:77;438:410:49;;;;;;;;;;754:24:64;438:410:49;;;;;;;;;;;;;;;;;-1:-1:-1;438:410:49;;;;;;-1:-1:-1;438:410:49;;;;;-1:-1:-1;438:410:49;;;;-1:-1:-1;;;;;438:410:49;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001e575b361561001c5761001c611dc8565b005b60003560e01c806223de291461018d57806313792a4a14610188578063150b7a02146101835780631626ba7e1461017e57806319822f7c146101795780631a9b2337146101745780631f6a1eb91461016f578063295614261461016a5780634fcf3eca1461016557806351605d8014610160578063540e3ad91461015b5780636ea44577146101565780638943ec02146101515780638c3f55631461014c57806392dcb3fc146101475780639c145aed14610142578063a65d69d41461013d578063aaf10f4214610138578063ad55366b14610133578063b93ea7ad1461012e578063bc197c8114610129578063f23a6e61146101245763f727ef1c0361000e57611562565b6114d5565b611403565b6112a4565b611258565b6111bf565b611150565b610fc1565b610f63565b610f27565b610ea3565b610e74565b610dbc565b610d83565b610c67565b610b80565b610a6f565b610a0c565b610957565b6108cf565b610842565b610745565b61024f565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b9181601f840112156101b55782359167ffffffffffffffff83116101b557602083818601950101116101b557565b346101b55760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610286610192565b5061028f6101ba565b506102986101dd565b5060843567ffffffffffffffff81116101b5576102b9903690600401610221565b505060a43567ffffffffffffffff81116101b55761001c903690600401610221565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff82111761032657604052565b6102db565b6040810190811067ffffffffffffffff82111761032657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761032657604052565b6040519061039760e083610347565b565b6040519061039761012083610347565b359060ff821682036101b557565b359081151582036101b557565b67ffffffffffffffff81116103265760051b60200190565b67ffffffffffffffff811161032657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192610422826103dc565b916104306040519384610347565b8294818452818301116101b5578281602093846000960137010152565b9080601f830112156101b55781602061046893359101610416565b90565b81601f820112156101b557803590610482826103c4565b926104906040519485610347565b82845260208085019360051b830101918183116101b55760208101935b8385106104bc57505050505090565b843567ffffffffffffffff81116101b557820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082860301126101b557610503610388565b9161051060208301610200565b83526040820135602084015260608201359267ffffffffffffffff84116101b55760e08361054588602080988198010161044d565b60408401526080810135606084015261056060a082016103b7565b608084015261057160c082016103b7565b60a0840152013560c08201528152019401936104ad565b9080601f830112156101b557813561059f816103c4565b926105ad6040519485610347565b81845260208085019260051b8201019283116101b557602001905b8282106105d55750505090565b602080916105e284610200565b8152019101906105c8565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82850301126101b55761065f610399565b9061066c816004016103a9565b825261067a602482016103b7565b6020830152604481013567ffffffffffffffff81116101b5578460046106a29284010161046b565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff81116101b5578460046106de9284010161044d565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116101b5576004859161071b930101610588565b610100820152916024359067ffffffffffffffff82116101b55761074191600401610221565b9091565b346101b557610753366105ed565b909161010081019261076e61076985515161166a565b61168a565b9160005b855180518210156107d557906107cf6107aa61079083600195611708565b5173ffffffffffffffffffffffffffffffffffffffff1690565b6107b48388611708565b9073ffffffffffffffffffffffffffffffffffffffff169052565b01610772565b50508383866107ea336107b483515185611708565b526107f6818484611e9a565b50156108085760405160018152602090f35b61083e906040519384937ff58cc8b500000000000000000000000000000000000000000000000000000000855260048501611963565b0390fd5b346101b55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610879610192565b506108826101ba565b5060643567ffffffffffffffff81116101b5576108a3903690600401610221565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b346101b55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043560243567ffffffffffffffff81116101b55760209161092761092d923690600401610221565b91611988565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126101b5576109da60209160243560443591600401611a31565b604051908152f35b7fffffffff000000000000000000000000000000000000000000000000000000008116036101b557565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020610a51600435610a4c816109e2565b6120aa565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b557610ab9903690600401610221565b60243567ffffffffffffffff81116101b557610ad9903690600401610221565b9160027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610b5657610b309360027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55611b9b565b60017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b7f37ed32e80000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557600435303303610c39578015610c0f576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a1005b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557600435610c9d816109e2565b303303610c395773ffffffffffffffffffffffffffffffffffffffff610cc2826120aa565b1615610d285760407fffffffff000000000000000000000000000000000000000000000000000000007f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19216610d19600082612eef565b815190815260006020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f1c3812cc000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b60009103126101b557565b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760206109da611c91565b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101b5576004359067ffffffffffffffff82116101b55761074191600401610221565b610e7d36610e2b565b90303303610c3957610e9361001c925a926121df565b90610e9d826128f4565b9061255e565b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610eda610192565b5060443567ffffffffffffffff81116101b557610efb903690600401610221565b505060206040517f8943ec02000000000000000000000000000000000000000000000000000000008152f35b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760206109da600435612982565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576040610f9f6004356129c8565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346101b557610fcf36610e2b565b9060027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610b565760027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156111265733036110f857303b156101b5576110a29160009160405193849283927f6ea4457700000000000000000000000000000000000000000000000000000000845260048401611d87565b038183305af180156110f3576110d85760017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b806110e760006110ed93610347565b80610d78565b38610b30565b6119d4565b7f1d6ddbf4000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7fd13d78350000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060006017303b146112195773ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6017600080303c60005162ef01008160e81c14611237575b50610a51565b73ffffffffffffffffffffffffffffffffffffffff915060481c1638611231565b346101b55760c061127460008061126e366105ed565b91612ac9565b92909190611280611c91565b821490604051958652602086015260408501526060840152608083015260a0820152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576004356112da816109e2565b6112e26101ba565b90303303610c395773ffffffffffffffffffffffffffffffffffffffff611308826120aa565b16611382577f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19173ffffffffffffffffffffffffffffffffffffffff7fffffffff000000000000000000000000000000000000000000000000000000006040931691166113758183612eef565b82519182526020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f5b4d6d6a000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b9181601f840112156101b55782359167ffffffffffffffff83116101b5576020808501948460051b0101116101b557565b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55761143a610192565b506114436101ba565b5060443567ffffffffffffffff81116101b5576114649036906004016113d2565b505060643567ffffffffffffffff81116101b5576114869036906004016113d2565b505060843567ffffffffffffffff81116101b5576114a8903690600401610221565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55761150c610192565b506115156101ba565b5060843567ffffffffffffffff81116101b557611536903690600401610221565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043561159c6101ba565b604435916bffffffffffffffffffffffff83168093036101b557303303610c39578273ffffffffffffffffffffffffffffffffffffffff836116277febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1967fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606097881b161785612e6b565b6040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906001820180921161167857565b61163b565b9190820180921161167857565b90611694826103c4565b6116a16040519182610347565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06116cf82946103c4565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805182101561171c5760209160051b010190565b6116d9565b919082519283825260005b84811061176b5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b8060208092840101518282860101520161172c565b9080602083519182815201916020808360051b8301019401926000915b8383106117ac57505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c08061181f604085015160e0604086015260e0850190611721565b936060810151606085015260808101511515608085015260a0810151151560a085015201519101529701930193019193929061179d565b906020808351928381520192019060005b8181106118745750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611867565b805160ff168252610468916020828101511515908201526101006118fe6118d860408501516101206040860152610120850190611780565b606085015160608501526080850151608085015260a085015184820360a0860152611721565b9260c081015160c084015260e081015160e0840152015190610100818403910152611856565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b9161197a61046894926040855260408501906118a0565b926020818503910152611924565b906119a5929161199661204f565b906003825260e0820152611e9a565b50156119cf577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b6040513d6000823e3d90fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156101b5570180359067ffffffffffffffff82116101b5576020019181360383136101b557565b909173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115611126578133036110f85780611ae5575b5050611ad57f1626ba7e0000000000000000000000000000000000000000000000000000000092610927836101007fffffffff000000000000000000000000000000000000000000000000000000009501906119e0565b1603611ae057600090565b600190565b813b156101b5576040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015291600091839160249183915af19283156110f3576109277fffffffff0000000000000000000000000000000000000000000000000000000093611ad5937f1626ba7e0000000000000000000000000000000000000000000000000000000096611b86575b5093505092611a7e565b806110e76000611b9593610347565b38611b7c565b91939290611baa905a936121df565b9160608301516080840151611bbe82612982565b818103611c5d57509060017f1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881920190611bf78282612eb0565b604080519182526020820192909252a1611c12828685611e9a565b929015611c25575061039793945061255e565b8361083e87926040519384937fa2b6d61b00000000000000000000000000000000000000000000000000000000855260048501611963565b917f9b6514f40000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf85480610468575060405160208101907f53657175656e6365207369676e65723a0a00000000000000000000000000000082527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660318201526001604582015260458152611d25606582610347565b519020600052600160205260406000206000526000602052604060002060005273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016602052604060002090565b916020610468938181520191611924565b3d15611dc3573d90611da9826103dc565b91611db76040519384610347565b82523d6000602084013e565b606090565b600436108015611dd55750565b611e0b906000357fffffffff00000000000000000000000000000000000000000000000000000000811691611e5d575b506120aa565b73ffffffffffffffffffffffffffffffffffffffff8116611e295750565b60008091604051368382378036810184815203915af4611e47611d98565b9015611e5557602081519101f35b602081519101fd5b7fffffffff000000000000000000000000000000000000000000000000000000008092503660040360031b1b161638611e05565b901561171c5790565b611ecd611ea78484611e91565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f800000000000000000000000000000000000000000000000000000000000000080821614611f505750611f05926000928392612ac9565b905091909192808210611f20575050611f1d90613ce1565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f0200000000000000000000000000000000000000000000000000000000000000908116146020820152611f86925090506128f4565b90611f90826129c8565b4281111561201d575073ffffffffffffffffffffffffffffffffffffffff81168015159081612012575b50611fc6575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b905033141538611fba565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff821117610326576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b73ffffffffffffffffffffffffffffffffffffffff906040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a120845216604082015260408152612121606082610347565b519020541690565b90612133826103c4565b6121406040519182610347565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061216e82946103c4565b019060005b82811061217f57505050565b60209060405161218e8161030a565b60008152600083820152606060408201526000606082015260006080820152600060a0820152600060c082015282828501015201612173565b909392938483116101b55784116101b5578101920390565b906121e861204f565b6000815291600190803560f81c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316016124b75750600060608601525b600761223760ff831660011c90565b1680612466575b50601081811603612438575060015b61225681612129565b604086019081526000925b82841061229e5750505050036122745790565b7f0bdf80380000000000000000000000000000000000000000000000000000000060005260046000fd5b9293919290918082013560f81c9060010194908560018083160361241657506122e8306122cc848751611708565b519073ffffffffffffffffffffffffffffffffffffffff169052565b6002808216146123f6575b6004808216146123a8575b600880821614612373575b9061235a61235460c0846123346010806001981614608061232b888c51611708565b51019015159052565b61234a60208083161460a061232b888c51611708565b1660061c60031690565b60ff1690565b60c0612367838751611708565b51015201929190612261565b946001919061235a906123549060c09086810135906020019990606061239a878b51611708565b510152939450505050612309565b946123f0908381013560e81c906003016123e96123d06123c8848461167d565b838c896121c7565b919060406123df888b51611708565b5101923691610416565b905261167d565b946122fe565b9482810135906020019590602061240e848751611708565b5101526122f3565b61243396508381013560601c9060140196906122cc848751611708565b6122e8565b60209081160361245557600282019181013560f01c905b9061224d565b600182019181013560f81c9061244f565b6124aa919383929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b929060808601523861223e565b80830135606090811c908701526014019250612228565b6124e6604092959493956060835260608301906118a0565b9460208201520152565b9261046896959260c09592855260208501526040840152606083015260808201528160a08201520190611721565b604090610468939281528160208201520190611721565b61254b61046894926060835260608301906118a0565b9260208201526040818403910152611721565b916000604082019384515190825b82811061257d575b50505050505050565b612588818851611708565b519361259760a0860151151590565b8061287b575b612841575060009360608101518015801580612838575b6128005784906125c76080850151151590565b156127ba57612672926125ee855173ffffffffffffffffffffffffffffffffffffffff1690565b91156127b457505a905b61266d8b61264160608d01516040890151908c8b604051998a967f4c4e814c000000000000000000000000000000000000000000000000000000006020890152602488016124f0565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284610347565b612e3e565b156126bb575b50600190867f5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a604051806126b185829190602083019252565b0390a25b0161256c565b60c00180511561276b57600181511461272c57516002146126dc5738612678565b93505050507fc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b91925061270d612e50565b9061271d6040519283928361251e565b0390a238808080808080612574565b508461083e612739612e50565b6040519384937f7f6b0bb100000000000000000000000000000000000000000000000000000000855260048501612535565b50925060018093867f115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d6127ac61279f612e50565b604051918291868361251e565b0390a26126b5565b906125f8565b83516127f593925073ffffffffffffffffffffffffffffffffffffffff16916020850151916000146127fa57505a905b604085015192612e2c565b612672565b906127ea565b838861083e5a6040519384937f21395274000000000000000000000000000000000000000000000000000000008552600485016124ce565b50815a106125b4565b9350600190867f9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b604051806127ac85829190602083019252565b50801561259d565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b1660318301526045820152604581526128ee606582610347565b51902090565b6129566128ee61291461290e602085015115153090612f2e565b93613029565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610347565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e83526040820152604081526129c1606082610347565b5190205490565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612a07606082610347565b51902054906bffffffffffffffffffffffff8260601c921690565b60405190612a2f8261032b565b60006020838281520152565b60031115612a4557565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b908160409103126101b557602060405191612a8e8361032b565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff61046894931681528160208201520190611721565b909491939291853560f81c600190938190612ae2612a22565b92612aec82612a3b565b60018203612cf6575b50600180871614612c95575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908096918196602016612b649060051c90565b612b6d9061166a565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a81612bb9846128f4565b988993612bc5936121c7565b91612bcf9361346b565b9098612be391600052602052604060002090565b90612bf691600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16612c1f91600052602052604060002090565b94815190868215159283612c8a575b505081612c7b575b50612c3e5750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b90506020820151101538612c36565b141591508638612c2e565b909691939450612ca781989398612a3b565b612ccc57612cc19581612cb9936121c7565b93909261321e565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06040881601612af5578981013560601c9750601401915087878a84612d3f85612a3b565b60028503612d50575b505050612af5565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c92604092612dd5929091612da091612d99918a90612d93898361167d565b926121c7565b3691610416565b83519586809481937fccce3bc80000000000000000000000000000000000000000000000000000000083523060048401612a9c565b0392165afa80156110f357612df392600091612dfd575b509361167d565b9087388a81612d48565b612e1f915060403d604011612e25575b612e178183610347565b810190612a74565b38612dec565b503d612e0d565b9160009391849360208451940192f190565b9160009291839260208351930191f490565b3d90604051916020818401016040528083526000602084013e565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612eaa606082610347565b51902055565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8352604082015260408152612eaa606082610347565b60405160208101917fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208352604082015260408152612eaa606082610347565b15612fde576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a081526128ee60c082610347565b4690612f37565b805160209091019060005b818110612ffd5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612ff0565b61010081015160405161304481612956602082018095612fe5565b51902090613053815160ff1690565b60ff8116806130cc575050906128ee61306f6040840151613d1b565b9261295660806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b6001810361312a57505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466938101938452908101919091526060810192909252906128ee8160808101612956565b6002810361318057505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4602082019081529181019290925260608201929092526128ee8160808101612956565b6003036131d4575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466602082019081529181019290925260608201929092526128ee8160808101612956565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b906124e69060409396959496606084526060840191611924565b919492909260009560009560009560009560009561323a61204f565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b82811061329157505050505050508051151580613283575b612c3e5750565b50602081015184111561327c565b600381019d50959b50939950919750929091906132b5908b9085013560e81c61167d565b958287036133f5578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c036133c65750613302916132fb898c9387896121c7565b908b612ac9565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106133805750928b885114613377575b808b101561334557508a60c08501528992959295949194939093613264565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b60008852613326565b8d8f61083e61339185858c8e6121c7565b9390926040519485947fb006aba000000000000000000000000000000000000000000000000000000000865260048601613204565b979899809b926133db8b6133e294888a6121c7565b9086612ac9565b50929d919c909b929a9092918e8e613316565b8a6002916132c2565b908160209103126101b55751610468816109e2565b604090610468949281528160208201520191611924565b73ffffffffffffffffffffffffffffffffffffffff610468959360609383521660208201528160408201520191611924565b908160209103126101b5575190565b9391909360009460009460005b818110613486575050505050565b8481013560f881901c9860019092019788979692909160fc1c988915613c7a575060018914613c3a5760028914613a6d5760038914613a3e57600489146139bd576006891461391d57600589146138cf576007891461380857600889146137b2576009891461368957600a8914613526577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b90919293949596975060038916978815613678575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908101908161359e9187876121c7565b6040517f898bd921000000000000000000000000000000000000000000000000000000008152939184916135d6918a60048501613413565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156110f35761361993600093613645575b5060ff909a168091019a613f7c565b90801561363f579061363391600052602052604060002090565b955b9392919093613478565b50613633565b60ff91935061366a9060203d8111613671575b6136628183610347565b81019061345c565b929061360a565b503d613658565b8084013560f81c985060010161353b565b909192939495969750600389169788156137a1575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190810190816137019187876121c7565b6040517f13792a4a00000000000000000000000000000000000000000000000000000000815293918491613739918b60048501611963565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156110f35761377b93600093613645575060ff909a168091019a613f7c565b90801561379b579061379591600052602052604060002090565b95613635565b50613795565b8084013560f81c985060010161369e565b9850602087019750949593949293919290918201356137d086613f23565b81146137e0575b61377b90613f3d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98506137d7565b975090919293949597600f169687156138bd575b6020600061382e61389b9a9b86613e56565b9c9092918a604051613871816129568a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156110f35761377b9060ff6000519a1680910199612883565b600189019883013560f81c975061381c565b9850602087019750949593949293919290918201358085146138f5575b61377b90613ee4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98506138ec565b989091929394959662ffffff985061393f612354600c8416603f9060021c1690565b9182156139a9575b6003168015613998575b90819061397c90613974908781013560e81c906003019c168c01809c89896121c7565b90898b61346b565b91111561398f575b9061377b9291613e99565b99820199613984565b50600281019084013560f01c613951565b8482013560f81c9250600190910190613947565b975097613a13613a20929394959697600f613a2893169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866121c7565b90868861346b565b9061379592980198600052602052604060002090565b98509650939492939192909190808201359060200196801561379b579061379591600052602052604060002090565b90919293949596975060038916978815613c29575b8084013560601c99613ae19160140190613aa19060021c600316612354565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b90810190613b4560208c613af785858b8b6121c7565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501613413565b0392165afa9081156110f3577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091613bfb575b501603613bb757509060ff61377b92991680910199612883565b61083e613bc88c93899389896121c7565b906040519485947fb2fed7ae0000000000000000000000000000000000000000000000000000000086526004860161342a565b613c1c915060203d8111613c22575b613c148183610347565b8101906133fe565b38613b9d565b503d613c0a565b8381013560f81c9850600101613a82565b98600f91929394959697985016968715613c69575b601481019761377b9160ff9091169084013560601c612883565b8281013560f81c9750600101613c4f565b98509091929394959698600f16978815613ccc575b5060206000613ca261389b9a9b86613e56565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c97506020613c8f565b613ce9611c91565b1490565b805160209091019060005b818110613d055750505090565b8251845260209384019390920191600101613cf8565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613d61613d4b836103c4565b92613d596040519485610347565b8084526103c4565b0136602083013760005b8351811015613e3d5780613d8160019286611708565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152613e2961012082610347565b519020613e368285611708565b5201613d6b565b509091506040516128ee81612956602082018095613ced565b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff81116116785791565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a00000000000000008552603884015260588301526078820152607881526128ee609882610347565b60405160208101917f53657175656e636520737461746963206469676573743a0a000000000000000083526038820152603881526128ee605882610347565b6129566128ee61291461290e600060208601511515612f2e565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a83526040820152604081526128ee606082610347565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d81526128ee608d8261034756fea264697066735822122070d2ccb5d2e8d1051d4fbeee4718ed4044611e6d09516015fc4e660973e187a464736f6c634300081c0033","sourceMap":"438:410:49:-:0;;;;;;;;;-1:-1:-1;438:410:49;;;;;;:::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;:::-;;;;;;;;;;;2409:4:69;438:410:49;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;438:410:49;;;;;;:::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:72;;;;;;4788:48;4802:33;:22;;438:410:49;4802:33:72;:::i;:::-;4788:48;:::i;:::-;4848:13;-1:-1:-1;4898:3:72;4867:22;;438:410:49;;4863:33:72;;;;;4930:25;4911:44;4930:25;;;4834:1;4930:25;;:::i;:::-;438:410:49;;;;;4930:25:72;4911:44;;;;:::i;:::-;438:410:49;;;;;;4911:44:72;438:410:49;4848:13:72;;4863:33;;;;;;4968:57;5015:10;4968:57;4982:22;;438:410:49;4968:57:72;;:::i;:::-;5031:38;5094:41;;;;;:::i;:::-;5145:8;;5141:81;;438:410:49;;4834:1:72;438:410:49;;;;;5141:81:72;5170:45;438:410:49;;;5170:45:72;;;;;;438:410:49;5170:45:72;;;:::i;:::-;;;;438:410:49;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3351:31:65;438:410:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1358:19:65;438:410:49;;;;;:::i;:::-;1358:19:65;:::i;:::-;438:410:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;394:41:71;309:1:70;430:66;394:41:71;796:43:70;792:86;;993:1;260:41:71;309:1:70;430:66;260:41:71;993:1:70;:::i;:::-;250;430:66;260:41:71;438:410:49;792:86:70;856:15;-1:-1:-1;856:15:70;438:410:49;-1:-1:-1;856:15:70;438:410:49;;;;;;;;;;;;;401:4:74;379:10;:27;375:75;;2112:24:77;;2108:69;;438:410:49;260:41:71;2241:28:77;260:41:71;606:66:77;260:41:71;438:410:49;;;;;2241:28:77;438:410:49;2108:69:77;2153:17;-1:-1:-1;2153:17:77;438:410:49;-1:-1:-1;2153:17:77;375:75:74;423:20;-1:-1:-1;423:20:74;379:10;438:410:49;;;-1:-1:-1;423:20:74;438:410:49;;;;;;;;;;;;;:::i;:::-;401:4:74;379:10;:27;375:75;;438:410:49;2005:19:65;;;:::i;:::-;438:410:49;2005:33:65;2001:87;;438:410:49;;2492:37:65;438:410:49;;2439:41:65;438:410:49;2439:41:65;;:::i;:::-;438:410:49;;;;;;;;;;2492:37:65;438:410:49;2001:87:65;438:410:49;2055:26:65;;-1:-1:-1;2055:26:65;438:410:49;;;;-1:-1:-1;2055:26:65;438:410:49;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;918:45:77;438:410:49;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;401:4:74;;379:10;:27;375:75;;2274:33:63;2387:7;2226:9;;2274:33;;:::i;:::-;2330:21;;;;:::i;:::-;2387:7;;:::i;438:410:49:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;3526:28:65;438:410:49;;;;;;;;;;;;;;;806:50:68;438:410:49;;806:50:68;:::i;438:410:49:-;;;;;;;;;;;;2500:26:72;438:410:49;;2500:26:72;:::i;:::-;438:410:49;;;;;;;;;;;;;;;;;;;:::i;:::-;394:41:71;309:1:70;430:66;394:41:71;796:43:70;792:86;;309:1;430:66;260:41:71;438:410:49;1714:10:64;438:410:49;1714:24:64;;1710:69;;1789:10;:24;1785:81;;1872:4;:26;;;;;438:410:49;1736:1:64;438:410:49;;;1872:26:64;;;;;438:410:49;1872:26:64;;438:410:49;1872:26:64;;;:::i;:::-;;:4;;;:26;;;;;;;;250:1:70;430:66;260:41:71;438:410:49;1872:26:64;;;1736:1;1872:26;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;1785:81::-;1830:29;1736:1;1830:29;1789:10;438:410:49;;;1736:1:64;1830:29;1710:69;1755:17;1736:1;1755:17;438:410:49;1736:1:64;1755:17;438:410:49;;;;;;;;;;;;;;;591:35:64;438:410:49;;;;;;;;;;;;;;;;;608:526:67;596:4;608:526;;;;438:410:49;;;;;;;;608:526:67;;438:410:49;596:4:67;;608:526;438:410:49;608:526:67;;;;;;;;;;;;;438:410:49;608:526:67;;;;;;;;438:410:49;;;;;6003:78:72;-1:-1:-1;438:410:49;;;;:::i;:::-;6003:78:72;;:::i;:::-;809:31:49;;;;2402:11:77;;:::i;:::-;2388:25;;438:410:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;401:4:74;;379:10;:27;375:75;;438:410:49;1667:19:65;;;:::i;:::-;438:410:49;1663:88:65;;2492:37;438:410:49;;;;;;;;2439:41:65;;;;:::i;:::-;438:410:49;;;;;;;;;2492:37:65;438:410:49;1663:88:65;438:410:49;1717:27:65;;-1:-1:-1;1717:27:65;438:410:49;;;;-1:-1:-1;1717:27:65;438:410:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;438:410:49;;2946:37:65;438:410:49;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;2696:32:65;438:410:49;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;401:4:74;379:10;:27;375:75;;438:410:49;;;2043:85:72;2998:47;438:410:49;;;;;;;2051:76:72;2043:85;;:::i;:::-;438:410:49;;;;;;;;;;;;;;2998:47:72;438:410:49;;;;;;;;;;;;;4834:1:72;438:410:49;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;438:410:49;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;438:410:49;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;438:410:49;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;5290:320:72:-;;5476:40;5290:320;;438:410:49;;:::i;:::-;2644:4:69;;;;4882:15;;;2644:4;5476:40:72;:::i;:::-;5526:8;;5522:45;;438:410:49;5290:320:72;:::o;5522:45::-;438:410:49;5544:16:72;:::o;438:410:49:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;814:660:64:-;;;438:410:49;992:10:64;438:410:49;992:24:64;;;988:69;;1067:10;;:24;1063:81;;1206:24;1202:123;;814:660;1364:16;;1335:46;438:410:49;1364:16:64;;;;438:410:49;1364:16:64;;;;:::i;1335:46::-;438:410:49;1335:75:64;1331:124;;438:410:49;814:660:64;:::o;1331:124::-;585:1;1420:28;:::o;1202:123::-;1240:78;;;;;438:410:49;;;1240:78:64;;1312:4;1240:78;;;438:410:49;;-1:-1:-1;;438:410:49;;;;;;1240:78:64;;;;;;;1364:16;438:410:49;1240:78:64;1335:46;1240:78;438:410:49;1240:78:64;;;1202:123;;;;;;;;1240:78;;;438:410:49;1240:78:64;;;:::i;:::-;;;;1509:486:63;;;;;1704:33;1509:486;1656:9;1704:33;;:::i;:::-;1758:13;;;;438:410:49;1773:13:63;;;438:410:49;806:50:68;;;:::i;:::-;1131:22;;;1127:88;;438:410:49;;1267:1:68;1319:29;438:410:49;;986:15:68;;;;;:::i;:::-;438:410:49;;;;;;;;;;;;;1319:29:68;1826:40:63;;;;;:::i;:::-;1877:8;;;1873:73;;1982:7;;;;;;:::i;1873:73::-;438:410:49;1902:37:63;438:410:49;;;;1902:37:63;;;;;;;;;;:::i;1127:88:68:-;1170:38;;-1:-1:-1;1170:38:68;;438:410:49;;;;;;-1:-1:-1;1170:38:68;1248:735:77;606:66;394:41:71;1376:21:77;1372:56;;1636:50;438:410:49;;2304:54:73;;;438:410:49;;;;;1677:4:77;438:410:49;;;;;;;1684:1:77;438:410:49;;;;;2304:54:73;;;;;;:::i;:::-;438:410:49;2294:65:73;;438:410:49;545:85:92;1684:1:77;2304:54:73;545:85:92;438:410:49;;545:85:92;438:410:49;545:85:92;438:410:49;2304:54:73;545:85:92;438:410:49;;545:85:92;438:410:49;545:85:92;438:410:49;1927:20:77;438:410:49;2304:54:73;545:85:92;438:410:49;;545:85:92;1248:735:77;:::o;438:410:49:-;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;438:410:49;;;;:::o;:::-;;;:::o;3638:392:65:-;3695:1;3676:8;:20;;;3672:354;;3638:392;:::o;3672:354::-;3723:27;3733:16;3676:8;438:410:49;;;;;;;3672:354:65;3723:27;;:::i;:::-;438:410:49;;;3758:262:65;;3638:392;:::o;3758:262::-;3676:8;438:410:49;;;;3676:8:65;438:410:49;;;3676:8:65;;438:410:49;;;;;3832:29:65;;;;;;:::i;:::-;3871:141;;;;;;;;;;;;;;;;;438:410:49;;3676:8:65;;;;3695:1;438:410:49;;;;;;;;;;;;;;;:::o;3301:1229:72:-;3555:13;;;;;:::i;:::-;;438:410:49;;;;3555:13:72;438:410:49;3579:20:72;;;:28;3575:521;;4286:78;;;3566:1;4286:78;;;;:::i;:::-;4238:126;;;;;4402:18;;;;4398:87;;809:31:49;;;;;:::i;:::-;3301:1229:72;:::o;4398:87::-;4437:41;3566:1;4437:41;3864:48;438:410:49;;;;1736:1:64;1830:29;3575:521:72;438:410:49;3673:20:72;;;:28;3652:18;;;438:410:49;3718:15:72;;-1:-1:-1;3673:20:72;-1:-1:-1;3718:15:72;:::i;:::-;3778:27;;;;:::i;:::-;3830:15;3817:28;;;3813:108;;438:410:49;;;;3933:18:72;;;:40;;;;3575:521;3929:131;;;4068:21;4076:4;4068:21;;:::o;3929:131::-;3992:59;3566:1;3992:59;;438:410:49;;;4034:10:72;438:410:49;;;;;;;1736:1:64;1830:29;3933:40:72;3963:10;;;3955:18;;3933:40;;;3813:108;3864:48;3566:1;3864:48;;438:410:49;;;;;;1736:1:64;1830:29;438:410:49;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;438:410:49;;-1:-1:-1;438:410:49;;;;;;;;;-1:-1:-1;438:410:49;;;;-1:-1:-1;438:410:49;;;;;;;;;-1:-1:-1;438:410:49;;;;-1:-1:-1;438:410:49;;;;;;:::o;2134:172:65:-;438:410:49;2134:172:65;438:410:49;;;753:25:71;;;;:66:65;438:410:49;;;;;;;;753:25:71;;;;;;:::i;:::-;438:410:49;743:36:71;;785:40;438:410:49;2134:172:65;:::o;2409:4:69:-;;438:410:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;2409:4:69;;;;;:::i;:::-;;;-1:-1:-1;2409:4:69;;;;;;;;;:::o;:::-;;438:410:49;;;;;;:::i;:::-;-1:-1:-1;2409:4:69;;-1:-1:-1;2409:4:69;;;;438:410:49;;2409:4:69;;;-1:-1:-1;438:410:49;2409:4:69;;;-1:-1:-1;2409:4:69;;;;-1:-1:-1;2409:4:69;;;;-1:-1:-1;2409:4:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4915:2802::-;;438:410:49;;:::i;:::-;;2644:4:69;;;566:109:91;;;;;;;5219:25:69;:17;;;:25;5232:4;;5254:14;2409:4;5254:14;;;2644:4;5215:140;5452:4;5433:15;438:410:49;;;;2409:4:69;;;5433:15;5432:24;5467:13;5463:122;;5215:140;-1:-1:-1;5691:4:69;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:91;;;;;;798:135;;;;;;;;;6132:44:69;;;5232:4;6283:12;;;:20;5232:4;;6370;6339:36;6370:4;6339:17;:14;;;:17;:::i;:::-;;438:410:49;;;;;;6339:36:69;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;438:410:49;;;;;;7297:55:69;7420;7462:4;7454:12;;;:20;7420:30;:17;:14;;;:17;:::i;:55::-;7587:12;438:410:49;2409:4:69;;;;;7586:19;438:410:49;;;;7550:55:69;7595:4;7550:17;:14;;;:17;:::i;:::-;;:33;2644:4;438:410:49;6071:13:69;;;;;7109:112;1983:226:91;5232:4:69;;1983:226:91;7550:55:69;;7586:19;;7595:4;;2102:103:91;;;;;;;7146:14:69;;:26;:17;:14;;;:17;:::i;:::-;;:26;2644:4;7109:112;;;;;;;;6748:287;1201:256:91;7003:23:69;;1318:135:91;;;;;;;;;2409:4:69;6955:38;6970:22;1318:135:91;;6970:22:69;:::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:91;2102:103;;;;;;;6610:14:69;;7462:4;6610:17;:14;;;:17;:::i;:::-;;:23;2644:4;6573:109;;6279:226;6435:61;;-1:-1:-1;1840:135:91;;;;;;;;;6436:14:69;;:17;:14;;;:17;:::i;6435:61::-;6279:226;;5674:320;5835:4;5822:17;;;:25;5835:4;;1058:135:91;;;;;;;;;;5818:170:69;5674:320;;;5818:170;798:135:91;;;;;;;;;;5818:170:69;;5463:122;2213:380:91;;;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;5514:64:69;;5515:14;;;2644:4;5463:122;;;5215:140;1840:135:91;;;;;;;;5294:14:69;;;2644:4;1840:135:91;;;-1:-1:-1;5215:140:69;;438:410:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2745:4:69:-;;;;;;438:410:49;;2745:4:69;;;;;;;;:::i;2851:::-;;;;;;;;;;;;;:::i;:::-;;;;;438:410:49;2851:4:69;;;;;;;;:::i;2404:1875:63:-;;2541:5;2572:14;;;;;;438:410:49;2604:13:63;;2619:12;;;;;;2599:1676;2404:1875;;;;;;;:::o;2633:3::-;2673:17;:14;;;:17;:::i;:::-;;2757;438:410:49;2757:17:63;;;438:410:49;;;;;;2757:31:63;;;2633:3;2753:102;;2981:17;2541:5;3026:13;;;;438:410:49;3051:13:63;;;;:37;;;2633:3;3047:105;;3160:12;;438:410:49;3184:17:63;;;438:410:49;;;;;;3184:17:63;;;3225:348;438:410:49;;;;;;;;;3277:36:63;;;;3293:9;;3277:36;;3325:238;3514:14;3325:238;3026:13;3514:14;;438:410:49;2572:14:63;3542:9;;;438:410:49;;;2572:14:63;438:410:49;3325:238:63;;;3361:55;3325:238;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;3225:348;:::i;:::-;3714:8;3710:520;;3180:522;438:410:49;;;;4243:25:63;2572:14;438:410:49;4243:25:63;;;;438:410:49;;;;;;;;4243:25:63;;;;2604:13;438:410:49;2604:13:63;;3710:520;3738:20;;438:410:49;;3738:53:63;3734:180;;438:410:49;;;3928:56:63;3924:136;;438:410:49;2955:4:69;4074:55:63;4070:152;;3710:520;;;4070:152;4172:21;;;;;4148:46;4172:21;;;;;:::i;:::-;438:410:49;4148:46:63;2572:14;438:410:49;4148:46:63;;;;;:::i;:::-;;;;4206:5;;;;;;;;;3924:136;4027:21;;4005:44;4027:21;;:::i;:::-;2572:14;438:410:49;4005:44:63;;;;;;;;;;:::i;3734:180::-;3805:16;;;438:410:49;3805:16:63;3861:21;;3838:45;;3861:21;;:::i;:::-;2572:14;438:410:49;3838:45:63;;;;;;:::i;:::-;;;;3895:8;;3277:36;;;;3180:522;438:410:49;;3610:83:63;;438:410:49;-1:-1:-1;438:410:49;;3633:10:63;;;;438:410:49;3645:36:63;;;;;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;438:410:49;3107:36:63;;;;;;;;;;:::i;3051:37::-;3068:9;;;:20;3051:37;;2753:102;438:410:49;;;;;2805:23:63;2572:14;438:410:49;2805:23:63;;;;438:410:49;;;;;;;;2757:31:63;2778:10;;;2757:31;;2183:181:73;;438:410:49;;2304:54:73;438:410:49;2304:54:73;;;438:410:49;;;;;;;;;;;;;;;;2304:54:73;;;;;;:::i;:::-;438:410:49;2294:65:73;;2183:181;:::o;9411:274:69:-;9631:48;;9590:18;9513:50;9529:18;;;438:410:49;;;9557:4:69;9513:50;;:::i;:::-;9590:18;;:::i;:::-;438:410:49;;9631:48:69;;;9529:18;9631:48;;;;438:410:49;;;;;;;;;;;;;;;;;;9631:48:69;;;;;;;;;:::i;632:197:71:-;438:410:49;;753:25:71;;;;543:66:68;438:410:49;;;;;;;753:25:71;;;;;;:::i;:::-;438:410:49;743:36:71;;785:40;632:197;:::o;1637:245:72:-;438:410:49;;753:25:71;;;;834:66:72;438:410:49;;;;;;;753:25:71;;;;;;:::i;:::-;438:410:49;743:36:71;;785:40;2409:4:69;438:410:49;2409:4:69;753:25:71;2409:4:69;438:410:49;;1637:245:72;:::o;438:410:49:-;;;;;;;:::i;:::-;-1:-1:-1;438:410:49;;;;;;;:::o;:::-;;-1:-1:-1;438:410:49;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;3199:3386:73:-;;;;;;;566:109:91;;;;;3504:69:73;;;3999:24;438:410:49;;:::i;:::-;;;;;:::i;:::-;4216:35:73;4200:51;;4196:870;;3199:3386;5139:20;4216:35;5139:20;;;:28;5135:242;;-1:-1:-1;5485:4:73;5469:20;;;:28;5448:18;;;438:410:49;2409:4:69;438:410:49;2409:4:69;;;;2363:226:91;;;;;;;;;;;;;;;;;;;;;;;;;5639:67:73;;;;;5811:20;5448:18;5811:20;5810:27;;438:410:49;2409:4:69;;;5810:27:73;5809:33;;;:::i;:::-;2363:226:91;;;;;;;;;;;;;;;;;;;;;;;;;5850:65:73;;;;5961:15;;;;;:::i;:::-;6036:19;;;;;;:::i;:::-;6004:52;;;;:::i;:::-;5982:74;6075:50;;;545:85:92;;;;;;;461:173;;6075:50:73;6143:51;;;545:85:92;;;;;;;461:173;;6143:51:73;438:410:49;;;6212:72:73;;545:85:92;;;;;;;461:173;;6212:72:73;438:410:49;;;6429:32:73;;;;;:67;;;;3199:3386;6429:104;;;;;3199:3386;6425:156;;;3199:3386;:::o;6425:156::-;438:410:49;;6550:24:73;;;438:410:49;;6550:24:73;;;438:410:49;;;;;;;;;;;;5170:45:72;6429:104:73;6514:19;;5448:18;6514:19;;438:410:49;-1:-1:-1;6500:33:73;6429:104;;;:67;6465:31;;;-1:-1:-1;6429:67:73;;;;5135:242;438:410:49;;;;;;;;;;;;:::i;:::-;5177:109:73;;5300:70;5350:19;;;;;:::i;:::-;5300:70;;;;:::i;:::-;5293:77;;;;;;;;;:::o;5177:109::-;5235:42;-1:-1:-1;5235:42:73;;-1:-1:-1;5235:42:73;4196:870;-1:-1:-1;;;4401:28:73;4417:4;4401:20;;:28;4196:870;4397:663;1840:135:91;;;;;;;-1:-1:-1;1840:135:91;;;-1:-1:-1;4441:56:73;1840:135:91;;;438:410:49;3162:307:91;438:410:49;:::i;:::-;4528:28:73;4512:44;;4508:544;;4397:663;;;;4196:870;;4508:544;1318:135:91;;;;-1:-1:-1;1201:256:91;;-1:-1:-1;438:410:49;;1318:135:91;;;;;;4417:4:73;;4925:73;;4417:4;;2409::69;;4820:48:73;;1318:135:91;;4838:29:73;1318:135:91;;4838:29:73;:::i;:::-;4820:48;;:::i;:::-;2409:4:69;;;:::i;:::-;438:410:49;;4925:73:73;;;;;;438:410:49;4925:73:73;;4974:4;4925:73;;;;:::i;:::-;;438:410:49;;4925:73:73;;;;;;5011:30;4925:73;-1:-1:-1;4925:73:73;;;4508:544;4914:84;5011:30;;:::i;:::-;4508:544;;;;;;;4925:73;;;;4417:4;4925:73;4417:4;4925:73;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;1431:196:92;;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:71:-;438:410:49;;552:25:71;;;;834:66:72;438:410:49;;;;;;;552:25:71;;;;;;:::i;:::-;438:410:49;542:36:71;;584:40;443:185::o;:::-;438:410:49;;552:25:71;;;;543:66:68;438:410:49;;;;;;;552:25:71;;;;;;:::i;443:185::-;438:410:49;;552:25:71;;;;753:66:65;438:410:49;;;;;;;552:25:71;;;;;;:::i;1027:351:69:-;1294:48;;;-1:-1:-1;1294:48:69;;438:410:49;;;1165:202:69;;;;438:410:49;627:66:69;438:410:49;;797:66:69;438:410:49;956:66:69;;438:410:49;956:66:69;;;;438:410:49;956:66:69;;;438:410:49;;956:66:69;;;438:410:49;956:66:69;1165:202;;;;;;:::i;1294:48::-;1328:13;1294:48;;;438:410:49;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;8435:972:69;8573:22;;;;438:410:49;;8556:40:69;;438:410:49;8556:40:69;;;438:410:49;;;:::i;8556:40:69:-;438:410:49;8546:51:69;;438:410:49;;;;;;;;;;;;8608:34:69;438:410:49;;8682:14:69;;;8722:82;8672:25;438:410:49;8682:14:69;;;8672:25;:::i;:::-;8760:14;8722:82;8776:14;8760;;;438:410:49;8776:14:69;;438:410:49;;;;8722:82:69;;;8556:40;8722:82;;;;1887:66;;;;;;;;;438:410:49;1887:66:69;438:410:49;;1887:66:69;;;438:410:49;1887:66:69;;;438:410:49;1887:66:69;;;438:410:49;1887:66:69;438:410:49;1887:66:69;8604:799;2851:4;8822:29;;2851:4;;-1:-1:-1;;8917:16:69;;;438:410:49;;8556:40:69;438:410:49;;;8907:27:69;438:410:49;;;2067:66:69;8878:70;;;438:410:49;;;2067:66:69;;;438:410:49;;;;2067:66:69;;;438:410:49;;;;8878:70:69;;438:410:49;2067:66:69;;;8878:70;2067:66;8818:585;2955:4;8966:35;;2955:4;;-1:-1:-1;;9063:18:69;;438:410:49;;;;2262:66:69;8556:40;9028:67;;438:410:49;;;2067:66:69;;;438:410:49;;;;2067:66:69;;;438:410:49;;;;9028:67:69;438:410:49;2067:66:69;;;9028:67;2067:66;8962:441;2644:4;9113:28;2644:4;;-1:-1:-1;9290:15:69;;438:410:49;;;;2067:66:69;8556:40;9261:58;;438:410:49;;;2067:66:69;;;438:410:49;;;;2067:66:69;;;438:410:49;;;;9261:58:69;438:410:49;2067:66:69;;;9261:58;2067:66;9109:294;9370:26;438:410:49;9370:26:69;438:410:49;;9370:26:69;438:410:49;2570:4:69;1736:1:64;1830:29;438:410:49;;;;;;;;;;;;;;;;;;:::i;6589:1730:73:-;;;;;;438:410:49;6785:14:73;438:410:49;6801:17:73;438:410:49;6820:18:73;438:410:49;6840:14:73;438:410:49;;;;:::i;:::-;;2644:4:69;;6904:47:73;7003:17;;438:410:49;7034:26:73;;;;;;438:410:49;;;;;;;;;8195:33:73;;:71;;;7027:1158;8191:124;;6589:1730;:::o;8195:71::-;8246:20;;;;438:410:49;8232:34:73;;;8195:71;;7027:1158;1318:135:91;;;;-1:-1:-1;1201:256:91;;-1:-1:-1;1201:256:91;;-1:-1:-1;1201:256:91;;-1:-1:-1;1201:256:91;;;;7198:16:73;;1318:135:91;;;;;;;7198:16:73;:::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;438:410:49;;;;7892:32:73;7888:89;;7371:355;7989:28;;;;7985:115;;8108:23;;;;;2644:4:69;8151:27:73;7027:1158;;;;;;;;;;;;7985:115;8036:55;438:410:49;8036:55:73;3864:48:72;438:410:49;;;;;;1736:1:64;1830:29;7888:89:73;438:410:49;2644:4:69;;7888:89:73;;7734:122;7801:26;;7775:72;7801:26;;;;;;:::i;:::-;438:410:49;;;;;7775:72:73;;;;;;;;;;:::i;7371:355::-;7662:26;;;;;;;;7639:78;7662:26;;;;:::i;:::-;7639:78;;;:::i;:::-;-1:-1:-1;7583:134:73;;;;;;;;;;;;;7371:355;;7265:97;;2955:4:69;7265:97:73;;;842:1;;;;;;;;;;;;;:::i;:::-;;;;;;438:410:49;;842:1:73;;;;;;;;:::i;:::-;438:410:49;842:1:73;;;;;438:410:49;;;842:1:73;;;438:410:49;842:1:73;;;;;;;;:::i;1206:::-;;;;;;;;;438:410:49;1206:1:73;:::o;8323:11084::-;;;;;438:410:49;8478:12:73;438:410:49;8516:14:73;438:410:49;8592:26:73;;;;;;8323:11084;;;;;:::o;8585:10812::-;798:135:91;;;;;;;;;;;;;;;;683:254;;;;2409:4:69;;9002:27:73;;;8998:864;;9922:20;585:1:64;9922:20:73;;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;438:410:49;19362:26:73;8953:1;438:410:49;;;;1736:1:64;1830:29;18033:1312:73;18347:16;;;;;;;;;885:1;18347:16;;18380:15;;;18376:99;;18033:1312;1840:135:91;;;;;;;;;18629:16:73;;438:410:49;2409:4:69;;;438:410:49;;2363:226:91;;;;;;;;;;;;;;;;;;;;;;;;;438:410:49;;;19015:26:73;;;;;;;:::i;:::-;438:410:49;;;18953:89:73;;438:410:49;;;;18953:89:73;;438:410:49;8953:1:73;18953:89;;;:::i;:::-;;438:410:49;;;;18953:89:73;;;;;;;;;;;;19185:51;18953:89;438:410:49;18953:89:73;;;18033:1312;19054:16;438:410:49;19054:16:73;438:410:49;;;;;19185:51:73;;:::i;:::-;19255:59;:18;;;;19276:31;;;545:85:92;;;;;;;461:173;;19276:31:73;19326:8;8585:10812;;;;;;;;19255:59;;;;18953:89;438:410:49;18953:89:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;18376:99;798:135:91;;;;;;;-1:-1:-1;798:135:91;;18376:99:73;;16671:1308;16977:16;;;;;;;;;885:1;16977:16;;17010:15;;;17006:99;;16671:1308;1840:135:91;;;;;;;;;17297:16:73;;438:410:49;2409:4:69;;;438:410:49;;2363:226:91;;;;;;;;;;;;;;;;;;;;;;;;;438:410:49;;;17648:26:73;;;;;;;:::i;:::-;438:410:49;;;17599:76:73;;438:410:49;;;;17599:76:73;;438:410:49;8953:1:73;17599:76;;;:::i;:::-;;438:410:49;;;;17599:76:73;;;;;;;;;;;;17819:51;17599:76;438:410:49;17599:76:73;;;17687:16;438:410:49;17687:16:73;438:410:49;;;;;17819:51:73;;:::i;:::-;17889:59;:18;;;;17910:31;;;545:85:92;;;;;;;461:173;;17910:31:73;17960:8;;;17889:59;;;;17006:99;798:135:91;;;;;;;-1:-1:-1;798:135:91;;17006:99:73;;16008:617;2926:232:91;-1:-1:-1;2102:103:91;;;;-1:-1:-1;2926:232:91;;;;;;;;;;2102:103;;;16323:28:73;2926:232:91;16323:28:73;:::i;:::-;16367:29;;16363:88;;16008:617;16478:38;;;:::i;16363:88::-;16421:17;;-1:-1:-1;16363:88:73;;14942:933;15290:16;;;;;;;;;15302:4;15290:16;15323:15;;;15319:99;;14942:933;15592:61;438:410:49;3511:494:91;15572:92:73;3511:494:91;;;;:::i;:::-;15491:53:73;;;;438:410:49;;;15592:61:73;;;;;;;;1080:1;;;;;;;;438:410:49;1080:1:73;;;15592:61;438:410:49;15582:72:73;;438:410:49;;;15572:92:73;;;;740:1;;;;438:410:49;740:1:73;;;;;438:410:49;;;;740:1:73;;;438:410:49;740:1:73;;;438:410:49;740:1:73;438:410:49;740:1:73;15572:92;;;;;;585:1:64;15572:92:73;;;;;15724:42;15572:92;438:410:49;;15572:92:73;438:410:49;;;;;15724:42:73;;:::i;15319:99::-;798:135:91;;;;;;;;;;-1:-1:-1;15319:99:73;;14377:518;2926:232:91;-1:-1:-1;2102:103:91;;;;-1:-1:-1;2926:232:91;;;;;;;;;;2102:103;;;14647:20:73;;;14643:79;;14377:518;14749:37;;;:::i;14643:79::-;14692:17;;-1:-1:-1;14643:79:73;;13061:1278;13430:16;;;;;;;;2409:4:69;13430:16:73;;13399:53;13424:28;13442:4;13430:16;;2409:4:69;;438:410:49;2409:4:69;;;;13399:53:73;13468:19;;;13464:107;;13061:1278;885:1;13617:16;13650:22;;13646:114;;13061:1278;1201:256:91;;;13947:60:73;;13980:26;;1318:135:91;;;;;;;;;2409:4:69;;438:410:49;;13980:26:73;;;;;:::i;:::-;13947:60;;;;:::i;:::-;14019:16;-1:-1:-1;14052:35:73;14048:92;;13061:1278;14167:63;;;;;:::i;14048:92::-;438:410:49;;;;14048:92:73;;13646:114;-1:-1:-1;1058:135:91;;;;;;;;;13646:114:73;;13464:107;798:135:91;;;;;;;-1:-1:-1;798:135:91;;;;;13464:107:73;;12370:656;12571:16;;;2213:380:91;12860:26:73;12571:16;;;;;;12583:4;12827:60;12571:16;;2213:380:91;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;438:410:49;;;;12860:26:73;;;;;:::i;:::-;12827:60;;;;:::i;:::-;;12964:31;12827:60;438:410:49;;12964:31:73;545:85:92;;;;;;;461:173;;12056:279:73;2926:232:91;-1:-1:-1;2926:232:91;-1:-1:-1;2926:232:91;;;;;;;;;2102:103;;;;;;;12245:59:73;:18;;;;12266:31;;;545:85:92;;;;;;;461:173;;10640:1383:73;10935:16;;;;;;;;;885:1;10935:16;;10968:15;;;10964:99;;10640:1383;1840:135:91;;;;;;;2213:380;;1840:135;;;11217:47:73;;438:410:49;2409:4:69;;;11236:28:73;2409:4:69;11217:47:73;2213:380:91;;;;;;2363:226;;;;;;;;;;;;;;;;;;;2213:380;;;438:410:49;;;11572:26:73;11531:68;;11572:26;;;;;;;:::i;:::-;438:410:49;;;;;;11531:68:73;;;;;;;438:410:49;11531:68:73;;8953:1;11531:68;;;:::i;:::-;;438:410:49;;11531:68:73;;;;;;;438:410:49;11531:68:73;438:410:49;11531:68:73;438:410:49;11531:68:73;;;10640:1383;438:410:49;;11531:97:73;11527:203;;11741:16;;438:410:49;11872:42:73;11741:16;438:410:49;;;;;11872:42:73;;:::i;11527:203::-;11651:66;11690:26;;;;;;;;:::i;:::-;438:410:49;;;11651:66:73;;;;;;8953:1;11651:66;;;:::i;11531:68::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10964:99;798:135:91;;;;;;;-1:-1:-1;798:135:91;;10964:99:73;;9918:676;10115:16;10127:4;10115:16;;;;;;;;;;10148:15;;;10144:99;;9918:676;1840:135:91;;;;10443:42:73;;438:410:49;;;;;1840:135:91;;;;;10443:42:73;:::i;10144:99::-;798:135:91;;;;;;;-1:-1:-1;798:135:91;;10144:99:73;;8998:864;9342:16;;;;;;;;;;9354:4;9342:16;9375:15;;;9371:99;;8998:864;3511:494:91;9624:27:73;438:410:49;3511:494:91;9624:27:73;3511:494:91;;;;:::i;:::-;9543:53:73;;;438:410:49;;9624:27:73;;;;;740:1;;;;438:410:49;740:1:73;;;;;438:410:49;;;;740:1:73;;;438:410:49;740:1:73;;;438:410:49;740:1:73;438:410:49;740:1:73;9371:99;798:135:91;;;;-1:-1:-1;798:135:91;;;;;;-1:-1:-1;9624:27:73;9371:99;;2278:140:77;2402:11;;:::i;:::-;2388:25;2278:140;:::o;438:410:49:-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;7977:454:69;;438:410:49;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;-1:-1:-1;8321:3:69;438:410:49;;8303:16:69;;;;;8359:8;;438:410:49;8359:8:69;;;:::i;:::-;;438:410:49;;;;7865:7:69;438:410:49;7865:7:69;;438:410:49;7884:6:69;438:410:49;7884:6:69;;;438:410:49;;;;;7874:17:69;7893:10;;;;438:410:49;7905:14:69;;;438:410:49;;;7921:14:69;7937:17;7921:14;;;438:410:49;;;7937:17:69;;438:410:49;;;;7824:138:69;438:410:49;7824:138:69;;438:410:49;1566:66:69;438:410:49;;;1566:66:69;;438:410:49;7893:10:69;1566:66;;438:410:49;7905:14:69;1566:66;;438:410:49;7921:14:69;1566:66;;438:410:49;7937:17:69;1566:66;;438:410:49;1566:66:69;;;438:410:49;1566:66:69;;;438:410:49;1566:66:69;7824:138;;;;;;:::i;:::-;438:410:49;7807:161:69;;8334:34;;;;:::i;:::-;2644:4;438:410:49;8288:13:69;;8303:16;;;;;438:410:49;;8397:28:69;;438:410:49;;8397:28:69;;438:410:49;;;:::i;3511:494:91:-;3690:173;;;;;;;;;;;;3998:2;3955:14;3931:39;;2409:4:69;438:410:49;2409:4:69;438:410:49;;;;;;3511:494:91;:::o;2368:210:73:-;;438:410:49;;2499:73:73;;;;438:410:49;;;;;;;;;;;;;;;;;2499:73:73;;;;;;:::i;2798:182::-;438:410:49;;2917:57:73;;;438:410:49;;;;;;;;;2917:57:73;;;;;;:::i;9689:280:69:-;9915:48;;9874:18;9803:44;438:410:49;9819:18:69;;;438:410:49;;;9803:44:69;:::i;2984:211:73:-;438:410:49;;3114:75:73;;;438:410:49;;;;;;;;;3114:75:73;;;;;;:::i;2582:212::-;;438:410:49;;2714:74:73;438:410:49;2714:74:73;;;438:410:49;;;;;;;;;;;;;;;;;;;;2714:74:73;;;;;;:::i","linkReferences":{},"immutableReferences":{"49707":[{"start":4148,"length":32},{"start":4507,"length":32},{"start":6730,"length":32}],"53733":[{"start":3591,"length":32},{"start":7516,"length":32}]}},"methodIdentifiers":{"DEFAULT_CHECKPOINTER()":"540e3ad9","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","validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)":"19822f7c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_entryPoint\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_defaultCheckpointer\",\"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\":\"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\":\"DEFAULT_CHECKPOINTER\",\"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\":[],\"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\":[{\"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 delegated implementation address\"}},\"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()\":{\"details\":\"Uses the stored imageHash or computes the counterfactual one assuming an EIP-7702 wallet\",\"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\"}},\"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\":\"Stage7702Module\",\"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\"},\"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\":{\"DEFAULT_CHECKPOINTER()\":{\"notice\":\"Checkpointer used at the wallet creation\"},\"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 current delegated 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\"},\"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 only stage of an EIP-7702 wallet\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Stage7702Module.sol\":\"Stage7702Module\"},\"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/Stage7702Module.sol\":{\"keccak256\":\"0x628bcbe897c8ea7b81fbed0bece05a1943b693630d46f2dae850e9c1e4f15ace\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://52c32fa9e49c0184fbb9db24328fe6eba2271dc08bfe7a097ef2f9f61981d093\",\"dweb:/ipfs/QmPSdRVSsgT99pdvUwzYMC3BVEQn3Szn3Ef466BD45KV9T\"]},\"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/Implementation7702.sol\":{\"keccak256\":\"0xb6d0a04d3d3b2f02797cdd46dad4ea6131e13b37091780bc8718d839ca24a8f4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2de6a94be7963b824e8755af3c4483cc50ba12094f3eb5443cb37304fd612dda\",\"dweb:/ipfs/QmZhDRFGjRvESoBTDesbFV4jVBj7aGY6QsE8fp6hm7NgFn\"]},\"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/Stage7702Auth.sol\":{\"keccak256\":\"0x6c9b38e76fc9912b628381a98e0c3c24e04b6e82ce6e6faf345fe68f0e79fcef\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://aa46ee0be9ad3df1806e8c0aeecf965ebd205d516837f459033154e136ad8a2c\",\"dweb:/ipfs/QmVfAZitB5SNQEiYzHrYBKGeUQcysuk35aq2HKEs7enYiE\"]},\"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}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_entryPoint","type":"address"},{"internalType":"address","name":"_defaultCheckpointer","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"}],"type":"error","name":"BadNonce"},{"inputs":[],"type":"error","name":"ChainedSignatureNestedInChainedSignature"},{"inputs":[],"type":"error","name":"ERC4337Disabled"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"type":"error","name":"HookAlreadyExists"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"type":"error","name":"HookDoesNotExist"},{"inputs":[],"type":"error","name":"ImageHashIsZero"},{"inputs":[{"internalType":"bytes32","name":"_opHash","type":"bytes32"},{"internalType":"address","name":"_signer","type":"address"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"type":"error","name":"InvalidERC1271Signature"},{"inputs":[{"internalType":"address","name":"_entrypoint","type":"address"}],"type":"error","name":"InvalidEntryPoint"},{"inputs":[{"internalType":"uint8","name":"kind","type":"uint8"}],"type":"error","name":"InvalidKind"},{"inputs":[],"type":"error","name":"InvalidPackedLength"},{"inputs":[{"internalType":"struct Payload.Decoded","name":"_payload","type":"tuple","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"bool","name":"noChainId","type":"bool"},{"internalType":"struct Payload.Call[]","name":"calls","type":"tuple[]","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":"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":"bytes","name":"_signature","type":"bytes"}],"type":"error","name":"InvalidSapientSignature"},{"inputs":[{"internalType":"struct Payload.Decoded","name":"_payload","type":"tuple","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"bool","name":"noChainId","type":"bool"},{"internalType":"struct Payload.Call[]","name":"calls","type":"tuple[]","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":"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":"bytes","name":"_signature","type":"bytes"}],"type":"error","name":"InvalidSignature"},{"inputs":[{"internalType":"uint256","name":"_flag","type":"uint256"}],"type":"error","name":"InvalidSignatureFlag"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"uint256","name":"_weight","type":"uint256"}],"type":"error","name":"InvalidSignatureWeight"},{"inputs":[{"internalType":"bytes32","name":"_opHash","type":"bytes32"},{"internalType":"uint256","name":"_expires","type":"uint256"}],"type":"error","name":"InvalidStaticSignatureExpired"},{"inputs":[{"internalType":"bytes32","name":"_opHash","type":"bytes32"},{"internalType":"address","name":"_caller","type":"address"},{"internalType":"address","name":"_expectedCaller","type":"address"}],"type":"error","name":"InvalidStaticSignatureWrongCaller"},{"inputs":[{"internalType":"bytes","name":"_signature","type":"bytes"},{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"uint256","name":"_weight","type":"uint256"}],"type":"error","name":"LowWeightChainedSignature"},{"inputs":[{"internalType":"struct Payload.Decoded","name":"_payload","type":"tuple","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"bool","name":"noChainId","type":"bool"},{"internalType":"struct Payload.Call[]","name":"calls","type":"tuple[]","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":"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":"uint256","name":"_index","type":"uint256"},{"internalType":"uint256","name":"_gasLeft","type":"uint256"}],"type":"error","name":"NotEnoughGas"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"}],"type":"error","name":"OnlySelf"},{"inputs":[],"type":"error","name":"ReentrantCall"},{"inputs":[{"internalType":"struct Payload.Decoded","name":"_payload","type":"tuple","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"bool","name":"noChainId","type":"bool"},{"internalType":"struct Payload.Call[]","name":"calls","type":"tuple[]","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":"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":"uint256","name":"_index","type":"uint256"},{"internalType":"bytes","name":"_returnData","type":"bytes"}],"type":"error","name":"Reverted"},{"inputs":[{"internalType":"struct Snapshot","name":"_snapshot","type":"tuple","components":[{"internalType":"bytes32","name":"imageHash","type":"bytes32"},{"internalType":"uint256","name":"checkpoint","type":"uint256"}]}],"type":"error","name":"UnusedSnapshot"},{"inputs":[{"internalType":"uint256","name":"_nextCheckpoint","type":"uint256"},{"internalType":"uint256","name":"_checkpoint","type":"uint256"}],"type":"error","name":"WrongChainedCheckpointOrder"},{"inputs":[{"internalType":"bytes32","name":"_opHash","type":"bytes32","indexed":true},{"internalType":"uint256","name":"_index","type":"uint256","indexed":false},{"internalType":"bytes","name":"_returnData","type":"bytes","indexed":false}],"type":"event","name":"CallAborted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"_opHash","type":"bytes32","indexed":true},{"internalType":"uint256","name":"_index","type":"uint256","indexed":false},{"internalType":"bytes","name":"_returnData","type":"bytes","indexed":false}],"type":"event","name":"CallFailed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"_opHash","type":"bytes32","indexed":true},{"internalType":"uint256","name":"_index","type":"uint256","indexed":false}],"type":"event","name":"CallSkipped","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"_opHash","type":"bytes32","indexed":true},{"internalType":"uint256","name":"_index","type":"uint256","indexed":false}],"type":"event","name":"CallSucceeded","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":false},{"internalType":"address","name":"implementation","type":"address","indexed":false}],"type":"event","name":"DefinedHook","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"newImageHash","type":"bytes32","indexed":false}],"type":"event","name":"ImageHashUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"_space","type":"uint256","indexed":false},{"internalType":"uint256","name":"_newNonce","type":"uint256","indexed":false}],"type":"event","name":"NonceChange","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32","indexed":false},{"internalType":"address","name":"_address","type":"address","indexed":false},{"internalType":"uint96","name":"_timestamp","type":"uint96","indexed":false}],"type":"event","name":"StaticSignatureSet","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_CHECKPOINTER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"payable","type":"function","name":"addHook"},{"inputs":[],"stateMutability":"view","type":"function","name":"entrypoint","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"execute"},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"executeUserOp"},{"inputs":[],"stateMutability":"view","type":"function","name":"getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getStaticSignature","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"imageHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"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"}],"stateMutability":"pure","type":"function","name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"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"}],"stateMutability":"pure","type":"function","name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"readHook","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_space","type":"uint256"}],"stateMutability":"view","type":"function","name":"readNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"struct Payload.Decoded","name":"_payload","type":"tuple","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"bool","name":"noChainId","type":"bool"},{"internalType":"struct Payload.Call[]","name":"calls","type":"tuple[]","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":"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":"bytes","name":"_signature","type":"bytes"}],"stateMutability":"view","type":"function","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"}]},{"inputs":[{"internalType":"struct Payload.Decoded","name":"_payload","type":"tuple","components":[{"internalType":"uint8","name":"kind","type":"uint8"},{"internalType":"bool","name":"noChainId","type":"bool"},{"internalType":"struct Payload.Call[]","name":"calls","type":"tuple[]","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":"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":"bytes","name":"_signature","type":"bytes"}],"stateMutability":"view","type":"function","name":"recoverSapientSignature","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"payable","type":"function","name":"removeHook"},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"}],"stateMutability":"payable","type":"function","name":"selfExecute"},{"inputs":[{"internalType":"bytes32","name":"_hash","type":"bytes32"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint96","name":"_timestamp","type":"uint96"}],"stateMutability":"nonpayable","type":"function","name":"setStaticSignature"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"tokenReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"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"}],"stateMutability":"nonpayable","type":"function","name":"tokensReceived"},{"inputs":[{"internalType":"bytes32","name":"_imageHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateImageHash"},{"inputs":[{"internalType":"struct PackedUserOperation","name":"userOp","type":"tuple","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":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"uint256","name":"missingAccountFunds","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"validateUserOp","outputs":[{"internalType":"uint256","name":"validationData","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"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 delegated implementation address"}},"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()":{"details":"Uses the stored imageHash or computes the counterfactual one assuming an EIP-7702 wallet","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"}},"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":{"DEFAULT_CHECKPOINTER()":{"notice":"Checkpointer used at the wallet creation"},"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 current delegated 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"},"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":{"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/"],"optimizer":{"enabled":true,"runs":4294967295},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Stage7702Module.sol":"Stage7702Module"},"evmVersion":"paris","libraries":{},"viaIR":true},"sources":{"src/Stage7702Module.sol":{"keccak256":"0x628bcbe897c8ea7b81fbed0bece05a1943b693630d46f2dae850e9c1e4f15ace","urls":["bzz-raw://52c32fa9e49c0184fbb9db24328fe6eba2271dc08bfe7a097ef2f9f61981d093","dweb:/ipfs/QmPSdRVSsgT99pdvUwzYMC3BVEQn3Szn3Ef466BD45KV9T"],"license":"Apache-2.0"},"src/modules/Calls.sol":{"keccak256":"0xa1341a9dc102ceec53bcdff123322e7ecb19cec6101086944c87552284969eeb","urls":["bzz-raw://36619e8abb171d9f812be49572fba6d64dd62c0d7a6fb674cde1a0cf28a5f919","dweb:/ipfs/QmWR45P7Q4M44QfyNQvA3ThMyApz3snMJVRin8ujq2ouQK"],"license":"Apache-2.0"},"src/modules/ERC4337v07.sol":{"keccak256":"0x4c73f4de4d7652935731b539c8055b822b83c7c2d2220a5d54025e263f54b188","urls":["bzz-raw://c310e22792d3d057ae14abb22bd6979a240fb46bd2566efc78425c0b37f46c9b","dweb:/ipfs/QmWAUctttbEEJnRHnRHtfGPT5YDzqo1Zw72z82LiusESKn"],"license":"Apache-2.0"},"src/modules/Hooks.sol":{"keccak256":"0xd1f9de45b83ae5f9f32a4d1c709d7a2b6543b1cddd09bf69d401dcdf1d154ab7","urls":["bzz-raw://bf3161edf37479825588e07039752b79792666455cc0beb1ca0e873b3be31ad4","dweb:/ipfs/QmYYpJeSsRgRx2oHcpvhqsNs7ZtDhVnxLmFpXz5eYcS8g4"],"license":"Apache-2.0"},"src/modules/Implementation7702.sol":{"keccak256":"0xb6d0a04d3d3b2f02797cdd46dad4ea6131e13b37091780bc8718d839ca24a8f4","urls":["bzz-raw://2de6a94be7963b824e8755af3c4483cc50ba12094f3eb5443cb37304fd612dda","dweb:/ipfs/QmZhDRFGjRvESoBTDesbFV4jVBj7aGY6QsE8fp6hm7NgFn"],"license":"Apache-2.0"},"src/modules/Nonce.sol":{"keccak256":"0x56fbf6dc9b34ab60ae8a32ffb6f583c003bb8f4a5223ce704e982400fa403fab","urls":["bzz-raw://492f53628633b862702cf8f9b726067a722c94028133a8a4c4fcf3d0e73ad803","dweb:/ipfs/QmTHNy4XbH47YZaqKDpknb5aApjRH9HVAREHN7N5vEFWEV"],"license":"Apache-2.0"},"src/modules/Payload.sol":{"keccak256":"0xc29dbd28bc2aa9b2d1cbb4e2c15dddb1e1ddc9e1b7934a060053a0896a80f436","urls":["bzz-raw://09d0dcf9c7d51de70daf2fe662d19dbe7efcfe25932881d5f572edca00c23662","dweb:/ipfs/QmZpCcESwCtvLqZPQY8sZuRt7CzcaLqQACUmmD9pDu3vGJ"],"license":"Apache-2.0"},"src/modules/ReentrancyGuard.sol":{"keccak256":"0x566e105b1a53f49cf099037f3cb4a9739522d72739dc65f1169b97e4fbe07b32","urls":["bzz-raw://d811a16613746e5290eab76eb4055d98a1e64e1086632697d09b0a3759a6bac5","dweb:/ipfs/QmPJ33JvAxwn1sTCNvYG2TWsFo991KND2ia8JcvZ26Dge9"],"license":"MIT"},"src/modules/Storage.sol":{"keccak256":"0xa6bc516642ea99194f3ac4375853daee3190272c4006d1e32f84ba88ec30173f","urls":["bzz-raw://209ba57704f952514910c54896df70197c695c2b4eeb1166a2c6ed29380741da","dweb:/ipfs/QmNmQpemo7qQxb2aDXdFooE6xNW1cp7gXGYa8xUUcJ4WWn"],"license":"Apache-2.0"},"src/modules/auth/BaseAuth.sol":{"keccak256":"0x1aea32726fe1e8c204805a01fde5a7c832caa76960bf57bbaa2cf13e6804b9dc","urls":["bzz-raw://851b09d56bfc9b2f2025f1351ca2a4ae5e9c82e8fb26e58216cff849fc9f8320","dweb:/ipfs/QmeHcagSWRPXR1ac1jEChoYTDzfhLyvfGKAgfu4nc3uctc"],"license":"Apache-2.0"},"src/modules/auth/BaseSig.sol":{"keccak256":"0x2c95341b76f935db82b58523835e0d1888c839ceba9cb03ec8b3fc6f835e65ca","urls":["bzz-raw://26eb2b3617d77b917b7a12264245e9d37e7acd52d103b0ffe7810c959956eb46","dweb:/ipfs/QmSU8cbdWizZyMbCf8gPg4pMsQBGdAsPdRBUgu2nK4nJkJ"],"license":"Apache-2.0"},"src/modules/auth/SelfAuth.sol":{"keccak256":"0x4d517af51c3af39a19a4ed00f3fc89e965e45942c264189085bc24f1987a526c","urls":["bzz-raw://1be166f75d2821e305b6906c34311a62629b1b3c90ac306d775e7330f23d5b42","dweb:/ipfs/QmYFLASBDFzcTXioV5459qvQ1NGaqzWMoLzGJeMas3Lg5W"],"license":"Apache-2.0"},"src/modules/auth/Stage7702Auth.sol":{"keccak256":"0x6c9b38e76fc9912b628381a98e0c3c24e04b6e82ce6e6faf345fe68f0e79fcef","urls":["bzz-raw://aa46ee0be9ad3df1806e8c0aeecf965ebd205d516837f459033154e136ad8a2c","dweb:/ipfs/QmVfAZitB5SNQEiYzHrYBKGeUQcysuk35aq2HKEs7enYiE"],"license":"Apache-2.0"},"src/modules/interfaces/IAccount.sol":{"keccak256":"0x64ca3bb59ec4fc0a60d80402802365e2d5226afe7e7aabe3b21df936c84f2bcb","urls":["bzz-raw://ccfd2381e1874cdec2f473a9a17799a3b57360c0593d68ee66fcea9c16eb39b4","dweb:/ipfs/QmcjbJpGz3Exmu4fsj953Y2bG8rtQaVMEFUgT6W2dUXomr"],"license":"MIT"},"src/modules/interfaces/IAuth.sol":{"keccak256":"0xf6fa30af2ec91d5fbeac17c9b1f2aa73b7883c9ac98745605007e57666394b91","urls":["bzz-raw://6e90a87978519462f9612f4a17e38fddc1c7bcf700ff834a1de7dce326f30353","dweb:/ipfs/QmXmWAsRRK6t4jPs4VcXrouyokxdALM28D3odX7ub48WEp"],"license":"Apache-2.0"},"src/modules/interfaces/ICheckpointer.sol":{"keccak256":"0xf65f67ce53f3e3e7d5a875de689d3ad4817e997c4a2df640df5960fc4fdf220f","urls":["bzz-raw://9b6d1a23f8cc4063012b5d0099a042da047808d82a4e0c31a32ff7f7d5025c15","dweb:/ipfs/QmVn9Bqejb75dBrY9eiT7ta5QMpPBPbfWtHQ5xgrQXGieF"],"license":"Apache-2.0"},"src/modules/interfaces/IDelegatedExtension.sol":{"keccak256":"0xa2ae897e90fd70dd4a9e172bc04d019ba9c512e72c2df65fcb6daf87dd5ceb90","urls":["bzz-raw://cdf4b7c3dfb0aef6c9dbe8b2a0542018dc756ef2252d7101bcb3186192da0a11","dweb:/ipfs/QmPHCVu1DJ7fBrPBYA5y3hoF3a3XFEBwYCZ1ErGaxPhcYL"],"license":"Apache-2.0"},"src/modules/interfaces/IERC1155Receiver.sol":{"keccak256":"0xa23d0bc29233a91085922ea8a7e2cbe8b5f3358d3f2c3cdc58adade9a171d9c1","urls":["bzz-raw://2f06b8f3ae7a45441cc26da5b2ddd15ba76d1664178958f63f536e6c5e4fd0fb","dweb:/ipfs/QmR1Rnk8ciSn5s5wNLGvpE1QNRDsBVDfDT1ZXhei2brmFj"],"license":"Apache-2.0"},"src/modules/interfaces/IERC1271.sol":{"keccak256":"0xb33a198eb641c43c3ab89705f693e342ad87fcc28bfa48d63b5ed105968434c9","urls":["bzz-raw://a1abd7475b239c551d34325466804b09e587b62559faf9109ad1ac019eb57a6b","dweb:/ipfs/Qmd3MDHAmpFpLXdHY5Tnb7niJjPDr5hEnc4d63tpyFGmgF"],"license":"Apache-2.0"},"src/modules/interfaces/IERC223Receiver.sol":{"keccak256":"0x426221c0d48b651ed692edfa5388d6e5304e94f48598a71748134b2659e3890d","urls":["bzz-raw://9e1ed2fd5e390b5b943dc07c2e0ea9e524eb37263dc72c482365c159fc3659e5","dweb:/ipfs/QmWRDBvb1cthVPm4BSzKX3J5GpGGSBuDokkpRK9x5aA7JR"],"license":"Apache-2.0"},"src/modules/interfaces/IERC721Receiver.sol":{"keccak256":"0xbe14c3b727f283a467dc2f2221d3322c5a69cd64a3aacad85acab05e94438f35","urls":["bzz-raw://43ef086c509b8b88cae78f67c4bd979fd427736972cfe56f7423371ccc154e63","dweb:/ipfs/Qmc7Yp7Z1dQ925gzEZYVNUXnWr3YomvWkXfaGYLZpoy8J3"],"license":"Apache-2.0"},"src/modules/interfaces/IERC777Receiver.sol":{"keccak256":"0xd9144d439a96b0c6439cd9a186701aa530f4f782ff09fdbf6c3ef16b78b0d4e5","urls":["bzz-raw://d1f17484eda7184db4a00106b4952f15c1517872cbfe19663d6fce4e042729b2","dweb:/ipfs/QmWdhYmLNkUpgvPpSyGHstxrFwMfhRTVmxDpe4frkUu1Qh"],"license":"Apache-2.0"},"src/modules/interfaces/IEntryPoint.sol":{"keccak256":"0xd19922ea7a8ae09072a721138dc93e175fa77ecaa3ac6f2d759d5e5e944fb665","urls":["bzz-raw://20ecea69ddd4d8787c0bdc4487dea03e90f63f4296674a12728e331a78e62620","dweb:/ipfs/QmZUrX8zEqfHZEJQjNtDUXGS47bj2UuRCLfbkLPrXsot1c"],"license":"MIT"},"src/modules/interfaces/IPartialAuth.sol":{"keccak256":"0x0d1aa021615d8e90696e71a9468331457a1babfa2ffe169654b7456e5bcb7a73","urls":["bzz-raw://bbacd149a6358ab0d4b9c588d2e3a55fc71ed4723269150d7b91ca70092f6519","dweb:/ipfs/QmUSwtrYCrRcRFsy5rCzdMPrw1FCU7ZoeXdsW6kK9yc8FK"],"license":"Apache-2.0"},"src/modules/interfaces/ISapient.sol":{"keccak256":"0x3668daa83a61af054146345e53e571daf403f9bca9c3cc702f6f1cb655770359","urls":["bzz-raw://13aa453c7021c83d305ac7d714a93f78a03a8cc0032cb06cf54d5ebf09100489","dweb:/ipfs/QmSxar3KETtMzHXQuqQA9b8iK8cG3Z62EpWSeu8hhKW2xn"],"license":"Apache-2.0"},"src/utils/LibBytes.sol":{"keccak256":"0x4fe0b4786b2157e12384b90ae9daa1009b74b2547a8a24b800a8b998278c874b","urls":["bzz-raw://065129e32d1a318e89fb7587e136c33177a7848393f9055c0ac601b84741cd8c","dweb:/ipfs/QmVWucfHSHRJriRFNoJqoeDcVB4fDfqbccM8KPBmwcxVu3"],"license":"Apache-2.0"},"src/utils/LibOptim.sol":{"keccak256":"0x1d1e2234eec89069c3f8d59e370fd3470faaef9c1641cd722bae83f4e4921bde","urls":["bzz-raw://4c3d8b24e6c11fcea3462017b2df71ed4b9b32b2dab8a591cc91afc0b6c8dd81","dweb:/ipfs/QmXtrdWcNTfaYHodKRovkdDyRCQJcffDUZQAdgQCJNoq2x"],"license":"Apache-2.0"}},"version":1},"id":49} \ No newline at end of file diff --git a/contracts/contracts.go b/contracts/contracts.go index 36b35491..c015fd93 100644 --- a/contracts/contracts.go +++ b/contracts/contracts.go @@ -31,12 +31,14 @@ import ( v2Main "github.com/0xsequence/go-sequence/contracts/gen/v2/walletmain" v2Upgradable "github.com/0xsequence/go-sequence/contracts/gen/v2/walletupgradable" v2Utils "github.com/0xsequence/go-sequence/contracts/gen/v2/walletutils" + v3SessionManager "github.com/0xsequence/go-sequence/contracts/gen/v3/sessionmanager" v3Estimator "github.com/0xsequence/go-sequence/contracts/gen/v3/walletestimator" v3Factory "github.com/0xsequence/go-sequence/contracts/gen/v3/walletfactory" v3Guest "github.com/0xsequence/go-sequence/contracts/gen/v3/walletguest" v3Simulator "github.com/0xsequence/go-sequence/contracts/gen/v3/walletsimulator" v3Stage1 "github.com/0xsequence/go-sequence/contracts/gen/v3/walletstage1" v3Stage2 "github.com/0xsequence/go-sequence/contracts/gen/v3/walletstage2" + v3Stage7702 "github.com/0xsequence/go-sequence/contracts/gen/v3/walletstage7702" "github.com/0xsequence/go-sequence/contracts/gen/valueforwarder" ) @@ -86,13 +88,15 @@ var V2 struct { } var V3 struct { - WalletFactory ethartifact.Artifact - WalletStage1Module ethartifact.Artifact - WalletStage2Module ethartifact.Artifact - WalletGuestModule ethartifact.Artifact - WalletEstimator ethartifact.Artifact - WalletSimulator ethartifact.Artifact - CreationCode []byte + WalletFactory ethartifact.Artifact + WalletStage1Module ethartifact.Artifact + WalletStage2Module ethartifact.Artifact + WalletStage7702Module ethartifact.Artifact + WalletGuestModule ethartifact.Artifact + WalletEstimator ethartifact.Artifact + WalletSimulator ethartifact.Artifact + SessionManager ethartifact.Artifact + CreationCode []byte } var ( @@ -121,9 +125,11 @@ func init() { V3.WalletFactory = artifact("WALLET_FACTORY", v3Factory.WalletFactoryABI, v3Factory.WalletFactoryBin) V3.WalletStage1Module = artifact("WALLET_STAGE_1", v3Stage1.WalletStage1ABI, v3Stage1.WalletStage1Bin) V3.WalletStage2Module = artifact("WALLET_STAGE_2", v3Stage2.WalletStage2ABI, v3Stage2.WalletStage2Bin) + V3.WalletStage7702Module = artifact("WALLET_STAGE_7702", v3Stage7702.WalletStage7702ABI, v3Stage7702.WalletStage7702Bin, v3Stage7702.WalletStage7702DeployedBin) V3.WalletGuestModule = artifact("WALLET_GUEST", v3Guest.WalletGuestABI, v3Guest.WalletGuestBin) V3.WalletEstimator = artifact("WALLET_ESTIMATOR", v3Estimator.WalletEstimatorABI, v3Estimator.WalletEstimatorBin, v3Estimator.WalletEstimatorDeployedBin) V3.WalletSimulator = artifact("WALLET_SIMULATOR", v3Simulator.WalletSimulatorABI, v3Simulator.WalletSimulatorBin, v3Simulator.WalletSimulatorDeployedBin) + V3.SessionManager = artifact("SESSION_MANAGER", v3SessionManager.SessionManagerABI, v3SessionManager.SessionManagerBin, v3SessionManager.SessionManagerDeployedBin) V3.CreationCode = hexutil.MustDecode("0x6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3") GasEstimator = artifact("GAS_ESTIMATOR", gasestimator.GasEstimatorABI, gasestimator.GasEstimatorBin, gasestimator.GasEstimatorDeployedBin) diff --git a/contracts/gen/gen.go b/contracts/gen/gen.go index 5781753c..67e6359e 100644 --- a/contracts/gen/gen.go +++ b/contracts/gen/gen.go @@ -30,12 +30,14 @@ //go:generate go run github.com/0xsequence/ethkit/cmd/ethkit abigen --pkg=walletfactory --type=WalletFactory --outFile=./v3/walletfactory/wallet_factory.gen.go --artifactsFile=../artifacts/wallet-contracts-v3/Factory.sol/Factory.json //go:generate go run github.com/0xsequence/ethkit/cmd/ethkit abigen --pkg=walletstage1 --type=WalletStage1 --outFile=./v3/walletstage1/wallet_stage1.gen.go --artifactsFile=../artifacts/wallet-contracts-v3/Stage1Module.sol/Stage1Module.json //go:generate go run github.com/0xsequence/ethkit/cmd/ethkit abigen --pkg=walletstage2 --type=WalletStage2 --outFile=./v3/walletstage2/wallet_stage2.gen.go --artifactsFile=../artifacts/wallet-contracts-v3/Stage2Module.sol/Stage2Module.json +//go:generate go run github.com/0xsequence/ethkit/cmd/ethkit abigen --pkg=walletstage7702 --type=WalletStage7702 --outFile=./v3/walletstage7702/wallet_stage7702.gen.go --artifactsFile=../artifacts/wallet-contracts-v3/Stage7702Module.sol/Stage7702Module.json --includeDeployedBin //go:generate go run github.com/0xsequence/ethkit/cmd/ethkit abigen --pkg=walletguest --type=WalletGuest --outFile=./v3/walletguest/wallet_guest.gen.go --artifactsFile=../artifacts/wallet-contracts-v3/Guest.sol/Guest.json //go:generate go run github.com/0xsequence/ethkit/cmd/ethkit abigen --pkg=passkeys --type=Passkeys --outFile=./v3/passkeys/passkeys.gen.go --artifactsFile=../artifacts/wallet-contracts-v3/Passkeys.sol/Passkeys.json //go:generate go run github.com/0xsequence/ethkit/cmd/ethkit abigen --pkg=walletestimator --type=WalletEstimator --outFile=./v3/walletestimator/wallet_estimator.gen.go --artifactsFile=../artifacts/wallet-contracts-v3/Estimator.sol/Estimator.json --includeDeployedBin //go:generate go run github.com/0xsequence/ethkit/cmd/ethkit abigen --pkg=walletsimulator --type=WalletSimulator --outFile=./v3/walletsimulator/wallet_simulator.gen.go --artifactsFile=../artifacts/wallet-contracts-v3/Simulator.sol/Simulator.json --includeDeployedBin +//go:generate go run github.com/0xsequence/ethkit/cmd/ethkit abigen --pkg=sessionmanager --type=SessionManager --outFile=./v3/sessionmanager/session_manager.gen.go --artifactsFile=../artifacts/wallet-contracts-v3/SessionManager.sol/SessionManager.json --includeDeployedBin //go:generate go run github.com/0xsequence/ethkit/cmd/ethkit abigen --pkg=sapientmock --type=SapientMock --outFile=./sapientmock/sapient_mock.gen.go --artifactsFile=../artifacts/wallet-contracts-v3/MockSapient.sol/MockSapient.json diff --git a/contracts/gen/v3/sessionmanager/session_manager.gen.go b/contracts/gen/v3/sessionmanager/session_manager.gen.go new file mode 100644 index 00000000..2e3b93ac --- /dev/null +++ b/contracts/gen/v3/sessionmanager/session_manager.gen.go @@ -0,0 +1,564 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package sessionmanager + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/0xsequence/ethkit/go-ethereum" + "github.com/0xsequence/ethkit/go-ethereum/accounts/abi" + "github.com/0xsequence/ethkit/go-ethereum/accounts/abi/bind" + "github.com/0xsequence/ethkit/go-ethereum/common" + "github.com/0xsequence/ethkit/go-ethereum/core/types" + "github.com/0xsequence/ethkit/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ParameterRule is an auto generated low-level Go binding around an user-defined struct. +type ParameterRule struct { + Cumulative bool + Operation uint8 + Value [32]byte + Offset *big.Int + Mask [32]byte +} + +// PayloadCall is an auto generated low-level Go binding around an user-defined struct. +type PayloadCall struct { + To common.Address + Value *big.Int + Data []byte + GasLimit *big.Int + DelegateCall bool + OnlyFallback bool + BehaviorOnError *big.Int +} + +// PayloadDecoded is an auto generated low-level Go binding around an user-defined struct. +type PayloadDecoded struct { + Kind uint8 + NoChainId bool + Calls []PayloadCall + Space *big.Int + Nonce *big.Int + Message []byte + ImageHash [32]byte + Digest [32]byte + ParentWallets []common.Address +} + +// Permission is an auto generated low-level Go binding around an user-defined struct. +type Permission struct { + Target common.Address + Rules []ParameterRule +} + +// UsageLimit is an auto generated low-level Go binding around an user-defined struct. +type UsageLimit struct { + UsageHash [32]byte + UsageAmount *big.Int +} + +// SessionManagerMetaData contains all meta data concerning the SessionManager contract. +var SessionManagerMetaData = &bind.MetaData{ + ABI: "[{\"type\":\"function\",\"name\":\"MAX_SPACE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALUE_TRACKING_ADDRESS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLimitUsage\",\"inputs\":[{\"name\":\"wallet\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"usageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"incrementUsageLimit\",\"inputs\":[{\"name\":\"limits\",\"type\":\"tuple[]\",\"internalType\":\"structUsageLimit[]\",\"components\":[{\"name\":\"usageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"usageAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"recoverSapientSignature\",\"inputs\":[{\"name\":\"payload\",\"type\":\"tuple\",\"internalType\":\"structPayload.Decoded\",\"components\":[{\"name\":\"kind\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"noChainId\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structPayload.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\":\"encodedSignature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validatePermission\",\"inputs\":[{\"name\":\"permission\",\"type\":\"tuple\",\"internalType\":\"structPermission\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"rules\",\"type\":\"tuple[]\",\"internalType\":\"structParameterRule[]\",\"components\":[{\"name\":\"cumulative\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"operation\",\"type\":\"uint8\",\"internalType\":\"enumParameterOperation\"},{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"offset\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"mask\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}]},{\"name\":\"call\",\"type\":\"tuple\",\"internalType\":\"structPayload.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\":\"wallet\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"signer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"usageLimits\",\"type\":\"tuple[]\",\"internalType\":\"structUsageLimit[]\",\"components\":[{\"name\":\"usageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"usageAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"newUsageLimits\",\"type\":\"tuple[]\",\"internalType\":\"structUsageLimit[]\",\"components\":[{\"name\":\"usageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"usageAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"LimitUsageUpdated\",\"inputs\":[{\"name\":\"wallet\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"usageHash\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"usageAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"BlacklistedAddress\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidAttestation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBehavior\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBlacklist\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBlacklistUnsorted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCallsLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidChainId\",\"inputs\":[{\"name\":\"invalidChainId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidDelegateCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidIdentitySigner\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidImplicitResult\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidKind\",\"inputs\":[{\"name\":\"kind\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"InvalidLimitUsageIncrement\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidNodeType\",\"inputs\":[{\"name\":\"flag\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidPayloadKind\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPermission\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSelfCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSessionSigner\",\"inputs\":[{\"name\":\"invalidSigner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"InvalidSignatureLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidSpace\",\"inputs\":[{\"name\":\"space\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidValue\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MissingPermission\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SessionExpired\",\"inputs\":[{\"name\":\"deadline\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]", + Bin: "0x60808060405234601557613b3e908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c806313792a4a1461007757806323b3713e14610072578063313dade71461006d57806342de1418146100685780638c946df4146100635763f916f3b21461005e57600080fd5b6106b6565b610672565b6105c6565b6103ff565b610194565b3461014a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5760043567ffffffffffffffff811161014a576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261014a5760243567ffffffffffffffff811161014a573660238201121561014a57806004013567ffffffffffffffff811161014a57366024828401011161014a576101469260246101369301906004016109d1565b6040519081529081906020820190565b0390f35b600080fd5b73ffffffffffffffffffffffffffffffffffffffff81160361014a57565b6044359061017a8261014f565b565b6064359061017a8261014f565b359061017a8261014f565b3461014a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a576004356101cf8161014f565b73ffffffffffffffffffffffffffffffffffffffff602435911660005260006020526040600020906000526020526020604060002054604051908152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761025857604052565b61020d565b60a0810190811067ffffffffffffffff82111761025857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761025857604052565b6040519061017a604083610279565b6040519061017a60e083610279565b6040519061017a61012083610279565b67ffffffffffffffff81116102585760051b60200190565b8015150361014a57565b359061017a82610300565b908160e091031261014a5790565b81601f8201121561014a5780359061033a826102e8565b926103486040519485610279565b82845260208085019360061b8301019181831161014a57602001925b828410610372575050505090565b60408483031261014a576020604091825161038c8161023c565b863581528287013583820152815201930192610364565b906020808351928381520192019060005b8181106103c15750505090565b82518051855260209081015181860152604090940193909201916001016103b4565b6040906103fc93921515815281602082015201906103a3565b90565b3461014a5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5760043567ffffffffffffffff811161014a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261014a57604051906104798261023c565b80600401356104878161014f565b825260248101359067ffffffffffffffff821161014a57013660238201121561014a5760048101356104b8816102e8565b916104c66040519384610279565b8183526020600460a08286019402830101019036821161014a57602401915b81831061056057505050602082015260243567ffffffffffffffff811161014a57610514903690600401610315565b9061051d61016d565b61052561017c565b906084359367ffffffffffffffff851161014a5761054a610550953690600401610323565b9361108d565b90610146604051928392836103e3565b60a08336031261014a57604051906105778261025d565b833561058281610300565b8252602084013590600482101561014a57826020928360a09501526040860135604082015260608601356060820152608086013560808201528152019201916104e5565b3461014a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5760043567ffffffffffffffff811161014a573660238201121561014a57806004013567ffffffffffffffff811161014a573660248260061b8401011161014a57602461064192016113d6565b005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b3461014a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a57602069fffffffffffffffffffe604051908152f35b3461014a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a57602060405173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8152f35b60ff81160361014a57565b356103fc81610703565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561014a570180359067ffffffffffffffff821161014a57602001918160051b3603831361014a57565b604051906060820182811067ffffffffffffffff821117610258576040526000604083828152606060208201520152565b906107a7826102e8565b6107b46040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06107e282946102e8565b019060005b8281106107f357505050565b6020906107fe61076c565b828285010152016107e7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9015610872578035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff218136030182121561014a570190565b61080a565b91908110156108725760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff218136030182121561014a570190565b356103fc81610300565b356103fc8161014f565b80518210156108725760209160051b010190565b604051906108ec8261023c565b60006020838281520152565b60405190610907602083610279565b600080835282815b82811061091b57505050565b6020906109266108df565b8282850101520161090f565b9061093c826102e8565b6109496040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061097782946102e8565b019060005b82811061098857505050565b6020906109936108df565b8282850101520161097c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109cc5760010190565b610643565b919060ff6109de8461070e565b16610efa57606083013569fffffffffffffffffffe8111610ecc57506040830191610a098385610718565b905015610ea257610a1e918495939533611982565b91610a33610a2c8583610718565b905061079d565b9060009460808501955b610a478284610718565b9050811015610de957610a6481610a5e8486610718565b90610877565b610a70608082016108b7565b610dbf5733610a9a610a81836108c1565b73ffffffffffffffffffffffffffffffffffffffff1690565b14610d9557600260c082013514610d6b57610ab68289516108cb565b51805115610b005760019291816060610ae96020610afa95015173ffffffffffffffffffffffffffffffffffffffff1690565b9101519060408b0151923390612306565b01610a3d565b91959392969050610b0f61076c565b96602083019460005b8751811015610d4a57610b4c610a81610b31838b6108cb565b515173ffffffffffffffffffffffffffffffffffffffff1690565b15610c1357610b5e610b31828a6108cb565b73ffffffffffffffffffffffffffffffffffffffff610b94610a818a5173ffffffffffffffffffffffffffffffffffffffff1690565b911614610ba357600101610b18565b9097929850610bfc610c0d9295968a600196610bf360406060610be7610bca8f8a906108cb565b51965b5173ffffffffffffffffffffffffffffffffffffffff1690565b94015192015160ff1690565b9133888c611d87565b610c0682896108cb565b52866108cb565b50610afa565b90979298610bfc908a600196610bf360406060610be78d610c6b610c0d9b9e9f610c51905173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff168952565b610c736108f8565b6020890152610d41610c99825173ffffffffffffffffffffffffffffffffffffffff1690565b855173ffffffffffffffffffffffffffffffffffffffff9091166020820190815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee604083015290610d0a81606081015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610279565b5190203373ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000209060005260205260406000205490565b84890152610bcd565b90979298610bfc908a600196610bf360406060610be7610c0d999c9d610bcd565b7fc8103a190000000000000000000000000000000000000000000000000000000060005260046000fd5b7f540733ea0000000000000000000000000000000000000000000000000000000060005260046000fd5b7faa25f2ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b50919093929450610dfa815161079d565b9260009260005b8351811015610e7c576020610e1682866108cb565b5101515115801590610e65575b610e30575b600101610e01565b93610e5d600191610e4187876108cb565b51610e4c828a6108cb565b52610e5781896108cb565b5061099f565b949050610e28565b506040610e7282866108cb565b5101511515610e23565b50610e999250610e939195610e9e95948552610718565b90610839565b612537565b5190565b7f542f0af50000000000000000000000000000000000000000000000000000000060005260046000fd5b7fdce5eceb0000000000000000000000000000000000000000000000000000000060005260045260245b6000fd5b7f720521200000000000000000000000000000000000000000000000000000000060005260046000fd5b90600182018092116109cc57565b919082018092116109cc57565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561014a570180359067ffffffffffffffff821161014a5760200191813603831361014a57565b60041115610f9a57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9392919073ffffffffffffffffffffffffffffffffffffffff16845260606020850152602060a085019173ffffffffffffffffffffffffffffffffffffffff81511660608701520151604060808601528051809252602060c0860191019160005b81811061103c57505060409150930152565b909183518051151582526020810151906004821015610f9a5782608060a09260209485600197015260408101516040840152606081015160608401520151608082015201940191019291909261102a565b9490919293946110b1815173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff6110d2610a81866108c1565b9116036113bb578551926110f56110f0602084019586515190610f32565b610932565b9460005b885181101561112c578061110f6001928b6108cb565b5161111a828a6108cb565b5261112581896108cb565b50016110f9565b50909294919395875160005b885180518210156113aa578161114d916108cb565b5161117161115e6040890189610f3f565b5060608301519081013591602090910190565b50608082015116906111838151151590565b611256575b60208101805161119781610f90565b6111a081610f90565b6111c6575060400151036111b8576001905b01611138565b506000989750505050505050565b600381516111d381610f90565b6111dc81610f90565b036111f3575060400151106111b8576001906111b2565b6001815161120081610f90565b61120981610f90565b03611220575060400151146111b8576001906111b2565b6002905161122d81610f90565b61123681610f90565b14611246575b50506001906111b2565b60400151116111b857388061123c565b9691989795929093998a610cde6112798c6040519283918c602084019687610fc9565b519020966000936112886108df565b9c60005b87518110156113925761129f81896108cb565b515115611345578a6112b1828a6108cb565b5151146112c05760010161128c565b6020949e50879a9198939c9d96506112de906112f3939c96986108cb565b519284840151915b82156112fe575b50610f32565b918291015290611188565b61133d91925061132e8b73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b90600052602052604060002090565b5490386112ed565b6020949e506112f3929b95509761138c89899c99959e9f98939a6113869061136b6102ba565b978c895260008a8a01528861138083836108cb565b526108cb565b50610f24565b976112e6565b5096946020939d929b9c956112f3929b95979a6112e6565b505083525060019650909450505050565b509250505060009190565b91908110156108725760061b0190565b60005b8281106113e557505050565b60206113f28285856113c6565b01356114376114028386866113c6565b353373ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000209060005260205260406000205490565b116114b157807f42063b8d32ac0a88f94053143bb30a789b3d5dfabb27d6c8a54e23d4fef30851606061146d60019487876113c6565b35602061147b8589896113c6565b0135336000526000602052604060002082600052602052806040600020556040519133835260208301526040820152a1016113d9565b7e2a700a0000000000000000000000000000000000000000000000000000000060005260046000fd5b604051906114e78261025d565b6060608083600081526000602082015282604082015282808201520152565b9093929384831161014a57841161014a578101920390565b6040519061152b8261023c565b6000602083606081520152565b6040519060c0820182811067ffffffffffffffff8211176102585760405281600081526000602082015260006040820152600060608201526060608082015260a061158161151e565b910152565b90611590826102e8565b61159d6040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06115cb82946102e8565b019060005b8281106115dc57505050565b6020906115e7611538565b828285010152016115d0565b6040513d6000823e3d90fd5b604051906080820182811067ffffffffffffffff82111761025857604052816000815260006020820152600060408201526060611581611538565b90611644826102e8565b6116516040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061167f82946102e8565b019060005b82811061169057505050565b60209061169b6115ff565b82828501015201611684565b359061017a82610703565b92919267ffffffffffffffff821161025857604051916116fa601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200184610279565b82948184528183011161014a578281602093846000960137010152565b9080601f8301121561014a578160206103fc933591016116b2565b81601f8201121561014a57803590611749826102e8565b926117576040519485610279565b82845260208085019360051b8301019181831161014a5760208101935b83851061178357505050505090565b843567ffffffffffffffff811161014a57820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828603011261014a576117ca6102c9565b916117d760208301610189565b83526040820135602084015260608201359267ffffffffffffffff841161014a5760e08361180c886020809881980101611717565b60408401526080810135606084015261182760a0820161030a565b608084015261183860c0820161030a565b60a0840152013560c0820152815201940193611774565b9080601f8301121561014a578135611866816102e8565b926118746040519485610279565b81845260208085019260051b82010192831161014a57602001905b82821061189c5750505090565b6020809183356118ab8161014f565b81520191019061188f565b9190916101208184031261014a576118cc6102d8565b926118d6826116a7565b84526118e46020830161030a565b6020850152604082013567ffffffffffffffff811161014a5781611909918401611732565b6040850152606082013560608501526080820135608085015260a082013567ffffffffffffffff811161014a5781611942918401611717565b60a085015260c082013560c085015260e082013560e085015261010082013567ffffffffffffffff811161014a5761197a920161184f565b610100830152565b9062ffffff929493916119936114da565b50600095803560e81c60039516966119ca6119c26119bc6119b48b8a610f32565b898987611506565b90612878565b999097610f32565b97602087019173ffffffffffffffffffffffffffffffffffffffff611a03845173ffffffffffffffffffffffffffffffffffffffff1690565b1615611d31575096979596949560018101959083013560f81c611a2581611586565b9260005b89838210611c655750505015159081611c5c575b50611c3257611a78611a556040869594960185610718565b939050611a73611a648561163a565b9560808b0196875236906118b6565b612f85565b906000945b838610611abc5750505050505003611a925790565b7f4be6321b0000000000000000000000000000000000000000000000000000000060005260046000fd5b909192939495611ade611acd6115ff565b918381013560f81c91600190910190565b60808216151583529790825115611c1257607f168451811015611be8576000611b1d611b529a611b10602094896108cb565b5160608701525b86612e19565b9c909291611b2b878c61309b565b92604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa15611be357611b8d610a81600051610bcd6020860191829073ffffffffffffffffffffffffffffffffffffffff169052565b15611bb257611ba68160019389519061138083836108cb565b50019493929190611a7d565b7fc1e84ed600000000000000000000000000000000000000000000000000000000600052610ef66024906000600452565b6115f3565b7fbd8ba84d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6000611b1d611b529a611c2d602094604088019060ff169052565b611b17565b7feb6252040000000000000000000000000000000000000000000000000000000060005260046000fd5b90501538611a3d565b9060206000611c84611c9a9c611c8d95611c7d611538565b508b612d63565b8a959195612e19565b9e909291611b2b88612e5c565b838052039060015afa15611be35760005173ffffffffffffffffffffffffffffffffffffffff611ce1610a81865173ffffffffffffffffffffffffffffffffffffffff1690565b911603611d0757600191611cf582886108cb565b52611d0081876108cb565b5001611a29565b7f9e5c658b0000000000000000000000000000000000000000000000000000000060005260046000fd5b807f9e5c658b0000000000000000000000000000000000000000000000000000000060049252fd5b60405190611d668261025d565b60606080836000815260006020820152600060408201526000838201520152565b939594909192611d9561076c565b50611d9e611d59565b9660005b815181101561206957611db8610b3182846108cb565b73ffffffffffffffffffffffffffffffffffffffff808516911614611ddf57600101611da2565b90611df092939495969798506108cb565b51945b73ffffffffffffffffffffffffffffffffffffffff611e26875173ffffffffffffffffffffffffffffffffffffffff1690565b16156120255760208601518015158061201b575b611fee5750606086015167ffffffffffffffff1680151580611fdb575b611fa4575083610a5e826040611e6e940190610718565b92611e7b608085016108b7565b610dbf57611e88846108c1565b73ffffffffffffffffffffffffffffffffffffffff163014611f8f57506080850160ff815151931692831015611f6557611ed692611ec691516108cb565b519060208701948486519361108d565b9015611f3b5760209252013580611f24575b5060408083015191015110611efa5790565b7faa7feadc0000000000000000000000000000000000000000000000000000000060005260046000fd5b611f3360408401918251610f32565b905238611ee8565b7f868a64de0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f3f904dc00000000000000000000000000000000000000000000000000000000060005260046000fd5b9350505091506114b15760200135611efa5790565b7fb1bbfdd50000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff1660045260246000fd5b5067ffffffffffffffff81164211611e57565b7f331003b30000000000000000000000000000000000000000000000000000000060005260045260246000fd5b5046811415611e3a565b7fc1e84ed60000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff821660045260246000fd5b505090919293959495611df3565b9081602091031261014a575190565b60005b8381106120995750506000910152565b8181015183820152602001612089565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936120e581518092818752878088019101612086565b0116010190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b9073ffffffffffffffffffffffffffffffffffffffff823561214c8161014f565b1681526020820135602082015260408201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181121561014a57820160208135910167ffffffffffffffff821161014a57813603811361014a576121c460c09291839260e0604087015260e08601916120ec565b93606081013560608501526121e76121de6080830161030a565b15156080860152565b6121ff6121f660a0830161030a565b151560a0860152565b013591015290565b73ffffffffffffffffffffffffffffffffffffffff6103fc94921681526060602082015273ffffffffffffffffffffffffffffffffffffffff83511660608201527fffffffff000000000000000000000000000000000000000000000000000000006020840151166080820152604083015160a0820152606083015160c082015260a06122a4608085015160c060e08501526101208401906120a9565b930151927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa082820301610100830152602067ffffffffffffffff816122f287516040865260408601906120a9565b96015116910152604081840391015261212b565b9293909161232b610a81865173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff8216036124e357612353608085016108b7565b610dbf576123618282613124565b6124a0575061237890612373846108c1565b613124565b612452576020820135611efa5760208261239a610a81610a816123d0966108c1565b60405180809681947f9d043a66000000000000000000000000000000000000000000000000000000008352898860048501612207565b03915afa918215611be35760009261241f575b506123ee91926131ef565b036123f557565b7f0881ad5d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6123ee92506124459060203d60201161244b575b61243d8183610279565b810190612077565b916123e3565b503d612433565b610ef661245e836108c1565b7fd33f19e70000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff16600452602490565b7fd33f19e70000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b7fc1e84ed60000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b9060206103fc9281815201906103a3565b8151909190156127945761254a826108c1565b73ffffffffffffffffffffffffffffffffffffffff163014801590612785575b8015612773575b6114b157600092835b82518510156125cf5761259d90602061259387866108cb565b5101515190610f32565b9360406125aa82856108cb565b5101516125bb575b6001019361257a565b936125c760019161099f565b9490506125b2565b6125db91939450610932565b60009081935b83518510156127085760005b60206125f987876108cb565b51015151811015612646578061263f612622600193602061261a8b8b6108cb565b5101516108cb565b519561262d8161099f565b9661263882886108cb565b52856108cb565b50016125ed565b509493600190604061265882876108cb565b510151612668575b0193946125e1565b612702612678610b3183886108cb565b6040516126c481610cde602082019485602073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9193929373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b5190209460406126d484896108cb565b5101516126df6102ba565b96875260208701526126f08161099f565b956126fb82876108cb565b52846108cb565b50612660565b949350612765925061275e915060405161275081610cde60208201947f42de141800000000000000000000000000000000000000000000000000000000865260248301612526565b519020926040810190610f3f565b36916116b2565b60208151910120036114b157565b5061278060a083016108b7565b612571565b50600160c0830135141561256a565b5061279e906108c1565b73ffffffffffffffffffffffffffffffffffffffff1630146114b157565b906127c6826102e8565b6127d36040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061280182946102e8565b019060005b82811061281257505050565b60209061281d611d59565b82828501015201612806565b90612833826102e8565b6128406040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061286e82946102e8565b0190602036910137565b916128816114da565b60009384908190612894605e87046127bc565b91606085019283525b8681106128ad5750505152929150565b8181013560fc81901c97916001019060f81c818915612cb4575060018914612c825760028914612add57600389146129ac575060048814612917577f0ad9979000000000000000000000000000000000000000000000000000000000600052600488905260246000fd5b90919293949596506020860173ffffffffffffffffffffffffffffffffffffffff612956825173ffffffffffffffffffffffffffffffffffffffff1690565b16611d07578382013560601c815260149091019061297c9061297790610bcd565b613420565b865180156129a6579061299791600052602052604060002090565b86525b9594939291909561289d565b50612997565b98909192939495969750611c3257600f60019816600f8114612acc575b81906129d481612829565b604089019081526000805b838210612a2757505050506129f9826129ff928587611506565b906133ac565b86518015612a215790612a1a91600052602052604060002090565b865261299a565b50612a1a565b612a5e958881013560601c906014019690612a438486516108cb565b9073ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff80612a82610bcd8587516108cb565b9216911610612aa2578b612a9a610bcd8385516108cb565b9101906129df565b7f83f928070000000000000000000000000000000000000000000000000000000060005260046000fd5b50600281019083013560f01c6129c9565b612b40969850612b38612b4992600f6119bc939c96979a95989c169087929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b979088610f32565b80978787611506565b93909593612c6b575b6020860173ffffffffffffffffffffffffffffffffffffffff612b89825173ffffffffffffffffffffffffffffffffffffffff1690565b16612c01575b5060005b60608701518051821015612bd05790612bc9612bb1826001946108cb565b519b8a51612bbe8261099f565b9d61138083836108cb565b5001612b93565b505092909695939197948651801515600014612bfa57612a1a915190600052602052604060002090565b5051612a1a565b60208901612c26610a81825173ffffffffffffffffffffffffffffffffffffffff1690565b611d0757612c4b612c65925173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff169052565b38612b8f565b91611c325760019160408601516040890152612b52565b508551969750949593949293919290916020820191840135908015612a215790612a1a91600052602052604060002090565b92939495969798505050612cc6611d59565b8184018035606090811c8352601482013560208401526034820135604084015260549091013560c01c9082015294612d02605c830184866132a1565b8093916080890152612d15918587611506565b612d1e91613357565b8751612d579291908015612d5d5790612d3f91600052602052604060002090565b88528551612d4c8261099f565b9761138083836108cb565b5061299a565b50612d3f565b612e0e91939293612e0862ffffff612de36018612d7e611538565b987fffffffff000000000000000000000000000000000000000000000000000000006014888301803560601c8d5201351660208b01520160208682013591019060408a015260208682013591019060608a01528560039092919283013560e81c920190565b911690612dfe61275e612df68484610f32565b838789611506565b6080890152610f32565b91613484565b929060a08201529190565b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff81116109cc5791565b73ffffffffffffffffffffffffffffffffffffffff81511690612f7f7fffffffff00000000000000000000000000000000000000000000000000000000602083015116610cde7fffffff0000000000000000000000000000000000000000000000000000000000604085015194606081015190608081015191612f6e6008602360a062ffffff87511695015180517fffffffffffffffff00000000000000000000000000000000000000000000000060208251930151916040519a8b9460e81b166020850152612f358151809260208888019101612086565b83019160c01b168382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8810187520185610279565b604051978896602088019a8b6134cf565b51902090565b90612f7f613052610cde9260208501511515600014613094576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261304960c082610279565b519020936135cb565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b4690612fa2565b906040519060208201928352604082015260408152612f7f606082610279565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182136001166109cc57565b90600182019160006001841291129080158216911516176109cc57565b919091600083820193841291129080158216911516176109cc57565b600082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081136001166109cc57905b818113156131685750505050600090565b80820360008212838212811690848313901516176109cc5761318e906002900582613108565b9061319c610bcd83876108cb565b73ffffffffffffffffffffffffffffffffffffffff85811691168082036131c95750505050505050600190565b10156131de57506131d9906130eb565b613157565b91506131e9906130bb565b90613157565b9060405160208101907f616363657074496d706c6963697452657175657374000000000000000000000082526015815261322a603582610279565b5190209160406060820151910151907fffffffffffffffffffffffffffffffffffffffff000000000000000000000000604051936020850195865260601b1660408401526054830152607482015260748152612f7f609482610279565b604051906132948261023c565b6060602083600081520152565b60018301939281013560f81c6132b6816102e8565b926132c46040519485610279565b8184527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06132f1836102e8565b0160005b8181106133385750506000925b82841061331157505050509190565b909192956133226001918484613851565b979061332e82886108cb565b5201929190613302565b60209061334795939495613287565b82828901015201939291936132f5565b90612f7f60016020926040519381859282840197600089526021850137820101828101600081525003017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610279565b90612f7f600160209260405193818592828401977f030000000000000000000000000000000000000000000000000000000000000089526021850137820101828101600081525003017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610279565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208201927f0400000000000000000000000000000000000000000000000000000000000000845260601b16602182015260158152612f7f603582610279565b929161348e61151e565b9060038101908581013560e81c019460038601918281116109cc5761275e6003936134bc92600b9785611506565b83528501013560c01c6020820152920190565b9390927fffffffff00000000000000000000000000000000000000000000000000000000605b989796937fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007fffffff00000000000000000000000000000000000000000000000000000000009660601b1687521660148601526018850152603884015260e81b16605882015261356e8251809360208785019101612086565b016135828251809360208685019101612086565b010190565b805160209091019060005b81811061359f5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101613592565b6101008101516040516135e681610cde602082018095613587565b519020906135f5815160ff1690565b60ff81168061366e57505090612f7f61361160408401516139cd565b92610cde60806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b600181036136cc57505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d46693810193845290810191909152606081019290925290612f7f8160808101610cde565b6002810361372257505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e460208201908152918101929092526060820192909252612f7f8160808101610cde565b600303613776575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d46660208201908152918101929092526060820192909252612f7f8160808101610cde565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b906137b0826102e8565b6137bd6040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06137eb82946102e8565b019060005b8281106137fc57505050565b60209060405161380b8161025d565b60008152600083820152600060408201526000606082015260006080820152828285010152016137f0565b60ff166004811015610f9a5790565b6004821015610f9a5752565b60ff939291506138a6613896613879613868613287565b948481013560601c91601490910190565b73ffffffffffffffffffffffffffffffffffffffff909116855290565b8281013560f81c91600190910190565b94166138b1816137a6565b602084019081526000925b8284106138cb57505050509190565b9091929561398461396661394861391e61393b8b602061393461392c6139278c61390360019c8e60019092919283013560f81c920190565b989091613916888f8516151592516108cb565b519015159052565b60011c607f1690565b613836565b928b516108cb565b5101613845565b8581013591602090910190565b9060406139568c89516108cb565b5101528481013591602090910190565b9060606139748b88516108cb565b5101528381013591602090910190565b979060806139938387516108cb565b510152019291906138bc565b805160209091019060005b8181106139b75750505090565b82518452602093840193909201916001016139aa565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613a136139fd836102e8565b92613a0b6040519485610279565b8084526102e8565b0136602083013760005b8351811015613aef5780613a33600192866108cb565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152613adb61012082610279565b519020613ae882856108cb565b5201613a1d565b50909150604051612f7f81610cde60208201809561399f56fea2646970667358221220b45a3167c8d660248f406d64db12e8d28f37655937c3c2a3396f7e820339fc7a64736f6c634300081c0033", +} + +// SessionManagerABI is the input ABI used to generate the binding from. +// Deprecated: Use SessionManagerMetaData.ABI instead. +var SessionManagerABI = SessionManagerMetaData.ABI + +// SessionManagerBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SessionManagerMetaData.Bin instead. +var SessionManagerBin = SessionManagerMetaData.Bin + +// DeploySessionManager deploys a new Ethereum contract, binding an instance of SessionManager to it. +func DeploySessionManager(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SessionManager, error) { + parsed, err := SessionManagerMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SessionManagerBin), backend) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SessionManager{SessionManagerCaller: SessionManagerCaller{contract: contract}, SessionManagerTransactor: SessionManagerTransactor{contract: contract}, SessionManagerFilterer: SessionManagerFilterer{contract: contract}}, nil +} + +// SessionManager is an auto generated Go binding around an Ethereum contract. +type SessionManager struct { + SessionManagerCaller // Read-only binding to the contract + SessionManagerTransactor // Write-only binding to the contract + SessionManagerFilterer // Log filterer for contract events +} + +// SessionManagerCaller is an auto generated read-only Go binding around an Ethereum contract. +type SessionManagerCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SessionManagerTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SessionManagerTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SessionManagerFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SessionManagerFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SessionManagerSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SessionManagerSession struct { + Contract *SessionManager // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SessionManagerCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SessionManagerCallerSession struct { + Contract *SessionManagerCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SessionManagerTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SessionManagerTransactorSession struct { + Contract *SessionManagerTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SessionManagerRaw is an auto generated low-level Go binding around an Ethereum contract. +type SessionManagerRaw struct { + Contract *SessionManager // Generic contract binding to access the raw methods on +} + +// SessionManagerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SessionManagerCallerRaw struct { + Contract *SessionManagerCaller // Generic read-only contract binding to access the raw methods on +} + +// SessionManagerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SessionManagerTransactorRaw struct { + Contract *SessionManagerTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSessionManager creates a new instance of SessionManager, bound to a specific deployed contract. +func NewSessionManager(address common.Address, backend bind.ContractBackend) (*SessionManager, error) { + contract, err := bindSessionManager(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SessionManager{SessionManagerCaller: SessionManagerCaller{contract: contract}, SessionManagerTransactor: SessionManagerTransactor{contract: contract}, SessionManagerFilterer: SessionManagerFilterer{contract: contract}}, nil +} + +// NewSessionManagerCaller creates a new read-only instance of SessionManager, bound to a specific deployed contract. +func NewSessionManagerCaller(address common.Address, caller bind.ContractCaller) (*SessionManagerCaller, error) { + contract, err := bindSessionManager(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SessionManagerCaller{contract: contract}, nil +} + +// NewSessionManagerTransactor creates a new write-only instance of SessionManager, bound to a specific deployed contract. +func NewSessionManagerTransactor(address common.Address, transactor bind.ContractTransactor) (*SessionManagerTransactor, error) { + contract, err := bindSessionManager(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SessionManagerTransactor{contract: contract}, nil +} + +// NewSessionManagerFilterer creates a new log filterer instance of SessionManager, bound to a specific deployed contract. +func NewSessionManagerFilterer(address common.Address, filterer bind.ContractFilterer) (*SessionManagerFilterer, error) { + contract, err := bindSessionManager(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SessionManagerFilterer{contract: contract}, nil +} + +// bindSessionManager binds a generic wrapper to an already deployed contract. +func bindSessionManager(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SessionManagerMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SessionManager *SessionManagerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SessionManager.Contract.SessionManagerCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SessionManager *SessionManagerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SessionManager.Contract.SessionManagerTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SessionManager *SessionManagerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SessionManager.Contract.SessionManagerTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SessionManager *SessionManagerCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SessionManager.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SessionManager *SessionManagerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SessionManager.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SessionManager *SessionManagerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SessionManager.Contract.contract.Transact(opts, method, params...) +} + +// MAXSPACE is a free data retrieval call binding the contract method 0x8c946df4. +// +// Solidity: function MAX_SPACE() view returns(uint256) +func (_SessionManager *SessionManagerCaller) MAXSPACE(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _SessionManager.contract.Call(opts, &out, "MAX_SPACE") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// MAXSPACE is a free data retrieval call binding the contract method 0x8c946df4. +// +// Solidity: function MAX_SPACE() view returns(uint256) +func (_SessionManager *SessionManagerSession) MAXSPACE() (*big.Int, error) { + return _SessionManager.Contract.MAXSPACE(&_SessionManager.CallOpts) +} + +// MAXSPACE is a free data retrieval call binding the contract method 0x8c946df4. +// +// Solidity: function MAX_SPACE() view returns(uint256) +func (_SessionManager *SessionManagerCallerSession) MAXSPACE() (*big.Int, error) { + return _SessionManager.Contract.MAXSPACE(&_SessionManager.CallOpts) +} + +// VALUETRACKINGADDRESS is a free data retrieval call binding the contract method 0xf916f3b2. +// +// Solidity: function VALUE_TRACKING_ADDRESS() view returns(address) +func (_SessionManager *SessionManagerCaller) VALUETRACKINGADDRESS(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SessionManager.contract.Call(opts, &out, "VALUE_TRACKING_ADDRESS") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// VALUETRACKINGADDRESS is a free data retrieval call binding the contract method 0xf916f3b2. +// +// Solidity: function VALUE_TRACKING_ADDRESS() view returns(address) +func (_SessionManager *SessionManagerSession) VALUETRACKINGADDRESS() (common.Address, error) { + return _SessionManager.Contract.VALUETRACKINGADDRESS(&_SessionManager.CallOpts) +} + +// VALUETRACKINGADDRESS is a free data retrieval call binding the contract method 0xf916f3b2. +// +// Solidity: function VALUE_TRACKING_ADDRESS() view returns(address) +func (_SessionManager *SessionManagerCallerSession) VALUETRACKINGADDRESS() (common.Address, error) { + return _SessionManager.Contract.VALUETRACKINGADDRESS(&_SessionManager.CallOpts) +} + +// GetLimitUsage is a free data retrieval call binding the contract method 0x23b3713e. +// +// Solidity: function getLimitUsage(address wallet, bytes32 usageHash) view returns(uint256) +func (_SessionManager *SessionManagerCaller) GetLimitUsage(opts *bind.CallOpts, wallet common.Address, usageHash [32]byte) (*big.Int, error) { + var out []interface{} + err := _SessionManager.contract.Call(opts, &out, "getLimitUsage", wallet, usageHash) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetLimitUsage is a free data retrieval call binding the contract method 0x23b3713e. +// +// Solidity: function getLimitUsage(address wallet, bytes32 usageHash) view returns(uint256) +func (_SessionManager *SessionManagerSession) GetLimitUsage(wallet common.Address, usageHash [32]byte) (*big.Int, error) { + return _SessionManager.Contract.GetLimitUsage(&_SessionManager.CallOpts, wallet, usageHash) +} + +// GetLimitUsage is a free data retrieval call binding the contract method 0x23b3713e. +// +// Solidity: function getLimitUsage(address wallet, bytes32 usageHash) view returns(uint256) +func (_SessionManager *SessionManagerCallerSession) GetLimitUsage(wallet common.Address, usageHash [32]byte) (*big.Int, error) { + return _SessionManager.Contract.GetLimitUsage(&_SessionManager.CallOpts, wallet, usageHash) +} + +// RecoverSapientSignature is a free data retrieval call binding the contract method 0x13792a4a. +// +// Solidity: function recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]) payload, bytes encodedSignature) view returns(bytes32) +func (_SessionManager *SessionManagerCaller) RecoverSapientSignature(opts *bind.CallOpts, payload PayloadDecoded, encodedSignature []byte) ([32]byte, error) { + var out []interface{} + err := _SessionManager.contract.Call(opts, &out, "recoverSapientSignature", payload, encodedSignature) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// RecoverSapientSignature is a free data retrieval call binding the contract method 0x13792a4a. +// +// Solidity: function recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]) payload, bytes encodedSignature) view returns(bytes32) +func (_SessionManager *SessionManagerSession) RecoverSapientSignature(payload PayloadDecoded, encodedSignature []byte) ([32]byte, error) { + return _SessionManager.Contract.RecoverSapientSignature(&_SessionManager.CallOpts, payload, encodedSignature) +} + +// RecoverSapientSignature is a free data retrieval call binding the contract method 0x13792a4a. +// +// Solidity: function recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]) payload, bytes encodedSignature) view returns(bytes32) +func (_SessionManager *SessionManagerCallerSession) RecoverSapientSignature(payload PayloadDecoded, encodedSignature []byte) ([32]byte, error) { + return _SessionManager.Contract.RecoverSapientSignature(&_SessionManager.CallOpts, payload, encodedSignature) +} + +// ValidatePermission is a free data retrieval call binding the contract method 0x313dade7. +// +// Solidity: function validatePermission((address,(bool,uint8,bytes32,uint256,bytes32)[]) permission, (address,uint256,bytes,uint256,bool,bool,uint256) call, address wallet, address signer, (bytes32,uint256)[] usageLimits) view returns(bool, (bytes32,uint256)[] newUsageLimits) +func (_SessionManager *SessionManagerCaller) ValidatePermission(opts *bind.CallOpts, permission Permission, call PayloadCall, wallet common.Address, signer common.Address, usageLimits []UsageLimit) (bool, []UsageLimit, error) { + var out []interface{} + err := _SessionManager.contract.Call(opts, &out, "validatePermission", permission, call, wallet, signer, usageLimits) + + if err != nil { + return *new(bool), *new([]UsageLimit), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out1 := *abi.ConvertType(out[1], new([]UsageLimit)).(*[]UsageLimit) + + return out0, out1, err + +} + +// ValidatePermission is a free data retrieval call binding the contract method 0x313dade7. +// +// Solidity: function validatePermission((address,(bool,uint8,bytes32,uint256,bytes32)[]) permission, (address,uint256,bytes,uint256,bool,bool,uint256) call, address wallet, address signer, (bytes32,uint256)[] usageLimits) view returns(bool, (bytes32,uint256)[] newUsageLimits) +func (_SessionManager *SessionManagerSession) ValidatePermission(permission Permission, call PayloadCall, wallet common.Address, signer common.Address, usageLimits []UsageLimit) (bool, []UsageLimit, error) { + return _SessionManager.Contract.ValidatePermission(&_SessionManager.CallOpts, permission, call, wallet, signer, usageLimits) +} + +// ValidatePermission is a free data retrieval call binding the contract method 0x313dade7. +// +// Solidity: function validatePermission((address,(bool,uint8,bytes32,uint256,bytes32)[]) permission, (address,uint256,bytes,uint256,bool,bool,uint256) call, address wallet, address signer, (bytes32,uint256)[] usageLimits) view returns(bool, (bytes32,uint256)[] newUsageLimits) +func (_SessionManager *SessionManagerCallerSession) ValidatePermission(permission Permission, call PayloadCall, wallet common.Address, signer common.Address, usageLimits []UsageLimit) (bool, []UsageLimit, error) { + return _SessionManager.Contract.ValidatePermission(&_SessionManager.CallOpts, permission, call, wallet, signer, usageLimits) +} + +// IncrementUsageLimit is a paid mutator transaction binding the contract method 0x42de1418. +// +// Solidity: function incrementUsageLimit((bytes32,uint256)[] limits) returns() +func (_SessionManager *SessionManagerTransactor) IncrementUsageLimit(opts *bind.TransactOpts, limits []UsageLimit) (*types.Transaction, error) { + return _SessionManager.contract.Transact(opts, "incrementUsageLimit", limits) +} + +// IncrementUsageLimit is a paid mutator transaction binding the contract method 0x42de1418. +// +// Solidity: function incrementUsageLimit((bytes32,uint256)[] limits) returns() +func (_SessionManager *SessionManagerSession) IncrementUsageLimit(limits []UsageLimit) (*types.Transaction, error) { + return _SessionManager.Contract.IncrementUsageLimit(&_SessionManager.TransactOpts, limits) +} + +// IncrementUsageLimit is a paid mutator transaction binding the contract method 0x42de1418. +// +// Solidity: function incrementUsageLimit((bytes32,uint256)[] limits) returns() +func (_SessionManager *SessionManagerTransactorSession) IncrementUsageLimit(limits []UsageLimit) (*types.Transaction, error) { + return _SessionManager.Contract.IncrementUsageLimit(&_SessionManager.TransactOpts, limits) +} + +// SessionManagerLimitUsageUpdatedIterator is returned from FilterLimitUsageUpdated and is used to iterate over the raw logs and unpacked data for LimitUsageUpdated events raised by the SessionManager contract. +type SessionManagerLimitUsageUpdatedIterator struct { + Event *SessionManagerLimitUsageUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SessionManagerLimitUsageUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SessionManagerLimitUsageUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SessionManagerLimitUsageUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SessionManagerLimitUsageUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SessionManagerLimitUsageUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SessionManagerLimitUsageUpdated represents a LimitUsageUpdated event raised by the SessionManager contract. +type SessionManagerLimitUsageUpdated struct { + Wallet common.Address + UsageHash [32]byte + UsageAmount *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterLimitUsageUpdated is a free log retrieval operation binding the contract event 0x42063b8d32ac0a88f94053143bb30a789b3d5dfabb27d6c8a54e23d4fef30851. +// +// Solidity: event LimitUsageUpdated(address wallet, bytes32 usageHash, uint256 usageAmount) +func (_SessionManager *SessionManagerFilterer) FilterLimitUsageUpdated(opts *bind.FilterOpts) (*SessionManagerLimitUsageUpdatedIterator, error) { + + logs, sub, err := _SessionManager.contract.FilterLogs(opts, "LimitUsageUpdated") + if err != nil { + return nil, err + } + return &SessionManagerLimitUsageUpdatedIterator{contract: _SessionManager.contract, event: "LimitUsageUpdated", logs: logs, sub: sub}, nil +} + +// WatchLimitUsageUpdated is a free log subscription operation binding the contract event 0x42063b8d32ac0a88f94053143bb30a789b3d5dfabb27d6c8a54e23d4fef30851. +// +// Solidity: event LimitUsageUpdated(address wallet, bytes32 usageHash, uint256 usageAmount) +func (_SessionManager *SessionManagerFilterer) WatchLimitUsageUpdated(opts *bind.WatchOpts, sink chan<- *SessionManagerLimitUsageUpdated) (event.Subscription, error) { + + logs, sub, err := _SessionManager.contract.WatchLogs(opts, "LimitUsageUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SessionManagerLimitUsageUpdated) + if err := _SessionManager.contract.UnpackLog(event, "LimitUsageUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseLimitUsageUpdated is a log parse operation binding the contract event 0x42063b8d32ac0a88f94053143bb30a789b3d5dfabb27d6c8a54e23d4fef30851. +// +// Solidity: event LimitUsageUpdated(address wallet, bytes32 usageHash, uint256 usageAmount) +func (_SessionManager *SessionManagerFilterer) ParseLimitUsageUpdated(log types.Log) (*SessionManagerLimitUsageUpdated, error) { + event := new(SessionManagerLimitUsageUpdated) + if err := _SessionManager.contract.UnpackLog(event, "LimitUsageUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SessionManagerDeployedBin is the resulting bytecode of the created contract +const SessionManagerDeployedBin = "0x6080604052600436101561001257600080fd5b60003560e01c806313792a4a1461007757806323b3713e14610072578063313dade71461006d57806342de1418146100685780638c946df4146100635763f916f3b21461005e57600080fd5b6106b6565b610672565b6105c6565b6103ff565b610194565b3461014a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5760043567ffffffffffffffff811161014a576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261014a5760243567ffffffffffffffff811161014a573660238201121561014a57806004013567ffffffffffffffff811161014a57366024828401011161014a576101469260246101369301906004016109d1565b6040519081529081906020820190565b0390f35b600080fd5b73ffffffffffffffffffffffffffffffffffffffff81160361014a57565b6044359061017a8261014f565b565b6064359061017a8261014f565b359061017a8261014f565b3461014a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a576004356101cf8161014f565b73ffffffffffffffffffffffffffffffffffffffff602435911660005260006020526040600020906000526020526020604060002054604051908152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761025857604052565b61020d565b60a0810190811067ffffffffffffffff82111761025857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761025857604052565b6040519061017a604083610279565b6040519061017a60e083610279565b6040519061017a61012083610279565b67ffffffffffffffff81116102585760051b60200190565b8015150361014a57565b359061017a82610300565b908160e091031261014a5790565b81601f8201121561014a5780359061033a826102e8565b926103486040519485610279565b82845260208085019360061b8301019181831161014a57602001925b828410610372575050505090565b60408483031261014a576020604091825161038c8161023c565b863581528287013583820152815201930192610364565b906020808351928381520192019060005b8181106103c15750505090565b82518051855260209081015181860152604090940193909201916001016103b4565b6040906103fc93921515815281602082015201906103a3565b90565b3461014a5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5760043567ffffffffffffffff811161014a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc823603011261014a57604051906104798261023c565b80600401356104878161014f565b825260248101359067ffffffffffffffff821161014a57013660238201121561014a5760048101356104b8816102e8565b916104c66040519384610279565b8183526020600460a08286019402830101019036821161014a57602401915b81831061056057505050602082015260243567ffffffffffffffff811161014a57610514903690600401610315565b9061051d61016d565b61052561017c565b906084359367ffffffffffffffff851161014a5761054a610550953690600401610323565b9361108d565b90610146604051928392836103e3565b60a08336031261014a57604051906105778261025d565b833561058281610300565b8252602084013590600482101561014a57826020928360a09501526040860135604082015260608601356060820152608086013560808201528152019201916104e5565b3461014a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a5760043567ffffffffffffffff811161014a573660238201121561014a57806004013567ffffffffffffffff811161014a573660248260061b8401011161014a57602461064192016113d6565b005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b3461014a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a57602069fffffffffffffffffffe604051908152f35b3461014a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261014a57602060405173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8152f35b60ff81160361014a57565b356103fc81610703565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561014a570180359067ffffffffffffffff821161014a57602001918160051b3603831361014a57565b604051906060820182811067ffffffffffffffff821117610258576040526000604083828152606060208201520152565b906107a7826102e8565b6107b46040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06107e282946102e8565b019060005b8281106107f357505050565b6020906107fe61076c565b828285010152016107e7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9015610872578035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff218136030182121561014a570190565b61080a565b91908110156108725760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff218136030182121561014a570190565b356103fc81610300565b356103fc8161014f565b80518210156108725760209160051b010190565b604051906108ec8261023c565b60006020838281520152565b60405190610907602083610279565b600080835282815b82811061091b57505050565b6020906109266108df565b8282850101520161090f565b9061093c826102e8565b6109496040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061097782946102e8565b019060005b82811061098857505050565b6020906109936108df565b8282850101520161097c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109cc5760010190565b610643565b919060ff6109de8461070e565b16610efa57606083013569fffffffffffffffffffe8111610ecc57506040830191610a098385610718565b905015610ea257610a1e918495939533611982565b91610a33610a2c8583610718565b905061079d565b9060009460808501955b610a478284610718565b9050811015610de957610a6481610a5e8486610718565b90610877565b610a70608082016108b7565b610dbf5733610a9a610a81836108c1565b73ffffffffffffffffffffffffffffffffffffffff1690565b14610d9557600260c082013514610d6b57610ab68289516108cb565b51805115610b005760019291816060610ae96020610afa95015173ffffffffffffffffffffffffffffffffffffffff1690565b9101519060408b0151923390612306565b01610a3d565b91959392969050610b0f61076c565b96602083019460005b8751811015610d4a57610b4c610a81610b31838b6108cb565b515173ffffffffffffffffffffffffffffffffffffffff1690565b15610c1357610b5e610b31828a6108cb565b73ffffffffffffffffffffffffffffffffffffffff610b94610a818a5173ffffffffffffffffffffffffffffffffffffffff1690565b911614610ba357600101610b18565b9097929850610bfc610c0d9295968a600196610bf360406060610be7610bca8f8a906108cb565b51965b5173ffffffffffffffffffffffffffffffffffffffff1690565b94015192015160ff1690565b9133888c611d87565b610c0682896108cb565b52866108cb565b50610afa565b90979298610bfc908a600196610bf360406060610be78d610c6b610c0d9b9e9f610c51905173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff168952565b610c736108f8565b6020890152610d41610c99825173ffffffffffffffffffffffffffffffffffffffff1690565b855173ffffffffffffffffffffffffffffffffffffffff9091166020820190815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee604083015290610d0a81606081015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610279565b5190203373ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000209060005260205260406000205490565b84890152610bcd565b90979298610bfc908a600196610bf360406060610be7610c0d999c9d610bcd565b7fc8103a190000000000000000000000000000000000000000000000000000000060005260046000fd5b7f540733ea0000000000000000000000000000000000000000000000000000000060005260046000fd5b7faa25f2ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b50919093929450610dfa815161079d565b9260009260005b8351811015610e7c576020610e1682866108cb565b5101515115801590610e65575b610e30575b600101610e01565b93610e5d600191610e4187876108cb565b51610e4c828a6108cb565b52610e5781896108cb565b5061099f565b949050610e28565b506040610e7282866108cb565b5101511515610e23565b50610e999250610e939195610e9e95948552610718565b90610839565b612537565b5190565b7f542f0af50000000000000000000000000000000000000000000000000000000060005260046000fd5b7fdce5eceb0000000000000000000000000000000000000000000000000000000060005260045260245b6000fd5b7f720521200000000000000000000000000000000000000000000000000000000060005260046000fd5b90600182018092116109cc57565b919082018092116109cc57565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561014a570180359067ffffffffffffffff821161014a5760200191813603831361014a57565b60041115610f9a57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9392919073ffffffffffffffffffffffffffffffffffffffff16845260606020850152602060a085019173ffffffffffffffffffffffffffffffffffffffff81511660608701520151604060808601528051809252602060c0860191019160005b81811061103c57505060409150930152565b909183518051151582526020810151906004821015610f9a5782608060a09260209485600197015260408101516040840152606081015160608401520151608082015201940191019291909261102a565b9490919293946110b1815173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff6110d2610a81866108c1565b9116036113bb578551926110f56110f0602084019586515190610f32565b610932565b9460005b885181101561112c578061110f6001928b6108cb565b5161111a828a6108cb565b5261112581896108cb565b50016110f9565b50909294919395875160005b885180518210156113aa578161114d916108cb565b5161117161115e6040890189610f3f565b5060608301519081013591602090910190565b50608082015116906111838151151590565b611256575b60208101805161119781610f90565b6111a081610f90565b6111c6575060400151036111b8576001905b01611138565b506000989750505050505050565b600381516111d381610f90565b6111dc81610f90565b036111f3575060400151106111b8576001906111b2565b6001815161120081610f90565b61120981610f90565b03611220575060400151146111b8576001906111b2565b6002905161122d81610f90565b61123681610f90565b14611246575b50506001906111b2565b60400151116111b857388061123c565b9691989795929093998a610cde6112798c6040519283918c602084019687610fc9565b519020966000936112886108df565b9c60005b87518110156113925761129f81896108cb565b515115611345578a6112b1828a6108cb565b5151146112c05760010161128c565b6020949e50879a9198939c9d96506112de906112f3939c96986108cb565b519284840151915b82156112fe575b50610f32565b918291015290611188565b61133d91925061132e8b73ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b90600052602052604060002090565b5490386112ed565b6020949e506112f3929b95509761138c89899c99959e9f98939a6113869061136b6102ba565b978c895260008a8a01528861138083836108cb565b526108cb565b50610f24565b976112e6565b5096946020939d929b9c956112f3929b95979a6112e6565b505083525060019650909450505050565b509250505060009190565b91908110156108725760061b0190565b60005b8281106113e557505050565b60206113f28285856113c6565b01356114376114028386866113c6565b353373ffffffffffffffffffffffffffffffffffffffff16600052600060205260406000209060005260205260406000205490565b116114b157807f42063b8d32ac0a88f94053143bb30a789b3d5dfabb27d6c8a54e23d4fef30851606061146d60019487876113c6565b35602061147b8589896113c6565b0135336000526000602052604060002082600052602052806040600020556040519133835260208301526040820152a1016113d9565b7e2a700a0000000000000000000000000000000000000000000000000000000060005260046000fd5b604051906114e78261025d565b6060608083600081526000602082015282604082015282808201520152565b9093929384831161014a57841161014a578101920390565b6040519061152b8261023c565b6000602083606081520152565b6040519060c0820182811067ffffffffffffffff8211176102585760405281600081526000602082015260006040820152600060608201526060608082015260a061158161151e565b910152565b90611590826102e8565b61159d6040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06115cb82946102e8565b019060005b8281106115dc57505050565b6020906115e7611538565b828285010152016115d0565b6040513d6000823e3d90fd5b604051906080820182811067ffffffffffffffff82111761025857604052816000815260006020820152600060408201526060611581611538565b90611644826102e8565b6116516040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061167f82946102e8565b019060005b82811061169057505050565b60209061169b6115ff565b82828501015201611684565b359061017a82610703565b92919267ffffffffffffffff821161025857604051916116fa601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200184610279565b82948184528183011161014a578281602093846000960137010152565b9080601f8301121561014a578160206103fc933591016116b2565b81601f8201121561014a57803590611749826102e8565b926117576040519485610279565b82845260208085019360051b8301019181831161014a5760208101935b83851061178357505050505090565b843567ffffffffffffffff811161014a57820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828603011261014a576117ca6102c9565b916117d760208301610189565b83526040820135602084015260608201359267ffffffffffffffff841161014a5760e08361180c886020809881980101611717565b60408401526080810135606084015261182760a0820161030a565b608084015261183860c0820161030a565b60a0840152013560c0820152815201940193611774565b9080601f8301121561014a578135611866816102e8565b926118746040519485610279565b81845260208085019260051b82010192831161014a57602001905b82821061189c5750505090565b6020809183356118ab8161014f565b81520191019061188f565b9190916101208184031261014a576118cc6102d8565b926118d6826116a7565b84526118e46020830161030a565b6020850152604082013567ffffffffffffffff811161014a5781611909918401611732565b6040850152606082013560608501526080820135608085015260a082013567ffffffffffffffff811161014a5781611942918401611717565b60a085015260c082013560c085015260e082013560e085015261010082013567ffffffffffffffff811161014a5761197a920161184f565b610100830152565b9062ffffff929493916119936114da565b50600095803560e81c60039516966119ca6119c26119bc6119b48b8a610f32565b898987611506565b90612878565b999097610f32565b97602087019173ffffffffffffffffffffffffffffffffffffffff611a03845173ffffffffffffffffffffffffffffffffffffffff1690565b1615611d31575096979596949560018101959083013560f81c611a2581611586565b9260005b89838210611c655750505015159081611c5c575b50611c3257611a78611a556040869594960185610718565b939050611a73611a648561163a565b9560808b0196875236906118b6565b612f85565b906000945b838610611abc5750505050505003611a925790565b7f4be6321b0000000000000000000000000000000000000000000000000000000060005260046000fd5b909192939495611ade611acd6115ff565b918381013560f81c91600190910190565b60808216151583529790825115611c1257607f168451811015611be8576000611b1d611b529a611b10602094896108cb565b5160608701525b86612e19565b9c909291611b2b878c61309b565b92604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa15611be357611b8d610a81600051610bcd6020860191829073ffffffffffffffffffffffffffffffffffffffff169052565b15611bb257611ba68160019389519061138083836108cb565b50019493929190611a7d565b7fc1e84ed600000000000000000000000000000000000000000000000000000000600052610ef66024906000600452565b6115f3565b7fbd8ba84d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6000611b1d611b529a611c2d602094604088019060ff169052565b611b17565b7feb6252040000000000000000000000000000000000000000000000000000000060005260046000fd5b90501538611a3d565b9060206000611c84611c9a9c611c8d95611c7d611538565b508b612d63565b8a959195612e19565b9e909291611b2b88612e5c565b838052039060015afa15611be35760005173ffffffffffffffffffffffffffffffffffffffff611ce1610a81865173ffffffffffffffffffffffffffffffffffffffff1690565b911603611d0757600191611cf582886108cb565b52611d0081876108cb565b5001611a29565b7f9e5c658b0000000000000000000000000000000000000000000000000000000060005260046000fd5b807f9e5c658b0000000000000000000000000000000000000000000000000000000060049252fd5b60405190611d668261025d565b60606080836000815260006020820152600060408201526000838201520152565b939594909192611d9561076c565b50611d9e611d59565b9660005b815181101561206957611db8610b3182846108cb565b73ffffffffffffffffffffffffffffffffffffffff808516911614611ddf57600101611da2565b90611df092939495969798506108cb565b51945b73ffffffffffffffffffffffffffffffffffffffff611e26875173ffffffffffffffffffffffffffffffffffffffff1690565b16156120255760208601518015158061201b575b611fee5750606086015167ffffffffffffffff1680151580611fdb575b611fa4575083610a5e826040611e6e940190610718565b92611e7b608085016108b7565b610dbf57611e88846108c1565b73ffffffffffffffffffffffffffffffffffffffff163014611f8f57506080850160ff815151931692831015611f6557611ed692611ec691516108cb565b519060208701948486519361108d565b9015611f3b5760209252013580611f24575b5060408083015191015110611efa5790565b7faa7feadc0000000000000000000000000000000000000000000000000000000060005260046000fd5b611f3360408401918251610f32565b905238611ee8565b7f868a64de0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f3f904dc00000000000000000000000000000000000000000000000000000000060005260046000fd5b9350505091506114b15760200135611efa5790565b7fb1bbfdd50000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff1660045260246000fd5b5067ffffffffffffffff81164211611e57565b7f331003b30000000000000000000000000000000000000000000000000000000060005260045260246000fd5b5046811415611e3a565b7fc1e84ed60000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff821660045260246000fd5b505090919293959495611df3565b9081602091031261014a575190565b60005b8381106120995750506000910152565b8181015183820152602001612089565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936120e581518092818752878088019101612086565b0116010190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b9073ffffffffffffffffffffffffffffffffffffffff823561214c8161014f565b1681526020820135602082015260408201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181121561014a57820160208135910167ffffffffffffffff821161014a57813603811361014a576121c460c09291839260e0604087015260e08601916120ec565b93606081013560608501526121e76121de6080830161030a565b15156080860152565b6121ff6121f660a0830161030a565b151560a0860152565b013591015290565b73ffffffffffffffffffffffffffffffffffffffff6103fc94921681526060602082015273ffffffffffffffffffffffffffffffffffffffff83511660608201527fffffffff000000000000000000000000000000000000000000000000000000006020840151166080820152604083015160a0820152606083015160c082015260a06122a4608085015160c060e08501526101208401906120a9565b930151927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa082820301610100830152602067ffffffffffffffff816122f287516040865260408601906120a9565b96015116910152604081840391015261212b565b9293909161232b610a81865173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff8216036124e357612353608085016108b7565b610dbf576123618282613124565b6124a0575061237890612373846108c1565b613124565b612452576020820135611efa5760208261239a610a81610a816123d0966108c1565b60405180809681947f9d043a66000000000000000000000000000000000000000000000000000000008352898860048501612207565b03915afa918215611be35760009261241f575b506123ee91926131ef565b036123f557565b7f0881ad5d0000000000000000000000000000000000000000000000000000000060005260046000fd5b6123ee92506124459060203d60201161244b575b61243d8183610279565b810190612077565b916123e3565b503d612433565b610ef661245e836108c1565b7fd33f19e70000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff16600452602490565b7fd33f19e70000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b7fc1e84ed60000000000000000000000000000000000000000000000000000000060005273ffffffffffffffffffffffffffffffffffffffff1660045260246000fd5b9060206103fc9281815201906103a3565b8151909190156127945761254a826108c1565b73ffffffffffffffffffffffffffffffffffffffff163014801590612785575b8015612773575b6114b157600092835b82518510156125cf5761259d90602061259387866108cb565b5101515190610f32565b9360406125aa82856108cb565b5101516125bb575b6001019361257a565b936125c760019161099f565b9490506125b2565b6125db91939450610932565b60009081935b83518510156127085760005b60206125f987876108cb565b51015151811015612646578061263f612622600193602061261a8b8b6108cb565b5101516108cb565b519561262d8161099f565b9661263882886108cb565b52856108cb565b50016125ed565b509493600190604061265882876108cb565b510151612668575b0193946125e1565b612702612678610b3183886108cb565b6040516126c481610cde602082019485602073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9193929373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b5190209460406126d484896108cb565b5101516126df6102ba565b96875260208701526126f08161099f565b956126fb82876108cb565b52846108cb565b50612660565b949350612765925061275e915060405161275081610cde60208201947f42de141800000000000000000000000000000000000000000000000000000000865260248301612526565b519020926040810190610f3f565b36916116b2565b60208151910120036114b157565b5061278060a083016108b7565b612571565b50600160c0830135141561256a565b5061279e906108c1565b73ffffffffffffffffffffffffffffffffffffffff1630146114b157565b906127c6826102e8565b6127d36040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061280182946102e8565b019060005b82811061281257505050565b60209061281d611d59565b82828501015201612806565b90612833826102e8565b6128406040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061286e82946102e8565b0190602036910137565b916128816114da565b60009384908190612894605e87046127bc565b91606085019283525b8681106128ad5750505152929150565b8181013560fc81901c97916001019060f81c818915612cb4575060018914612c825760028914612add57600389146129ac575060048814612917577f0ad9979000000000000000000000000000000000000000000000000000000000600052600488905260246000fd5b90919293949596506020860173ffffffffffffffffffffffffffffffffffffffff612956825173ffffffffffffffffffffffffffffffffffffffff1690565b16611d07578382013560601c815260149091019061297c9061297790610bcd565b613420565b865180156129a6579061299791600052602052604060002090565b86525b9594939291909561289d565b50612997565b98909192939495969750611c3257600f60019816600f8114612acc575b81906129d481612829565b604089019081526000805b838210612a2757505050506129f9826129ff928587611506565b906133ac565b86518015612a215790612a1a91600052602052604060002090565b865261299a565b50612a1a565b612a5e958881013560601c906014019690612a438486516108cb565b9073ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff80612a82610bcd8587516108cb565b9216911610612aa2578b612a9a610bcd8385516108cb565b9101906129df565b7f83f928070000000000000000000000000000000000000000000000000000000060005260046000fd5b50600281019083013560f01c6129c9565b612b40969850612b38612b4992600f6119bc939c96979a95989c169087929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b979088610f32565b80978787611506565b93909593612c6b575b6020860173ffffffffffffffffffffffffffffffffffffffff612b89825173ffffffffffffffffffffffffffffffffffffffff1690565b16612c01575b5060005b60608701518051821015612bd05790612bc9612bb1826001946108cb565b519b8a51612bbe8261099f565b9d61138083836108cb565b5001612b93565b505092909695939197948651801515600014612bfa57612a1a915190600052602052604060002090565b5051612a1a565b60208901612c26610a81825173ffffffffffffffffffffffffffffffffffffffff1690565b611d0757612c4b612c65925173ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff169052565b38612b8f565b91611c325760019160408601516040890152612b52565b508551969750949593949293919290916020820191840135908015612a215790612a1a91600052602052604060002090565b92939495969798505050612cc6611d59565b8184018035606090811c8352601482013560208401526034820135604084015260549091013560c01c9082015294612d02605c830184866132a1565b8093916080890152612d15918587611506565b612d1e91613357565b8751612d579291908015612d5d5790612d3f91600052602052604060002090565b88528551612d4c8261099f565b9761138083836108cb565b5061299a565b50612d3f565b612e0e91939293612e0862ffffff612de36018612d7e611538565b987fffffffff000000000000000000000000000000000000000000000000000000006014888301803560601c8d5201351660208b01520160208682013591019060408a015260208682013591019060608a01528560039092919283013560e81c920190565b911690612dfe61275e612df68484610f32565b838789611506565b6080890152610f32565b91613484565b929060a08201529190565b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff81116109cc5791565b73ffffffffffffffffffffffffffffffffffffffff81511690612f7f7fffffffff00000000000000000000000000000000000000000000000000000000602083015116610cde7fffffff0000000000000000000000000000000000000000000000000000000000604085015194606081015190608081015191612f6e6008602360a062ffffff87511695015180517fffffffffffffffff00000000000000000000000000000000000000000000000060208251930151916040519a8b9460e81b166020850152612f358151809260208888019101612086565b83019160c01b168382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8810187520185610279565b604051978896602088019a8b6134cf565b51902090565b90612f7f613052610cde9260208501511515600014613094576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a0815261304960c082610279565b519020936135cb565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b4690612fa2565b906040519060208201928352604082015260408152612f7f606082610279565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182136001166109cc57565b90600182019160006001841291129080158216911516176109cc57565b919091600083820193841291129080158216911516176109cc57565b600082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081136001166109cc57905b818113156131685750505050600090565b80820360008212838212811690848313901516176109cc5761318e906002900582613108565b9061319c610bcd83876108cb565b73ffffffffffffffffffffffffffffffffffffffff85811691168082036131c95750505050505050600190565b10156131de57506131d9906130eb565b613157565b91506131e9906130bb565b90613157565b9060405160208101907f616363657074496d706c6963697452657175657374000000000000000000000082526015815261322a603582610279565b5190209160406060820151910151907fffffffffffffffffffffffffffffffffffffffff000000000000000000000000604051936020850195865260601b1660408401526054830152607482015260748152612f7f609482610279565b604051906132948261023c565b6060602083600081520152565b60018301939281013560f81c6132b6816102e8565b926132c46040519485610279565b8184527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06132f1836102e8565b0160005b8181106133385750506000925b82841061331157505050509190565b909192956133226001918484613851565b979061332e82886108cb565b5201929190613302565b60209061334795939495613287565b82828901015201939291936132f5565b90612f7f60016020926040519381859282840197600089526021850137820101828101600081525003017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610279565b90612f7f600160209260405193818592828401977f030000000000000000000000000000000000000000000000000000000000000089526021850137820101828101600081525003017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610279565b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208201927f0400000000000000000000000000000000000000000000000000000000000000845260601b16602182015260158152612f7f603582610279565b929161348e61151e565b9060038101908581013560e81c019460038601918281116109cc5761275e6003936134bc92600b9785611506565b83528501013560c01c6020820152920190565b9390927fffffffff00000000000000000000000000000000000000000000000000000000605b989796937fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007fffffff00000000000000000000000000000000000000000000000000000000009660601b1687521660148601526018850152603884015260e81b16605882015261356e8251809360208785019101612086565b016135828251809360208685019101612086565b010190565b805160209091019060005b81811061359f5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101613592565b6101008101516040516135e681610cde602082018095613587565b519020906135f5815160ff1690565b60ff81168061366e57505090612f7f61361160408401516139cd565b92610cde60806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b600181036136cc57505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d46693810193845290810191909152606081019290925290612f7f8160808101610cde565b6002810361372257505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e460208201908152918101929092526060820192909252612f7f8160808101610cde565b600303613776575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d46660208201908152918101929092526060820192909252612f7f8160808101610cde565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b906137b0826102e8565b6137bd6040519182610279565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06137eb82946102e8565b019060005b8281106137fc57505050565b60209060405161380b8161025d565b60008152600083820152600060408201526000606082015260006080820152828285010152016137f0565b60ff166004811015610f9a5790565b6004821015610f9a5752565b60ff939291506138a6613896613879613868613287565b948481013560601c91601490910190565b73ffffffffffffffffffffffffffffffffffffffff909116855290565b8281013560f81c91600190910190565b94166138b1816137a6565b602084019081526000925b8284106138cb57505050509190565b9091929561398461396661394861391e61393b8b602061393461392c6139278c61390360019c8e60019092919283013560f81c920190565b989091613916888f8516151592516108cb565b519015159052565b60011c607f1690565b613836565b928b516108cb565b5101613845565b8581013591602090910190565b9060406139568c89516108cb565b5101528481013591602090910190565b9060606139748b88516108cb565b5101528381013591602090910190565b979060806139938387516108cb565b510152019291906138bc565b805160209091019060005b8181106139b75750505090565b82518452602093840193909201916001016139aa565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613a136139fd836102e8565b92613a0b6040519485610279565b8084526102e8565b0136602083013760005b8351811015613aef5780613a33600192866108cb565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152613adb61012082610279565b519020613ae882856108cb565b5201613a1d565b50909150604051612f7f81610cde60208201809561399f56fea2646970667358221220b45a3167c8d660248f406d64db12e8d28f37655937c3c2a3396f7e820339fc7a64736f6c634300081c0033" diff --git a/contracts/gen/v3/walletstage7702/wallet_stage7702.gen.go b/contracts/gen/v3/walletstage7702/wallet_stage7702.gen.go new file mode 100644 index 00000000..5b7c3ef5 --- /dev/null +++ b/contracts/gen/v3/walletstage7702/wallet_stage7702.gen.go @@ -0,0 +1,2065 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package walletstage7702 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/0xsequence/ethkit/go-ethereum" + "github.com/0xsequence/ethkit/go-ethereum/accounts/abi" + "github.com/0xsequence/ethkit/go-ethereum/accounts/abi/bind" + "github.com/0xsequence/ethkit/go-ethereum/common" + "github.com/0xsequence/ethkit/go-ethereum/core/types" + "github.com/0xsequence/ethkit/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// PackedUserOperation is an auto generated low-level Go binding around an user-defined struct. +type PackedUserOperation struct { + Sender common.Address + Nonce *big.Int + InitCode []byte + CallData []byte + AccountGasLimits [32]byte + PreVerificationGas *big.Int + GasFees [32]byte + PaymasterAndData []byte + Signature []byte +} + +// PayloadCall is an auto generated low-level Go binding around an user-defined struct. +type PayloadCall struct { + To common.Address + Value *big.Int + Data []byte + GasLimit *big.Int + DelegateCall bool + OnlyFallback bool + BehaviorOnError *big.Int +} + +// PayloadDecoded is an auto generated low-level Go binding around an user-defined struct. +type PayloadDecoded struct { + Kind uint8 + NoChainId bool + Calls []PayloadCall + Space *big.Int + Nonce *big.Int + Message []byte + ImageHash [32]byte + Digest [32]byte + ParentWallets []common.Address +} + +// WalletStage7702MetaData contains all meta data concerning the WalletStage7702 contract. +var WalletStage7702MetaData = &bind.MetaData{ + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_entryPoint\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_defaultCheckpointer\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"DEFAULT_CHECKPOINTER\",\"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\":\"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\":\"structPayload.Decoded\",\"components\":[{\"name\":\"kind\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"noChainId\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structPayload.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\":\"structPayload.Decoded\",\"components\":[{\"name\":\"kind\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"noChainId\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structPayload.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\":\"validateUserOp\",\"inputs\":[{\"name\":\"userOp\",\"type\":\"tuple\",\"internalType\":\"structPackedUserOperation\",\"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\":\"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\":\"structPayload.Decoded\",\"components\":[{\"name\":\"kind\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"noChainId\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structPayload.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\":\"structPayload.Decoded\",\"components\":[{\"name\":\"kind\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"noChainId\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structPayload.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\":\"structPayload.Decoded\",\"components\":[{\"name\":\"kind\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"noChainId\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structPayload.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\":\"structPayload.Decoded\",\"components\":[{\"name\":\"kind\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"noChainId\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"calls\",\"type\":\"tuple[]\",\"internalType\":\"structPayload.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\":\"structSnapshot\",\"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\"}]}]", + Bin: "0x60c03461008e57601f6140e038819003918201601f19168301916001600160401b0383118484101761009357808492604094855283398101031261008e57610052602061004b836100a9565b92016100a9565b60805260a05260405161402290816100be8239608051818181610e070152611d5c015260a0518181816110340152818161119b0152611a4a0152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b038216820361008e5756fe6080604052600436101561001e575b361561001c5761001c611dc8565b005b60003560e01c806223de291461018d57806313792a4a14610188578063150b7a02146101835780631626ba7e1461017e57806319822f7c146101795780631a9b2337146101745780631f6a1eb91461016f578063295614261461016a5780634fcf3eca1461016557806351605d8014610160578063540e3ad91461015b5780636ea44577146101565780638943ec02146101515780638c3f55631461014c57806392dcb3fc146101475780639c145aed14610142578063a65d69d41461013d578063aaf10f4214610138578063ad55366b14610133578063b93ea7ad1461012e578063bc197c8114610129578063f23a6e61146101245763f727ef1c0361000e57611562565b6114d5565b611403565b6112a4565b611258565b6111bf565b611150565b610fc1565b610f63565b610f27565b610ea3565b610e74565b610dbc565b610d83565b610c67565b610b80565b610a6f565b610a0c565b610957565b6108cf565b610842565b610745565b61024f565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b9181601f840112156101b55782359167ffffffffffffffff83116101b557602083818601950101116101b557565b346101b55760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610286610192565b5061028f6101ba565b506102986101dd565b5060843567ffffffffffffffff81116101b5576102b9903690600401610221565b505060a43567ffffffffffffffff81116101b55761001c903690600401610221565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff82111761032657604052565b6102db565b6040810190811067ffffffffffffffff82111761032657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761032657604052565b6040519061039760e083610347565b565b6040519061039761012083610347565b359060ff821682036101b557565b359081151582036101b557565b67ffffffffffffffff81116103265760051b60200190565b67ffffffffffffffff811161032657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192610422826103dc565b916104306040519384610347565b8294818452818301116101b5578281602093846000960137010152565b9080601f830112156101b55781602061046893359101610416565b90565b81601f820112156101b557803590610482826103c4565b926104906040519485610347565b82845260208085019360051b830101918183116101b55760208101935b8385106104bc57505050505090565b843567ffffffffffffffff81116101b557820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082860301126101b557610503610388565b9161051060208301610200565b83526040820135602084015260608201359267ffffffffffffffff84116101b55760e08361054588602080988198010161044d565b60408401526080810135606084015261056060a082016103b7565b608084015261057160c082016103b7565b60a0840152013560c08201528152019401936104ad565b9080601f830112156101b557813561059f816103c4565b926105ad6040519485610347565b81845260208085019260051b8201019283116101b557602001905b8282106105d55750505090565b602080916105e284610200565b8152019101906105c8565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82850301126101b55761065f610399565b9061066c816004016103a9565b825261067a602482016103b7565b6020830152604481013567ffffffffffffffff81116101b5578460046106a29284010161046b565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff81116101b5578460046106de9284010161044d565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116101b5576004859161071b930101610588565b610100820152916024359067ffffffffffffffff82116101b55761074191600401610221565b9091565b346101b557610753366105ed565b909161010081019261076e61076985515161166a565b61168a565b9160005b855180518210156107d557906107cf6107aa61079083600195611708565b5173ffffffffffffffffffffffffffffffffffffffff1690565b6107b48388611708565b9073ffffffffffffffffffffffffffffffffffffffff169052565b01610772565b50508383866107ea336107b483515185611708565b526107f6818484611e9a565b50156108085760405160018152602090f35b61083e906040519384937ff58cc8b500000000000000000000000000000000000000000000000000000000855260048501611963565b0390fd5b346101b55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610879610192565b506108826101ba565b5060643567ffffffffffffffff81116101b5576108a3903690600401610221565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b346101b55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043560243567ffffffffffffffff81116101b55760209161092761092d923690600401610221565b91611988565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126101b5576109da60209160243560443591600401611a31565b604051908152f35b7fffffffff000000000000000000000000000000000000000000000000000000008116036101b557565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020610a51600435610a4c816109e2565b6120aa565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b557610ab9903690600401610221565b60243567ffffffffffffffff81116101b557610ad9903690600401610221565b9160027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610b5657610b309360027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55611b9b565b60017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b7f37ed32e80000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557600435303303610c39578015610c0f576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a1005b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557600435610c9d816109e2565b303303610c395773ffffffffffffffffffffffffffffffffffffffff610cc2826120aa565b1615610d285760407fffffffff000000000000000000000000000000000000000000000000000000007f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19216610d19600082612eef565b815190815260006020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f1c3812cc000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b60009103126101b557565b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760206109da611c91565b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101b5576004359067ffffffffffffffff82116101b55761074191600401610221565b610e7d36610e2b565b90303303610c3957610e9361001c925a926121df565b90610e9d826128f4565b9061255e565b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610eda610192565b5060443567ffffffffffffffff81116101b557610efb903690600401610221565b505060206040517f8943ec02000000000000000000000000000000000000000000000000000000008152f35b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760206109da600435612982565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576040610f9f6004356129c8565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346101b557610fcf36610e2b565b9060027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610b565760027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156111265733036110f857303b156101b5576110a29160009160405193849283927f6ea4457700000000000000000000000000000000000000000000000000000000845260048401611d87565b038183305af180156110f3576110d85760017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b806110e760006110ed93610347565b80610d78565b38610b30565b6119d4565b7f1d6ddbf4000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7fd13d78350000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060006017303b146112195773ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6017600080303c60005162ef01008160e81c14611237575b50610a51565b73ffffffffffffffffffffffffffffffffffffffff915060481c1638611231565b346101b55760c061127460008061126e366105ed565b91612ac9565b92909190611280611c91565b821490604051958652602086015260408501526060840152608083015260a0820152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576004356112da816109e2565b6112e26101ba565b90303303610c395773ffffffffffffffffffffffffffffffffffffffff611308826120aa565b16611382577f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19173ffffffffffffffffffffffffffffffffffffffff7fffffffff000000000000000000000000000000000000000000000000000000006040931691166113758183612eef565b82519182526020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f5b4d6d6a000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b9181601f840112156101b55782359167ffffffffffffffff83116101b5576020808501948460051b0101116101b557565b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55761143a610192565b506114436101ba565b5060443567ffffffffffffffff81116101b5576114649036906004016113d2565b505060643567ffffffffffffffff81116101b5576114869036906004016113d2565b505060843567ffffffffffffffff81116101b5576114a8903690600401610221565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55761150c610192565b506115156101ba565b5060843567ffffffffffffffff81116101b557611536903690600401610221565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043561159c6101ba565b604435916bffffffffffffffffffffffff83168093036101b557303303610c39578273ffffffffffffffffffffffffffffffffffffffff836116277febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1967fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606097881b161785612e6b565b6040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906001820180921161167857565b61163b565b9190820180921161167857565b90611694826103c4565b6116a16040519182610347565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06116cf82946103c4565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805182101561171c5760209160051b010190565b6116d9565b919082519283825260005b84811061176b5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b8060208092840101518282860101520161172c565b9080602083519182815201916020808360051b8301019401926000915b8383106117ac57505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c08061181f604085015160e0604086015260e0850190611721565b936060810151606085015260808101511515608085015260a0810151151560a085015201519101529701930193019193929061179d565b906020808351928381520192019060005b8181106118745750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611867565b805160ff168252610468916020828101511515908201526101006118fe6118d860408501516101206040860152610120850190611780565b606085015160608501526080850151608085015260a085015184820360a0860152611721565b9260c081015160c084015260e081015160e0840152015190610100818403910152611856565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b9161197a61046894926040855260408501906118a0565b926020818503910152611924565b906119a5929161199661204f565b906003825260e0820152611e9a565b50156119cf577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b6040513d6000823e3d90fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156101b5570180359067ffffffffffffffff82116101b5576020019181360383136101b557565b909173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115611126578133036110f85780611ae5575b5050611ad57f1626ba7e0000000000000000000000000000000000000000000000000000000092610927836101007fffffffff000000000000000000000000000000000000000000000000000000009501906119e0565b1603611ae057600090565b600190565b813b156101b5576040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015291600091839160249183915af19283156110f3576109277fffffffff0000000000000000000000000000000000000000000000000000000093611ad5937f1626ba7e0000000000000000000000000000000000000000000000000000000096611b86575b5093505092611a7e565b806110e76000611b9593610347565b38611b7c565b91939290611baa905a936121df565b9160608301516080840151611bbe82612982565b818103611c5d57509060017f1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881920190611bf78282612eb0565b604080519182526020820192909252a1611c12828685611e9a565b929015611c25575061039793945061255e565b8361083e87926040519384937fa2b6d61b00000000000000000000000000000000000000000000000000000000855260048501611963565b917f9b6514f40000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf85480610468575060405160208101907f53657175656e6365207369676e65723a0a00000000000000000000000000000082527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660318201526001604582015260458152611d25606582610347565b519020600052600160205260406000206000526000602052604060002060005273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016602052604060002090565b916020610468938181520191611924565b3d15611dc3573d90611da9826103dc565b91611db76040519384610347565b82523d6000602084013e565b606090565b600436108015611dd55750565b611e0b906000357fffffffff00000000000000000000000000000000000000000000000000000000811691611e5d575b506120aa565b73ffffffffffffffffffffffffffffffffffffffff8116611e295750565b60008091604051368382378036810184815203915af4611e47611d98565b9015611e5557602081519101f35b602081519101fd5b7fffffffff000000000000000000000000000000000000000000000000000000008092503660040360031b1b161638611e05565b901561171c5790565b611ecd611ea78484611e91565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f800000000000000000000000000000000000000000000000000000000000000080821614611f505750611f05926000928392612ac9565b905091909192808210611f20575050611f1d90613ce1565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f0200000000000000000000000000000000000000000000000000000000000000908116146020820152611f86925090506128f4565b90611f90826129c8565b4281111561201d575073ffffffffffffffffffffffffffffffffffffffff81168015159081612012575b50611fc6575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b905033141538611fba565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff821117610326576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b73ffffffffffffffffffffffffffffffffffffffff906040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a120845216604082015260408152612121606082610347565b519020541690565b90612133826103c4565b6121406040519182610347565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061216e82946103c4565b019060005b82811061217f57505050565b60209060405161218e8161030a565b60008152600083820152606060408201526000606082015260006080820152600060a0820152600060c082015282828501015201612173565b909392938483116101b55784116101b5578101920390565b906121e861204f565b6000815291600190803560f81c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316016124b75750600060608601525b600761223760ff831660011c90565b1680612466575b50601081811603612438575060015b61225681612129565b604086019081526000925b82841061229e5750505050036122745790565b7f0bdf80380000000000000000000000000000000000000000000000000000000060005260046000fd5b9293919290918082013560f81c9060010194908560018083160361241657506122e8306122cc848751611708565b519073ffffffffffffffffffffffffffffffffffffffff169052565b6002808216146123f6575b6004808216146123a8575b600880821614612373575b9061235a61235460c0846123346010806001981614608061232b888c51611708565b51019015159052565b61234a60208083161460a061232b888c51611708565b1660061c60031690565b60ff1690565b60c0612367838751611708565b51015201929190612261565b946001919061235a906123549060c09086810135906020019990606061239a878b51611708565b510152939450505050612309565b946123f0908381013560e81c906003016123e96123d06123c8848461167d565b838c896121c7565b919060406123df888b51611708565b5101923691610416565b905261167d565b946122fe565b9482810135906020019590602061240e848751611708565b5101526122f3565b61243396508381013560601c9060140196906122cc848751611708565b6122e8565b60209081160361245557600282019181013560f01c905b9061224d565b600182019181013560f81c9061244f565b6124aa919383929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b929060808601523861223e565b80830135606090811c908701526014019250612228565b6124e6604092959493956060835260608301906118a0565b9460208201520152565b9261046896959260c09592855260208501526040840152606083015260808201528160a08201520190611721565b604090610468939281528160208201520190611721565b61254b61046894926060835260608301906118a0565b9260208201526040818403910152611721565b916000604082019384515190825b82811061257d575b50505050505050565b612588818851611708565b519361259760a0860151151590565b8061287b575b612841575060009360608101518015801580612838575b6128005784906125c76080850151151590565b156127ba57612672926125ee855173ffffffffffffffffffffffffffffffffffffffff1690565b91156127b457505a905b61266d8b61264160608d01516040890151908c8b604051998a967f4c4e814c000000000000000000000000000000000000000000000000000000006020890152602488016124f0565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284610347565b612e3e565b156126bb575b50600190867f5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a604051806126b185829190602083019252565b0390a25b0161256c565b60c00180511561276b57600181511461272c57516002146126dc5738612678565b93505050507fc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b91925061270d612e50565b9061271d6040519283928361251e565b0390a238808080808080612574565b508461083e612739612e50565b6040519384937f7f6b0bb100000000000000000000000000000000000000000000000000000000855260048501612535565b50925060018093867f115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d6127ac61279f612e50565b604051918291868361251e565b0390a26126b5565b906125f8565b83516127f593925073ffffffffffffffffffffffffffffffffffffffff16916020850151916000146127fa57505a905b604085015192612e2c565b612672565b906127ea565b838861083e5a6040519384937f21395274000000000000000000000000000000000000000000000000000000008552600485016124ce565b50815a106125b4565b9350600190867f9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b604051806127ac85829190602083019252565b50801561259d565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b1660318301526045820152604581526128ee606582610347565b51902090565b6129566128ee61291461290e602085015115153090612f2e565b93613029565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610347565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e83526040820152604081526129c1606082610347565b5190205490565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612a07606082610347565b51902054906bffffffffffffffffffffffff8260601c921690565b60405190612a2f8261032b565b60006020838281520152565b60031115612a4557565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b908160409103126101b557602060405191612a8e8361032b565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff61046894931681528160208201520190611721565b909491939291853560f81c600190938190612ae2612a22565b92612aec82612a3b565b60018203612cf6575b50600180871614612c95575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908096918196602016612b649060051c90565b612b6d9061166a565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a81612bb9846128f4565b988993612bc5936121c7565b91612bcf9361346b565b9098612be391600052602052604060002090565b90612bf691600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16612c1f91600052602052604060002090565b94815190868215159283612c8a575b505081612c7b575b50612c3e5750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b90506020820151101538612c36565b141591508638612c2e565b909691939450612ca781989398612a3b565b612ccc57612cc19581612cb9936121c7565b93909261321e565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06040881601612af5578981013560601c9750601401915087878a84612d3f85612a3b565b60028503612d50575b505050612af5565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c92604092612dd5929091612da091612d99918a90612d93898361167d565b926121c7565b3691610416565b83519586809481937fccce3bc80000000000000000000000000000000000000000000000000000000083523060048401612a9c565b0392165afa80156110f357612df392600091612dfd575b509361167d565b9087388a81612d48565b612e1f915060403d604011612e25575b612e178183610347565b810190612a74565b38612dec565b503d612e0d565b9160009391849360208451940192f190565b9160009291839260208351930191f490565b3d90604051916020818401016040528083526000602084013e565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612eaa606082610347565b51902055565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8352604082015260408152612eaa606082610347565b60405160208101917fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208352604082015260408152612eaa606082610347565b15612fde576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a081526128ee60c082610347565b4690612f37565b805160209091019060005b818110612ffd5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612ff0565b61010081015160405161304481612956602082018095612fe5565b51902090613053815160ff1690565b60ff8116806130cc575050906128ee61306f6040840151613d1b565b9261295660806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b6001810361312a57505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466938101938452908101919091526060810192909252906128ee8160808101612956565b6002810361318057505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4602082019081529181019290925260608201929092526128ee8160808101612956565b6003036131d4575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466602082019081529181019290925260608201929092526128ee8160808101612956565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b906124e69060409396959496606084526060840191611924565b919492909260009560009560009560009560009561323a61204f565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b82811061329157505050505050508051151580613283575b612c3e5750565b50602081015184111561327c565b600381019d50959b50939950919750929091906132b5908b9085013560e81c61167d565b958287036133f5578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c036133c65750613302916132fb898c9387896121c7565b908b612ac9565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106133805750928b885114613377575b808b101561334557508a60c08501528992959295949194939093613264565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b60008852613326565b8d8f61083e61339185858c8e6121c7565b9390926040519485947fb006aba000000000000000000000000000000000000000000000000000000000865260048601613204565b979899809b926133db8b6133e294888a6121c7565b9086612ac9565b50929d919c909b929a9092918e8e613316565b8a6002916132c2565b908160209103126101b55751610468816109e2565b604090610468949281528160208201520191611924565b73ffffffffffffffffffffffffffffffffffffffff610468959360609383521660208201528160408201520191611924565b908160209103126101b5575190565b9391909360009460009460005b818110613486575050505050565b8481013560f881901c9860019092019788979692909160fc1c988915613c7a575060018914613c3a5760028914613a6d5760038914613a3e57600489146139bd576006891461391d57600589146138cf576007891461380857600889146137b2576009891461368957600a8914613526577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b90919293949596975060038916978815613678575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908101908161359e9187876121c7565b6040517f898bd921000000000000000000000000000000000000000000000000000000008152939184916135d6918a60048501613413565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156110f35761361993600093613645575b5060ff909a168091019a613f7c565b90801561363f579061363391600052602052604060002090565b955b9392919093613478565b50613633565b60ff91935061366a9060203d8111613671575b6136628183610347565b81019061345c565b929061360a565b503d613658565b8084013560f81c985060010161353b565b909192939495969750600389169788156137a1575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190810190816137019187876121c7565b6040517f13792a4a00000000000000000000000000000000000000000000000000000000815293918491613739918b60048501611963565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156110f35761377b93600093613645575060ff909a168091019a613f7c565b90801561379b579061379591600052602052604060002090565b95613635565b50613795565b8084013560f81c985060010161369e565b9850602087019750949593949293919290918201356137d086613f23565b81146137e0575b61377b90613f3d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98506137d7565b975090919293949597600f169687156138bd575b6020600061382e61389b9a9b86613e56565b9c9092918a604051613871816129568a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156110f35761377b9060ff6000519a1680910199612883565b600189019883013560f81c975061381c565b9850602087019750949593949293919290918201358085146138f5575b61377b90613ee4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98506138ec565b989091929394959662ffffff985061393f612354600c8416603f9060021c1690565b9182156139a9575b6003168015613998575b90819061397c90613974908781013560e81c906003019c168c01809c89896121c7565b90898b61346b565b91111561398f575b9061377b9291613e99565b99820199613984565b50600281019084013560f01c613951565b8482013560f81c9250600190910190613947565b975097613a13613a20929394959697600f613a2893169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866121c7565b90868861346b565b9061379592980198600052602052604060002090565b98509650939492939192909190808201359060200196801561379b579061379591600052602052604060002090565b90919293949596975060038916978815613c29575b8084013560601c99613ae19160140190613aa19060021c600316612354565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b90810190613b4560208c613af785858b8b6121c7565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501613413565b0392165afa9081156110f3577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091613bfb575b501603613bb757509060ff61377b92991680910199612883565b61083e613bc88c93899389896121c7565b906040519485947fb2fed7ae0000000000000000000000000000000000000000000000000000000086526004860161342a565b613c1c915060203d8111613c22575b613c148183610347565b8101906133fe565b38613b9d565b503d613c0a565b8381013560f81c9850600101613a82565b98600f91929394959697985016968715613c69575b601481019761377b9160ff9091169084013560601c612883565b8281013560f81c9750600101613c4f565b98509091929394959698600f16978815613ccc575b5060206000613ca261389b9a9b86613e56565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c97506020613c8f565b613ce9611c91565b1490565b805160209091019060005b818110613d055750505090565b8251845260209384019390920191600101613cf8565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613d61613d4b836103c4565b92613d596040519485610347565b8084526103c4565b0136602083013760005b8351811015613e3d5780613d8160019286611708565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152613e2961012082610347565b519020613e368285611708565b5201613d6b565b509091506040516128ee81612956602082018095613ced565b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff81116116785791565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a00000000000000008552603884015260588301526078820152607881526128ee609882610347565b60405160208101917f53657175656e636520737461746963206469676573743a0a000000000000000083526038820152603881526128ee605882610347565b6129566128ee61291461290e600060208601511515612f2e565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a83526040820152604081526128ee606082610347565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d81526128ee608d8261034756fea264697066735822122070d2ccb5d2e8d1051d4fbeee4718ed4044611e6d09516015fc4e660973e187a464736f6c634300081c0033", +} + +// WalletStage7702ABI is the input ABI used to generate the binding from. +// Deprecated: Use WalletStage7702MetaData.ABI instead. +var WalletStage7702ABI = WalletStage7702MetaData.ABI + +// WalletStage7702Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use WalletStage7702MetaData.Bin instead. +var WalletStage7702Bin = WalletStage7702MetaData.Bin + +// DeployWalletStage7702 deploys a new Ethereum contract, binding an instance of WalletStage7702 to it. +func DeployWalletStage7702(auth *bind.TransactOpts, backend bind.ContractBackend, _entryPoint common.Address, _defaultCheckpointer common.Address) (common.Address, *types.Transaction, *WalletStage7702, error) { + parsed, err := WalletStage7702MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(WalletStage7702Bin), backend, _entryPoint, _defaultCheckpointer) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &WalletStage7702{WalletStage7702Caller: WalletStage7702Caller{contract: contract}, WalletStage7702Transactor: WalletStage7702Transactor{contract: contract}, WalletStage7702Filterer: WalletStage7702Filterer{contract: contract}}, nil +} + +// WalletStage7702 is an auto generated Go binding around an Ethereum contract. +type WalletStage7702 struct { + WalletStage7702Caller // Read-only binding to the contract + WalletStage7702Transactor // Write-only binding to the contract + WalletStage7702Filterer // Log filterer for contract events +} + +// WalletStage7702Caller is an auto generated read-only Go binding around an Ethereum contract. +type WalletStage7702Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WalletStage7702Transactor is an auto generated write-only Go binding around an Ethereum contract. +type WalletStage7702Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WalletStage7702Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type WalletStage7702Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WalletStage7702Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type WalletStage7702Session struct { + Contract *WalletStage7702 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WalletStage7702CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type WalletStage7702CallerSession struct { + Contract *WalletStage7702Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// WalletStage7702TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type WalletStage7702TransactorSession struct { + Contract *WalletStage7702Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WalletStage7702Raw is an auto generated low-level Go binding around an Ethereum contract. +type WalletStage7702Raw struct { + Contract *WalletStage7702 // Generic contract binding to access the raw methods on +} + +// WalletStage7702CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type WalletStage7702CallerRaw struct { + Contract *WalletStage7702Caller // Generic read-only contract binding to access the raw methods on +} + +// WalletStage7702TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type WalletStage7702TransactorRaw struct { + Contract *WalletStage7702Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewWalletStage7702 creates a new instance of WalletStage7702, bound to a specific deployed contract. +func NewWalletStage7702(address common.Address, backend bind.ContractBackend) (*WalletStage7702, error) { + contract, err := bindWalletStage7702(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &WalletStage7702{WalletStage7702Caller: WalletStage7702Caller{contract: contract}, WalletStage7702Transactor: WalletStage7702Transactor{contract: contract}, WalletStage7702Filterer: WalletStage7702Filterer{contract: contract}}, nil +} + +// NewWalletStage7702Caller creates a new read-only instance of WalletStage7702, bound to a specific deployed contract. +func NewWalletStage7702Caller(address common.Address, caller bind.ContractCaller) (*WalletStage7702Caller, error) { + contract, err := bindWalletStage7702(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &WalletStage7702Caller{contract: contract}, nil +} + +// NewWalletStage7702Transactor creates a new write-only instance of WalletStage7702, bound to a specific deployed contract. +func NewWalletStage7702Transactor(address common.Address, transactor bind.ContractTransactor) (*WalletStage7702Transactor, error) { + contract, err := bindWalletStage7702(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &WalletStage7702Transactor{contract: contract}, nil +} + +// NewWalletStage7702Filterer creates a new log filterer instance of WalletStage7702, bound to a specific deployed contract. +func NewWalletStage7702Filterer(address common.Address, filterer bind.ContractFilterer) (*WalletStage7702Filterer, error) { + contract, err := bindWalletStage7702(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &WalletStage7702Filterer{contract: contract}, nil +} + +// bindWalletStage7702 binds a generic wrapper to an already deployed contract. +func bindWalletStage7702(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := WalletStage7702MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WalletStage7702 *WalletStage7702Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WalletStage7702.Contract.WalletStage7702Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WalletStage7702 *WalletStage7702Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WalletStage7702.Contract.WalletStage7702Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WalletStage7702 *WalletStage7702Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WalletStage7702.Contract.WalletStage7702Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WalletStage7702 *WalletStage7702CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WalletStage7702.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WalletStage7702 *WalletStage7702TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WalletStage7702.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WalletStage7702 *WalletStage7702TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WalletStage7702.Contract.contract.Transact(opts, method, params...) +} + +// DEFAULTCHECKPOINTER is a free data retrieval call binding the contract method 0x540e3ad9. +// +// Solidity: function DEFAULT_CHECKPOINTER() view returns(address) +func (_WalletStage7702 *WalletStage7702Caller) DEFAULTCHECKPOINTER(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "DEFAULT_CHECKPOINTER") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// DEFAULTCHECKPOINTER is a free data retrieval call binding the contract method 0x540e3ad9. +// +// Solidity: function DEFAULT_CHECKPOINTER() view returns(address) +func (_WalletStage7702 *WalletStage7702Session) DEFAULTCHECKPOINTER() (common.Address, error) { + return _WalletStage7702.Contract.DEFAULTCHECKPOINTER(&_WalletStage7702.CallOpts) +} + +// DEFAULTCHECKPOINTER is a free data retrieval call binding the contract method 0x540e3ad9. +// +// Solidity: function DEFAULT_CHECKPOINTER() view returns(address) +func (_WalletStage7702 *WalletStage7702CallerSession) DEFAULTCHECKPOINTER() (common.Address, error) { + return _WalletStage7702.Contract.DEFAULTCHECKPOINTER(&_WalletStage7702.CallOpts) +} + +// Entrypoint is a free data retrieval call binding the contract method 0xa65d69d4. +// +// Solidity: function entrypoint() view returns(address) +func (_WalletStage7702 *WalletStage7702Caller) Entrypoint(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "entrypoint") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Entrypoint is a free data retrieval call binding the contract method 0xa65d69d4. +// +// Solidity: function entrypoint() view returns(address) +func (_WalletStage7702 *WalletStage7702Session) Entrypoint() (common.Address, error) { + return _WalletStage7702.Contract.Entrypoint(&_WalletStage7702.CallOpts) +} + +// Entrypoint is a free data retrieval call binding the contract method 0xa65d69d4. +// +// Solidity: function entrypoint() view returns(address) +func (_WalletStage7702 *WalletStage7702CallerSession) Entrypoint() (common.Address, error) { + return _WalletStage7702.Contract.Entrypoint(&_WalletStage7702.CallOpts) +} + +// GetImplementation is a free data retrieval call binding the contract method 0xaaf10f42. +// +// Solidity: function getImplementation() view returns(address) +func (_WalletStage7702 *WalletStage7702Caller) GetImplementation(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "getImplementation") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetImplementation is a free data retrieval call binding the contract method 0xaaf10f42. +// +// Solidity: function getImplementation() view returns(address) +func (_WalletStage7702 *WalletStage7702Session) GetImplementation() (common.Address, error) { + return _WalletStage7702.Contract.GetImplementation(&_WalletStage7702.CallOpts) +} + +// GetImplementation is a free data retrieval call binding the contract method 0xaaf10f42. +// +// Solidity: function getImplementation() view returns(address) +func (_WalletStage7702 *WalletStage7702CallerSession) GetImplementation() (common.Address, error) { + return _WalletStage7702.Contract.GetImplementation(&_WalletStage7702.CallOpts) +} + +// GetStaticSignature is a free data retrieval call binding the contract method 0x92dcb3fc. +// +// Solidity: function getStaticSignature(bytes32 _hash) view returns(address, uint256) +func (_WalletStage7702 *WalletStage7702Caller) GetStaticSignature(opts *bind.CallOpts, _hash [32]byte) (common.Address, *big.Int, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "getStaticSignature", _hash) + + if err != nil { + return *new(common.Address), *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + + return out0, out1, err + +} + +// GetStaticSignature is a free data retrieval call binding the contract method 0x92dcb3fc. +// +// Solidity: function getStaticSignature(bytes32 _hash) view returns(address, uint256) +func (_WalletStage7702 *WalletStage7702Session) GetStaticSignature(_hash [32]byte) (common.Address, *big.Int, error) { + return _WalletStage7702.Contract.GetStaticSignature(&_WalletStage7702.CallOpts, _hash) +} + +// GetStaticSignature is a free data retrieval call binding the contract method 0x92dcb3fc. +// +// Solidity: function getStaticSignature(bytes32 _hash) view returns(address, uint256) +func (_WalletStage7702 *WalletStage7702CallerSession) GetStaticSignature(_hash [32]byte) (common.Address, *big.Int, error) { + return _WalletStage7702.Contract.GetStaticSignature(&_WalletStage7702.CallOpts, _hash) +} + +// ImageHash is a free data retrieval call binding the contract method 0x51605d80. +// +// Solidity: function imageHash() view returns(bytes32) +func (_WalletStage7702 *WalletStage7702Caller) ImageHash(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "imageHash") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// ImageHash is a free data retrieval call binding the contract method 0x51605d80. +// +// Solidity: function imageHash() view returns(bytes32) +func (_WalletStage7702 *WalletStage7702Session) ImageHash() ([32]byte, error) { + return _WalletStage7702.Contract.ImageHash(&_WalletStage7702.CallOpts) +} + +// ImageHash is a free data retrieval call binding the contract method 0x51605d80. +// +// Solidity: function imageHash() view returns(bytes32) +func (_WalletStage7702 *WalletStage7702CallerSession) ImageHash() ([32]byte, error) { + return _WalletStage7702.Contract.ImageHash(&_WalletStage7702.CallOpts) +} + +// IsValidSignature is a free data retrieval call binding the contract method 0x1626ba7e. +// +// Solidity: function isValidSignature(bytes32 _hash, bytes _signature) view returns(bytes4) +func (_WalletStage7702 *WalletStage7702Caller) IsValidSignature(opts *bind.CallOpts, _hash [32]byte, _signature []byte) ([4]byte, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "isValidSignature", _hash, _signature) + + if err != nil { + return *new([4]byte), err + } + + out0 := *abi.ConvertType(out[0], new([4]byte)).(*[4]byte) + + return out0, err + +} + +// IsValidSignature is a free data retrieval call binding the contract method 0x1626ba7e. +// +// Solidity: function isValidSignature(bytes32 _hash, bytes _signature) view returns(bytes4) +func (_WalletStage7702 *WalletStage7702Session) IsValidSignature(_hash [32]byte, _signature []byte) ([4]byte, error) { + return _WalletStage7702.Contract.IsValidSignature(&_WalletStage7702.CallOpts, _hash, _signature) +} + +// IsValidSignature is a free data retrieval call binding the contract method 0x1626ba7e. +// +// Solidity: function isValidSignature(bytes32 _hash, bytes _signature) view returns(bytes4) +func (_WalletStage7702 *WalletStage7702CallerSession) IsValidSignature(_hash [32]byte, _signature []byte) ([4]byte, error) { + return _WalletStage7702.Contract.IsValidSignature(&_WalletStage7702.CallOpts, _hash, _signature) +} + +// OnERC1155BatchReceived is a free data retrieval call binding the contract method 0xbc197c81. +// +// Solidity: function onERC1155BatchReceived(address , address , uint256[] , uint256[] , bytes ) pure returns(bytes4) +func (_WalletStage7702 *WalletStage7702Caller) OnERC1155BatchReceived(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address, arg2 []*big.Int, arg3 []*big.Int, arg4 []byte) ([4]byte, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "onERC1155BatchReceived", arg0, arg1, arg2, arg3, arg4) + + if err != nil { + return *new([4]byte), err + } + + out0 := *abi.ConvertType(out[0], new([4]byte)).(*[4]byte) + + return out0, err + +} + +// OnERC1155BatchReceived is a free data retrieval call binding the contract method 0xbc197c81. +// +// Solidity: function onERC1155BatchReceived(address , address , uint256[] , uint256[] , bytes ) pure returns(bytes4) +func (_WalletStage7702 *WalletStage7702Session) OnERC1155BatchReceived(arg0 common.Address, arg1 common.Address, arg2 []*big.Int, arg3 []*big.Int, arg4 []byte) ([4]byte, error) { + return _WalletStage7702.Contract.OnERC1155BatchReceived(&_WalletStage7702.CallOpts, arg0, arg1, arg2, arg3, arg4) +} + +// OnERC1155BatchReceived is a free data retrieval call binding the contract method 0xbc197c81. +// +// Solidity: function onERC1155BatchReceived(address , address , uint256[] , uint256[] , bytes ) pure returns(bytes4) +func (_WalletStage7702 *WalletStage7702CallerSession) OnERC1155BatchReceived(arg0 common.Address, arg1 common.Address, arg2 []*big.Int, arg3 []*big.Int, arg4 []byte) ([4]byte, error) { + return _WalletStage7702.Contract.OnERC1155BatchReceived(&_WalletStage7702.CallOpts, arg0, arg1, arg2, arg3, arg4) +} + +// OnERC1155Received is a free data retrieval call binding the contract method 0xf23a6e61. +// +// Solidity: function onERC1155Received(address , address , uint256 , uint256 , bytes ) pure returns(bytes4) +func (_WalletStage7702 *WalletStage7702Caller) OnERC1155Received(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address, arg2 *big.Int, arg3 *big.Int, arg4 []byte) ([4]byte, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "onERC1155Received", arg0, arg1, arg2, arg3, arg4) + + if err != nil { + return *new([4]byte), err + } + + out0 := *abi.ConvertType(out[0], new([4]byte)).(*[4]byte) + + return out0, err + +} + +// OnERC1155Received is a free data retrieval call binding the contract method 0xf23a6e61. +// +// Solidity: function onERC1155Received(address , address , uint256 , uint256 , bytes ) pure returns(bytes4) +func (_WalletStage7702 *WalletStage7702Session) OnERC1155Received(arg0 common.Address, arg1 common.Address, arg2 *big.Int, arg3 *big.Int, arg4 []byte) ([4]byte, error) { + return _WalletStage7702.Contract.OnERC1155Received(&_WalletStage7702.CallOpts, arg0, arg1, arg2, arg3, arg4) +} + +// OnERC1155Received is a free data retrieval call binding the contract method 0xf23a6e61. +// +// Solidity: function onERC1155Received(address , address , uint256 , uint256 , bytes ) pure returns(bytes4) +func (_WalletStage7702 *WalletStage7702CallerSession) OnERC1155Received(arg0 common.Address, arg1 common.Address, arg2 *big.Int, arg3 *big.Int, arg4 []byte) ([4]byte, error) { + return _WalletStage7702.Contract.OnERC1155Received(&_WalletStage7702.CallOpts, arg0, arg1, arg2, arg3, arg4) +} + +// OnERC721Received is a free data retrieval call binding the contract method 0x150b7a02. +// +// Solidity: function onERC721Received(address , address , uint256 , bytes ) pure returns(bytes4) +func (_WalletStage7702 *WalletStage7702Caller) OnERC721Received(opts *bind.CallOpts, arg0 common.Address, arg1 common.Address, arg2 *big.Int, arg3 []byte) ([4]byte, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "onERC721Received", arg0, arg1, arg2, arg3) + + if err != nil { + return *new([4]byte), err + } + + out0 := *abi.ConvertType(out[0], new([4]byte)).(*[4]byte) + + return out0, err + +} + +// OnERC721Received is a free data retrieval call binding the contract method 0x150b7a02. +// +// Solidity: function onERC721Received(address , address , uint256 , bytes ) pure returns(bytes4) +func (_WalletStage7702 *WalletStage7702Session) OnERC721Received(arg0 common.Address, arg1 common.Address, arg2 *big.Int, arg3 []byte) ([4]byte, error) { + return _WalletStage7702.Contract.OnERC721Received(&_WalletStage7702.CallOpts, arg0, arg1, arg2, arg3) +} + +// OnERC721Received is a free data retrieval call binding the contract method 0x150b7a02. +// +// Solidity: function onERC721Received(address , address , uint256 , bytes ) pure returns(bytes4) +func (_WalletStage7702 *WalletStage7702CallerSession) OnERC721Received(arg0 common.Address, arg1 common.Address, arg2 *big.Int, arg3 []byte) ([4]byte, error) { + return _WalletStage7702.Contract.OnERC721Received(&_WalletStage7702.CallOpts, arg0, arg1, arg2, arg3) +} + +// ReadHook is a free data retrieval call binding the contract method 0x1a9b2337. +// +// Solidity: function readHook(bytes4 selector) view returns(address) +func (_WalletStage7702 *WalletStage7702Caller) ReadHook(opts *bind.CallOpts, selector [4]byte) (common.Address, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "readHook", selector) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ReadHook is a free data retrieval call binding the contract method 0x1a9b2337. +// +// Solidity: function readHook(bytes4 selector) view returns(address) +func (_WalletStage7702 *WalletStage7702Session) ReadHook(selector [4]byte) (common.Address, error) { + return _WalletStage7702.Contract.ReadHook(&_WalletStage7702.CallOpts, selector) +} + +// ReadHook is a free data retrieval call binding the contract method 0x1a9b2337. +// +// Solidity: function readHook(bytes4 selector) view returns(address) +func (_WalletStage7702 *WalletStage7702CallerSession) ReadHook(selector [4]byte) (common.Address, error) { + return _WalletStage7702.Contract.ReadHook(&_WalletStage7702.CallOpts, selector) +} + +// ReadNonce is a free data retrieval call binding the contract method 0x8c3f5563. +// +// Solidity: function readNonce(uint256 _space) view returns(uint256) +func (_WalletStage7702 *WalletStage7702Caller) ReadNonce(opts *bind.CallOpts, _space *big.Int) (*big.Int, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "readNonce", _space) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ReadNonce is a free data retrieval call binding the contract method 0x8c3f5563. +// +// Solidity: function readNonce(uint256 _space) view returns(uint256) +func (_WalletStage7702 *WalletStage7702Session) ReadNonce(_space *big.Int) (*big.Int, error) { + return _WalletStage7702.Contract.ReadNonce(&_WalletStage7702.CallOpts, _space) +} + +// ReadNonce is a free data retrieval call binding the contract method 0x8c3f5563. +// +// Solidity: function readNonce(uint256 _space) view returns(uint256) +func (_WalletStage7702 *WalletStage7702CallerSession) ReadNonce(_space *big.Int) (*big.Int, error) { + return _WalletStage7702.Contract.ReadNonce(&_WalletStage7702.CallOpts, _space) +} + +// RecoverPartialSignature is a free data retrieval call binding the contract method 0xad55366b. +// +// Solidity: function recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]) _payload, bytes _signature) view returns(uint256 threshold, uint256 weight, bool isValidImage, bytes32 imageHash, uint256 checkpoint, bytes32 opHash) +func (_WalletStage7702 *WalletStage7702Caller) RecoverPartialSignature(opts *bind.CallOpts, _payload PayloadDecoded, _signature []byte) (struct { + Threshold *big.Int + Weight *big.Int + IsValidImage bool + ImageHash [32]byte + Checkpoint *big.Int + OpHash [32]byte +}, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "recoverPartialSignature", _payload, _signature) + + outstruct := new(struct { + Threshold *big.Int + Weight *big.Int + IsValidImage bool + ImageHash [32]byte + Checkpoint *big.Int + OpHash [32]byte + }) + if err != nil { + return *outstruct, err + } + + outstruct.Threshold = *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + outstruct.Weight = *abi.ConvertType(out[1], new(*big.Int)).(**big.Int) + outstruct.IsValidImage = *abi.ConvertType(out[2], new(bool)).(*bool) + outstruct.ImageHash = *abi.ConvertType(out[3], new([32]byte)).(*[32]byte) + outstruct.Checkpoint = *abi.ConvertType(out[4], new(*big.Int)).(**big.Int) + outstruct.OpHash = *abi.ConvertType(out[5], new([32]byte)).(*[32]byte) + + return *outstruct, err + +} + +// RecoverPartialSignature is a free data retrieval call binding the contract method 0xad55366b. +// +// Solidity: function recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]) _payload, bytes _signature) view returns(uint256 threshold, uint256 weight, bool isValidImage, bytes32 imageHash, uint256 checkpoint, bytes32 opHash) +func (_WalletStage7702 *WalletStage7702Session) RecoverPartialSignature(_payload PayloadDecoded, _signature []byte) (struct { + Threshold *big.Int + Weight *big.Int + IsValidImage bool + ImageHash [32]byte + Checkpoint *big.Int + OpHash [32]byte +}, error) { + return _WalletStage7702.Contract.RecoverPartialSignature(&_WalletStage7702.CallOpts, _payload, _signature) +} + +// RecoverPartialSignature is a free data retrieval call binding the contract method 0xad55366b. +// +// Solidity: function recoverPartialSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]) _payload, bytes _signature) view returns(uint256 threshold, uint256 weight, bool isValidImage, bytes32 imageHash, uint256 checkpoint, bytes32 opHash) +func (_WalletStage7702 *WalletStage7702CallerSession) RecoverPartialSignature(_payload PayloadDecoded, _signature []byte) (struct { + Threshold *big.Int + Weight *big.Int + IsValidImage bool + ImageHash [32]byte + Checkpoint *big.Int + OpHash [32]byte +}, error) { + return _WalletStage7702.Contract.RecoverPartialSignature(&_WalletStage7702.CallOpts, _payload, _signature) +} + +// RecoverSapientSignature is a free data retrieval call binding the contract method 0x13792a4a. +// +// Solidity: function recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]) _payload, bytes _signature) view returns(bytes32) +func (_WalletStage7702 *WalletStage7702Caller) RecoverSapientSignature(opts *bind.CallOpts, _payload PayloadDecoded, _signature []byte) ([32]byte, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "recoverSapientSignature", _payload, _signature) + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// RecoverSapientSignature is a free data retrieval call binding the contract method 0x13792a4a. +// +// Solidity: function recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]) _payload, bytes _signature) view returns(bytes32) +func (_WalletStage7702 *WalletStage7702Session) RecoverSapientSignature(_payload PayloadDecoded, _signature []byte) ([32]byte, error) { + return _WalletStage7702.Contract.RecoverSapientSignature(&_WalletStage7702.CallOpts, _payload, _signature) +} + +// RecoverSapientSignature is a free data retrieval call binding the contract method 0x13792a4a. +// +// Solidity: function recoverSapientSignature((uint8,bool,(address,uint256,bytes,uint256,bool,bool,uint256)[],uint256,uint256,bytes,bytes32,bytes32,address[]) _payload, bytes _signature) view returns(bytes32) +func (_WalletStage7702 *WalletStage7702CallerSession) RecoverSapientSignature(_payload PayloadDecoded, _signature []byte) ([32]byte, error) { + return _WalletStage7702.Contract.RecoverSapientSignature(&_WalletStage7702.CallOpts, _payload, _signature) +} + +// TokenReceived is a free data retrieval call binding the contract method 0x8943ec02. +// +// Solidity: function tokenReceived(address , uint256 , bytes ) pure returns(bytes4) +func (_WalletStage7702 *WalletStage7702Caller) TokenReceived(opts *bind.CallOpts, arg0 common.Address, arg1 *big.Int, arg2 []byte) ([4]byte, error) { + var out []interface{} + err := _WalletStage7702.contract.Call(opts, &out, "tokenReceived", arg0, arg1, arg2) + + if err != nil { + return *new([4]byte), err + } + + out0 := *abi.ConvertType(out[0], new([4]byte)).(*[4]byte) + + return out0, err + +} + +// TokenReceived is a free data retrieval call binding the contract method 0x8943ec02. +// +// Solidity: function tokenReceived(address , uint256 , bytes ) pure returns(bytes4) +func (_WalletStage7702 *WalletStage7702Session) TokenReceived(arg0 common.Address, arg1 *big.Int, arg2 []byte) ([4]byte, error) { + return _WalletStage7702.Contract.TokenReceived(&_WalletStage7702.CallOpts, arg0, arg1, arg2) +} + +// TokenReceived is a free data retrieval call binding the contract method 0x8943ec02. +// +// Solidity: function tokenReceived(address , uint256 , bytes ) pure returns(bytes4) +func (_WalletStage7702 *WalletStage7702CallerSession) TokenReceived(arg0 common.Address, arg1 *big.Int, arg2 []byte) ([4]byte, error) { + return _WalletStage7702.Contract.TokenReceived(&_WalletStage7702.CallOpts, arg0, arg1, arg2) +} + +// AddHook is a paid mutator transaction binding the contract method 0xb93ea7ad. +// +// Solidity: function addHook(bytes4 selector, address implementation) payable returns() +func (_WalletStage7702 *WalletStage7702Transactor) AddHook(opts *bind.TransactOpts, selector [4]byte, implementation common.Address) (*types.Transaction, error) { + return _WalletStage7702.contract.Transact(opts, "addHook", selector, implementation) +} + +// AddHook is a paid mutator transaction binding the contract method 0xb93ea7ad. +// +// Solidity: function addHook(bytes4 selector, address implementation) payable returns() +func (_WalletStage7702 *WalletStage7702Session) AddHook(selector [4]byte, implementation common.Address) (*types.Transaction, error) { + return _WalletStage7702.Contract.AddHook(&_WalletStage7702.TransactOpts, selector, implementation) +} + +// AddHook is a paid mutator transaction binding the contract method 0xb93ea7ad. +// +// Solidity: function addHook(bytes4 selector, address implementation) payable returns() +func (_WalletStage7702 *WalletStage7702TransactorSession) AddHook(selector [4]byte, implementation common.Address) (*types.Transaction, error) { + return _WalletStage7702.Contract.AddHook(&_WalletStage7702.TransactOpts, selector, implementation) +} + +// Execute is a paid mutator transaction binding the contract method 0x1f6a1eb9. +// +// Solidity: function execute(bytes _payload, bytes _signature) payable returns() +func (_WalletStage7702 *WalletStage7702Transactor) Execute(opts *bind.TransactOpts, _payload []byte, _signature []byte) (*types.Transaction, error) { + return _WalletStage7702.contract.Transact(opts, "execute", _payload, _signature) +} + +// Execute is a paid mutator transaction binding the contract method 0x1f6a1eb9. +// +// Solidity: function execute(bytes _payload, bytes _signature) payable returns() +func (_WalletStage7702 *WalletStage7702Session) Execute(_payload []byte, _signature []byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.Execute(&_WalletStage7702.TransactOpts, _payload, _signature) +} + +// Execute is a paid mutator transaction binding the contract method 0x1f6a1eb9. +// +// Solidity: function execute(bytes _payload, bytes _signature) payable returns() +func (_WalletStage7702 *WalletStage7702TransactorSession) Execute(_payload []byte, _signature []byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.Execute(&_WalletStage7702.TransactOpts, _payload, _signature) +} + +// ExecuteUserOp is a paid mutator transaction binding the contract method 0x9c145aed. +// +// Solidity: function executeUserOp(bytes _payload) returns() +func (_WalletStage7702 *WalletStage7702Transactor) ExecuteUserOp(opts *bind.TransactOpts, _payload []byte) (*types.Transaction, error) { + return _WalletStage7702.contract.Transact(opts, "executeUserOp", _payload) +} + +// ExecuteUserOp is a paid mutator transaction binding the contract method 0x9c145aed. +// +// Solidity: function executeUserOp(bytes _payload) returns() +func (_WalletStage7702 *WalletStage7702Session) ExecuteUserOp(_payload []byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.ExecuteUserOp(&_WalletStage7702.TransactOpts, _payload) +} + +// ExecuteUserOp is a paid mutator transaction binding the contract method 0x9c145aed. +// +// Solidity: function executeUserOp(bytes _payload) returns() +func (_WalletStage7702 *WalletStage7702TransactorSession) ExecuteUserOp(_payload []byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.ExecuteUserOp(&_WalletStage7702.TransactOpts, _payload) +} + +// RemoveHook is a paid mutator transaction binding the contract method 0x4fcf3eca. +// +// Solidity: function removeHook(bytes4 selector) payable returns() +func (_WalletStage7702 *WalletStage7702Transactor) RemoveHook(opts *bind.TransactOpts, selector [4]byte) (*types.Transaction, error) { + return _WalletStage7702.contract.Transact(opts, "removeHook", selector) +} + +// RemoveHook is a paid mutator transaction binding the contract method 0x4fcf3eca. +// +// Solidity: function removeHook(bytes4 selector) payable returns() +func (_WalletStage7702 *WalletStage7702Session) RemoveHook(selector [4]byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.RemoveHook(&_WalletStage7702.TransactOpts, selector) +} + +// RemoveHook is a paid mutator transaction binding the contract method 0x4fcf3eca. +// +// Solidity: function removeHook(bytes4 selector) payable returns() +func (_WalletStage7702 *WalletStage7702TransactorSession) RemoveHook(selector [4]byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.RemoveHook(&_WalletStage7702.TransactOpts, selector) +} + +// SelfExecute is a paid mutator transaction binding the contract method 0x6ea44577. +// +// Solidity: function selfExecute(bytes _payload) payable returns() +func (_WalletStage7702 *WalletStage7702Transactor) SelfExecute(opts *bind.TransactOpts, _payload []byte) (*types.Transaction, error) { + return _WalletStage7702.contract.Transact(opts, "selfExecute", _payload) +} + +// SelfExecute is a paid mutator transaction binding the contract method 0x6ea44577. +// +// Solidity: function selfExecute(bytes _payload) payable returns() +func (_WalletStage7702 *WalletStage7702Session) SelfExecute(_payload []byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.SelfExecute(&_WalletStage7702.TransactOpts, _payload) +} + +// SelfExecute is a paid mutator transaction binding the contract method 0x6ea44577. +// +// Solidity: function selfExecute(bytes _payload) payable returns() +func (_WalletStage7702 *WalletStage7702TransactorSession) SelfExecute(_payload []byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.SelfExecute(&_WalletStage7702.TransactOpts, _payload) +} + +// SetStaticSignature is a paid mutator transaction binding the contract method 0xf727ef1c. +// +// Solidity: function setStaticSignature(bytes32 _hash, address _address, uint96 _timestamp) returns() +func (_WalletStage7702 *WalletStage7702Transactor) SetStaticSignature(opts *bind.TransactOpts, _hash [32]byte, _address common.Address, _timestamp *big.Int) (*types.Transaction, error) { + return _WalletStage7702.contract.Transact(opts, "setStaticSignature", _hash, _address, _timestamp) +} + +// SetStaticSignature is a paid mutator transaction binding the contract method 0xf727ef1c. +// +// Solidity: function setStaticSignature(bytes32 _hash, address _address, uint96 _timestamp) returns() +func (_WalletStage7702 *WalletStage7702Session) SetStaticSignature(_hash [32]byte, _address common.Address, _timestamp *big.Int) (*types.Transaction, error) { + return _WalletStage7702.Contract.SetStaticSignature(&_WalletStage7702.TransactOpts, _hash, _address, _timestamp) +} + +// SetStaticSignature is a paid mutator transaction binding the contract method 0xf727ef1c. +// +// Solidity: function setStaticSignature(bytes32 _hash, address _address, uint96 _timestamp) returns() +func (_WalletStage7702 *WalletStage7702TransactorSession) SetStaticSignature(_hash [32]byte, _address common.Address, _timestamp *big.Int) (*types.Transaction, error) { + return _WalletStage7702.Contract.SetStaticSignature(&_WalletStage7702.TransactOpts, _hash, _address, _timestamp) +} + +// TokensReceived is a paid mutator transaction binding the contract method 0x0023de29. +// +// Solidity: function tokensReceived(address operator, address from, address to, uint256 amount, bytes data, bytes operatorData) returns() +func (_WalletStage7702 *WalletStage7702Transactor) TokensReceived(opts *bind.TransactOpts, operator common.Address, from common.Address, to common.Address, amount *big.Int, data []byte, operatorData []byte) (*types.Transaction, error) { + return _WalletStage7702.contract.Transact(opts, "tokensReceived", operator, from, to, amount, data, operatorData) +} + +// TokensReceived is a paid mutator transaction binding the contract method 0x0023de29. +// +// Solidity: function tokensReceived(address operator, address from, address to, uint256 amount, bytes data, bytes operatorData) returns() +func (_WalletStage7702 *WalletStage7702Session) TokensReceived(operator common.Address, from common.Address, to common.Address, amount *big.Int, data []byte, operatorData []byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.TokensReceived(&_WalletStage7702.TransactOpts, operator, from, to, amount, data, operatorData) +} + +// TokensReceived is a paid mutator transaction binding the contract method 0x0023de29. +// +// Solidity: function tokensReceived(address operator, address from, address to, uint256 amount, bytes data, bytes operatorData) returns() +func (_WalletStage7702 *WalletStage7702TransactorSession) TokensReceived(operator common.Address, from common.Address, to common.Address, amount *big.Int, data []byte, operatorData []byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.TokensReceived(&_WalletStage7702.TransactOpts, operator, from, to, amount, data, operatorData) +} + +// UpdateImageHash is a paid mutator transaction binding the contract method 0x29561426. +// +// Solidity: function updateImageHash(bytes32 _imageHash) returns() +func (_WalletStage7702 *WalletStage7702Transactor) UpdateImageHash(opts *bind.TransactOpts, _imageHash [32]byte) (*types.Transaction, error) { + return _WalletStage7702.contract.Transact(opts, "updateImageHash", _imageHash) +} + +// UpdateImageHash is a paid mutator transaction binding the contract method 0x29561426. +// +// Solidity: function updateImageHash(bytes32 _imageHash) returns() +func (_WalletStage7702 *WalletStage7702Session) UpdateImageHash(_imageHash [32]byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.UpdateImageHash(&_WalletStage7702.TransactOpts, _imageHash) +} + +// UpdateImageHash is a paid mutator transaction binding the contract method 0x29561426. +// +// Solidity: function updateImageHash(bytes32 _imageHash) returns() +func (_WalletStage7702 *WalletStage7702TransactorSession) UpdateImageHash(_imageHash [32]byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.UpdateImageHash(&_WalletStage7702.TransactOpts, _imageHash) +} + +// ValidateUserOp is a paid mutator transaction binding the contract method 0x19822f7c. +// +// Solidity: function validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes) userOp, bytes32 userOpHash, uint256 missingAccountFunds) returns(uint256 validationData) +func (_WalletStage7702 *WalletStage7702Transactor) ValidateUserOp(opts *bind.TransactOpts, userOp PackedUserOperation, userOpHash [32]byte, missingAccountFunds *big.Int) (*types.Transaction, error) { + return _WalletStage7702.contract.Transact(opts, "validateUserOp", userOp, userOpHash, missingAccountFunds) +} + +// ValidateUserOp is a paid mutator transaction binding the contract method 0x19822f7c. +// +// Solidity: function validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes) userOp, bytes32 userOpHash, uint256 missingAccountFunds) returns(uint256 validationData) +func (_WalletStage7702 *WalletStage7702Session) ValidateUserOp(userOp PackedUserOperation, userOpHash [32]byte, missingAccountFunds *big.Int) (*types.Transaction, error) { + return _WalletStage7702.Contract.ValidateUserOp(&_WalletStage7702.TransactOpts, userOp, userOpHash, missingAccountFunds) +} + +// ValidateUserOp is a paid mutator transaction binding the contract method 0x19822f7c. +// +// Solidity: function validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes) userOp, bytes32 userOpHash, uint256 missingAccountFunds) returns(uint256 validationData) +func (_WalletStage7702 *WalletStage7702TransactorSession) ValidateUserOp(userOp PackedUserOperation, userOpHash [32]byte, missingAccountFunds *big.Int) (*types.Transaction, error) { + return _WalletStage7702.Contract.ValidateUserOp(&_WalletStage7702.TransactOpts, userOp, userOpHash, missingAccountFunds) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_WalletStage7702 *WalletStage7702Transactor) Fallback(opts *bind.TransactOpts, calldata []byte) (*types.Transaction, error) { + return _WalletStage7702.contract.RawTransact(opts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_WalletStage7702 *WalletStage7702Session) Fallback(calldata []byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.Fallback(&_WalletStage7702.TransactOpts, calldata) +} + +// Fallback is a paid mutator transaction binding the contract fallback function. +// +// Solidity: fallback() payable returns() +func (_WalletStage7702 *WalletStage7702TransactorSession) Fallback(calldata []byte) (*types.Transaction, error) { + return _WalletStage7702.Contract.Fallback(&_WalletStage7702.TransactOpts, calldata) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_WalletStage7702 *WalletStage7702Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WalletStage7702.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_WalletStage7702 *WalletStage7702Session) Receive() (*types.Transaction, error) { + return _WalletStage7702.Contract.Receive(&_WalletStage7702.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_WalletStage7702 *WalletStage7702TransactorSession) Receive() (*types.Transaction, error) { + return _WalletStage7702.Contract.Receive(&_WalletStage7702.TransactOpts) +} + +// WalletStage7702CallAbortedIterator is returned from FilterCallAborted and is used to iterate over the raw logs and unpacked data for CallAborted events raised by the WalletStage7702 contract. +type WalletStage7702CallAbortedIterator struct { + Event *WalletStage7702CallAborted // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WalletStage7702CallAbortedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WalletStage7702CallAborted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WalletStage7702CallAborted) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WalletStage7702CallAbortedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WalletStage7702CallAbortedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WalletStage7702CallAborted represents a CallAborted event raised by the WalletStage7702 contract. +type WalletStage7702CallAborted struct { + OpHash [32]byte + Index *big.Int + ReturnData []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCallAborted is a free log retrieval operation binding the contract event 0xc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b. +// +// Solidity: event CallAborted(bytes32 indexed _opHash, uint256 _index, bytes _returnData) +func (_WalletStage7702 *WalletStage7702Filterer) FilterCallAborted(opts *bind.FilterOpts, _opHash [][32]byte) (*WalletStage7702CallAbortedIterator, error) { + + var _opHashRule []interface{} + for _, _opHashItem := range _opHash { + _opHashRule = append(_opHashRule, _opHashItem) + } + + logs, sub, err := _WalletStage7702.contract.FilterLogs(opts, "CallAborted", _opHashRule) + if err != nil { + return nil, err + } + return &WalletStage7702CallAbortedIterator{contract: _WalletStage7702.contract, event: "CallAborted", logs: logs, sub: sub}, nil +} + +// WatchCallAborted is a free log subscription operation binding the contract event 0xc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b. +// +// Solidity: event CallAborted(bytes32 indexed _opHash, uint256 _index, bytes _returnData) +func (_WalletStage7702 *WalletStage7702Filterer) WatchCallAborted(opts *bind.WatchOpts, sink chan<- *WalletStage7702CallAborted, _opHash [][32]byte) (event.Subscription, error) { + + var _opHashRule []interface{} + for _, _opHashItem := range _opHash { + _opHashRule = append(_opHashRule, _opHashItem) + } + + logs, sub, err := _WalletStage7702.contract.WatchLogs(opts, "CallAborted", _opHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WalletStage7702CallAborted) + if err := _WalletStage7702.contract.UnpackLog(event, "CallAborted", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCallAborted is a log parse operation binding the contract event 0xc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b. +// +// Solidity: event CallAborted(bytes32 indexed _opHash, uint256 _index, bytes _returnData) +func (_WalletStage7702 *WalletStage7702Filterer) ParseCallAborted(log types.Log) (*WalletStage7702CallAborted, error) { + event := new(WalletStage7702CallAborted) + if err := _WalletStage7702.contract.UnpackLog(event, "CallAborted", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WalletStage7702CallFailedIterator is returned from FilterCallFailed and is used to iterate over the raw logs and unpacked data for CallFailed events raised by the WalletStage7702 contract. +type WalletStage7702CallFailedIterator struct { + Event *WalletStage7702CallFailed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WalletStage7702CallFailedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WalletStage7702CallFailed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WalletStage7702CallFailed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WalletStage7702CallFailedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WalletStage7702CallFailedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WalletStage7702CallFailed represents a CallFailed event raised by the WalletStage7702 contract. +type WalletStage7702CallFailed struct { + OpHash [32]byte + Index *big.Int + ReturnData []byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCallFailed is a free log retrieval operation binding the contract event 0x115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d. +// +// Solidity: event CallFailed(bytes32 indexed _opHash, uint256 _index, bytes _returnData) +func (_WalletStage7702 *WalletStage7702Filterer) FilterCallFailed(opts *bind.FilterOpts, _opHash [][32]byte) (*WalletStage7702CallFailedIterator, error) { + + var _opHashRule []interface{} + for _, _opHashItem := range _opHash { + _opHashRule = append(_opHashRule, _opHashItem) + } + + logs, sub, err := _WalletStage7702.contract.FilterLogs(opts, "CallFailed", _opHashRule) + if err != nil { + return nil, err + } + return &WalletStage7702CallFailedIterator{contract: _WalletStage7702.contract, event: "CallFailed", logs: logs, sub: sub}, nil +} + +// WatchCallFailed is a free log subscription operation binding the contract event 0x115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d. +// +// Solidity: event CallFailed(bytes32 indexed _opHash, uint256 _index, bytes _returnData) +func (_WalletStage7702 *WalletStage7702Filterer) WatchCallFailed(opts *bind.WatchOpts, sink chan<- *WalletStage7702CallFailed, _opHash [][32]byte) (event.Subscription, error) { + + var _opHashRule []interface{} + for _, _opHashItem := range _opHash { + _opHashRule = append(_opHashRule, _opHashItem) + } + + logs, sub, err := _WalletStage7702.contract.WatchLogs(opts, "CallFailed", _opHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WalletStage7702CallFailed) + if err := _WalletStage7702.contract.UnpackLog(event, "CallFailed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCallFailed is a log parse operation binding the contract event 0x115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d. +// +// Solidity: event CallFailed(bytes32 indexed _opHash, uint256 _index, bytes _returnData) +func (_WalletStage7702 *WalletStage7702Filterer) ParseCallFailed(log types.Log) (*WalletStage7702CallFailed, error) { + event := new(WalletStage7702CallFailed) + if err := _WalletStage7702.contract.UnpackLog(event, "CallFailed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WalletStage7702CallSkippedIterator is returned from FilterCallSkipped and is used to iterate over the raw logs and unpacked data for CallSkipped events raised by the WalletStage7702 contract. +type WalletStage7702CallSkippedIterator struct { + Event *WalletStage7702CallSkipped // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WalletStage7702CallSkippedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WalletStage7702CallSkipped) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WalletStage7702CallSkipped) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WalletStage7702CallSkippedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WalletStage7702CallSkippedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WalletStage7702CallSkipped represents a CallSkipped event raised by the WalletStage7702 contract. +type WalletStage7702CallSkipped struct { + OpHash [32]byte + Index *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCallSkipped is a free log retrieval operation binding the contract event 0x9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b. +// +// Solidity: event CallSkipped(bytes32 indexed _opHash, uint256 _index) +func (_WalletStage7702 *WalletStage7702Filterer) FilterCallSkipped(opts *bind.FilterOpts, _opHash [][32]byte) (*WalletStage7702CallSkippedIterator, error) { + + var _opHashRule []interface{} + for _, _opHashItem := range _opHash { + _opHashRule = append(_opHashRule, _opHashItem) + } + + logs, sub, err := _WalletStage7702.contract.FilterLogs(opts, "CallSkipped", _opHashRule) + if err != nil { + return nil, err + } + return &WalletStage7702CallSkippedIterator{contract: _WalletStage7702.contract, event: "CallSkipped", logs: logs, sub: sub}, nil +} + +// WatchCallSkipped is a free log subscription operation binding the contract event 0x9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b. +// +// Solidity: event CallSkipped(bytes32 indexed _opHash, uint256 _index) +func (_WalletStage7702 *WalletStage7702Filterer) WatchCallSkipped(opts *bind.WatchOpts, sink chan<- *WalletStage7702CallSkipped, _opHash [][32]byte) (event.Subscription, error) { + + var _opHashRule []interface{} + for _, _opHashItem := range _opHash { + _opHashRule = append(_opHashRule, _opHashItem) + } + + logs, sub, err := _WalletStage7702.contract.WatchLogs(opts, "CallSkipped", _opHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WalletStage7702CallSkipped) + if err := _WalletStage7702.contract.UnpackLog(event, "CallSkipped", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCallSkipped is a log parse operation binding the contract event 0x9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b. +// +// Solidity: event CallSkipped(bytes32 indexed _opHash, uint256 _index) +func (_WalletStage7702 *WalletStage7702Filterer) ParseCallSkipped(log types.Log) (*WalletStage7702CallSkipped, error) { + event := new(WalletStage7702CallSkipped) + if err := _WalletStage7702.contract.UnpackLog(event, "CallSkipped", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WalletStage7702CallSucceededIterator is returned from FilterCallSucceeded and is used to iterate over the raw logs and unpacked data for CallSucceeded events raised by the WalletStage7702 contract. +type WalletStage7702CallSucceededIterator struct { + Event *WalletStage7702CallSucceeded // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WalletStage7702CallSucceededIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WalletStage7702CallSucceeded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WalletStage7702CallSucceeded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WalletStage7702CallSucceededIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WalletStage7702CallSucceededIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WalletStage7702CallSucceeded represents a CallSucceeded event raised by the WalletStage7702 contract. +type WalletStage7702CallSucceeded struct { + OpHash [32]byte + Index *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterCallSucceeded is a free log retrieval operation binding the contract event 0x5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a. +// +// Solidity: event CallSucceeded(bytes32 indexed _opHash, uint256 _index) +func (_WalletStage7702 *WalletStage7702Filterer) FilterCallSucceeded(opts *bind.FilterOpts, _opHash [][32]byte) (*WalletStage7702CallSucceededIterator, error) { + + var _opHashRule []interface{} + for _, _opHashItem := range _opHash { + _opHashRule = append(_opHashRule, _opHashItem) + } + + logs, sub, err := _WalletStage7702.contract.FilterLogs(opts, "CallSucceeded", _opHashRule) + if err != nil { + return nil, err + } + return &WalletStage7702CallSucceededIterator{contract: _WalletStage7702.contract, event: "CallSucceeded", logs: logs, sub: sub}, nil +} + +// WatchCallSucceeded is a free log subscription operation binding the contract event 0x5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a. +// +// Solidity: event CallSucceeded(bytes32 indexed _opHash, uint256 _index) +func (_WalletStage7702 *WalletStage7702Filterer) WatchCallSucceeded(opts *bind.WatchOpts, sink chan<- *WalletStage7702CallSucceeded, _opHash [][32]byte) (event.Subscription, error) { + + var _opHashRule []interface{} + for _, _opHashItem := range _opHash { + _opHashRule = append(_opHashRule, _opHashItem) + } + + logs, sub, err := _WalletStage7702.contract.WatchLogs(opts, "CallSucceeded", _opHashRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WalletStage7702CallSucceeded) + if err := _WalletStage7702.contract.UnpackLog(event, "CallSucceeded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseCallSucceeded is a log parse operation binding the contract event 0x5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a. +// +// Solidity: event CallSucceeded(bytes32 indexed _opHash, uint256 _index) +func (_WalletStage7702 *WalletStage7702Filterer) ParseCallSucceeded(log types.Log) (*WalletStage7702CallSucceeded, error) { + event := new(WalletStage7702CallSucceeded) + if err := _WalletStage7702.contract.UnpackLog(event, "CallSucceeded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WalletStage7702DefinedHookIterator is returned from FilterDefinedHook and is used to iterate over the raw logs and unpacked data for DefinedHook events raised by the WalletStage7702 contract. +type WalletStage7702DefinedHookIterator struct { + Event *WalletStage7702DefinedHook // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WalletStage7702DefinedHookIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WalletStage7702DefinedHook) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WalletStage7702DefinedHook) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WalletStage7702DefinedHookIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WalletStage7702DefinedHookIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WalletStage7702DefinedHook represents a DefinedHook event raised by the WalletStage7702 contract. +type WalletStage7702DefinedHook struct { + Selector [4]byte + Implementation common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDefinedHook is a free log retrieval operation binding the contract event 0x0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed1. +// +// Solidity: event DefinedHook(bytes4 selector, address implementation) +func (_WalletStage7702 *WalletStage7702Filterer) FilterDefinedHook(opts *bind.FilterOpts) (*WalletStage7702DefinedHookIterator, error) { + + logs, sub, err := _WalletStage7702.contract.FilterLogs(opts, "DefinedHook") + if err != nil { + return nil, err + } + return &WalletStage7702DefinedHookIterator{contract: _WalletStage7702.contract, event: "DefinedHook", logs: logs, sub: sub}, nil +} + +// WatchDefinedHook is a free log subscription operation binding the contract event 0x0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed1. +// +// Solidity: event DefinedHook(bytes4 selector, address implementation) +func (_WalletStage7702 *WalletStage7702Filterer) WatchDefinedHook(opts *bind.WatchOpts, sink chan<- *WalletStage7702DefinedHook) (event.Subscription, error) { + + logs, sub, err := _WalletStage7702.contract.WatchLogs(opts, "DefinedHook") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WalletStage7702DefinedHook) + if err := _WalletStage7702.contract.UnpackLog(event, "DefinedHook", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDefinedHook is a log parse operation binding the contract event 0x0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed1. +// +// Solidity: event DefinedHook(bytes4 selector, address implementation) +func (_WalletStage7702 *WalletStage7702Filterer) ParseDefinedHook(log types.Log) (*WalletStage7702DefinedHook, error) { + event := new(WalletStage7702DefinedHook) + if err := _WalletStage7702.contract.UnpackLog(event, "DefinedHook", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WalletStage7702ImageHashUpdatedIterator is returned from FilterImageHashUpdated and is used to iterate over the raw logs and unpacked data for ImageHashUpdated events raised by the WalletStage7702 contract. +type WalletStage7702ImageHashUpdatedIterator struct { + Event *WalletStage7702ImageHashUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WalletStage7702ImageHashUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WalletStage7702ImageHashUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WalletStage7702ImageHashUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WalletStage7702ImageHashUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WalletStage7702ImageHashUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WalletStage7702ImageHashUpdated represents a ImageHashUpdated event raised by the WalletStage7702 contract. +type WalletStage7702ImageHashUpdated struct { + NewImageHash [32]byte + Raw types.Log // Blockchain specific contextual infos +} + +// FilterImageHashUpdated is a free log retrieval operation binding the contract event 0x307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa. +// +// Solidity: event ImageHashUpdated(bytes32 newImageHash) +func (_WalletStage7702 *WalletStage7702Filterer) FilterImageHashUpdated(opts *bind.FilterOpts) (*WalletStage7702ImageHashUpdatedIterator, error) { + + logs, sub, err := _WalletStage7702.contract.FilterLogs(opts, "ImageHashUpdated") + if err != nil { + return nil, err + } + return &WalletStage7702ImageHashUpdatedIterator{contract: _WalletStage7702.contract, event: "ImageHashUpdated", logs: logs, sub: sub}, nil +} + +// WatchImageHashUpdated is a free log subscription operation binding the contract event 0x307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa. +// +// Solidity: event ImageHashUpdated(bytes32 newImageHash) +func (_WalletStage7702 *WalletStage7702Filterer) WatchImageHashUpdated(opts *bind.WatchOpts, sink chan<- *WalletStage7702ImageHashUpdated) (event.Subscription, error) { + + logs, sub, err := _WalletStage7702.contract.WatchLogs(opts, "ImageHashUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WalletStage7702ImageHashUpdated) + if err := _WalletStage7702.contract.UnpackLog(event, "ImageHashUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseImageHashUpdated is a log parse operation binding the contract event 0x307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa. +// +// Solidity: event ImageHashUpdated(bytes32 newImageHash) +func (_WalletStage7702 *WalletStage7702Filterer) ParseImageHashUpdated(log types.Log) (*WalletStage7702ImageHashUpdated, error) { + event := new(WalletStage7702ImageHashUpdated) + if err := _WalletStage7702.contract.UnpackLog(event, "ImageHashUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WalletStage7702NonceChangeIterator is returned from FilterNonceChange and is used to iterate over the raw logs and unpacked data for NonceChange events raised by the WalletStage7702 contract. +type WalletStage7702NonceChangeIterator struct { + Event *WalletStage7702NonceChange // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WalletStage7702NonceChangeIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WalletStage7702NonceChange) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WalletStage7702NonceChange) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WalletStage7702NonceChangeIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WalletStage7702NonceChangeIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WalletStage7702NonceChange represents a NonceChange event raised by the WalletStage7702 contract. +type WalletStage7702NonceChange struct { + Space *big.Int + NewNonce *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterNonceChange is a free log retrieval operation binding the contract event 0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881. +// +// Solidity: event NonceChange(uint256 _space, uint256 _newNonce) +func (_WalletStage7702 *WalletStage7702Filterer) FilterNonceChange(opts *bind.FilterOpts) (*WalletStage7702NonceChangeIterator, error) { + + logs, sub, err := _WalletStage7702.contract.FilterLogs(opts, "NonceChange") + if err != nil { + return nil, err + } + return &WalletStage7702NonceChangeIterator{contract: _WalletStage7702.contract, event: "NonceChange", logs: logs, sub: sub}, nil +} + +// WatchNonceChange is a free log subscription operation binding the contract event 0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881. +// +// Solidity: event NonceChange(uint256 _space, uint256 _newNonce) +func (_WalletStage7702 *WalletStage7702Filterer) WatchNonceChange(opts *bind.WatchOpts, sink chan<- *WalletStage7702NonceChange) (event.Subscription, error) { + + logs, sub, err := _WalletStage7702.contract.WatchLogs(opts, "NonceChange") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WalletStage7702NonceChange) + if err := _WalletStage7702.contract.UnpackLog(event, "NonceChange", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseNonceChange is a log parse operation binding the contract event 0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881. +// +// Solidity: event NonceChange(uint256 _space, uint256 _newNonce) +func (_WalletStage7702 *WalletStage7702Filterer) ParseNonceChange(log types.Log) (*WalletStage7702NonceChange, error) { + event := new(WalletStage7702NonceChange) + if err := _WalletStage7702.contract.UnpackLog(event, "NonceChange", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WalletStage7702StaticSignatureSetIterator is returned from FilterStaticSignatureSet and is used to iterate over the raw logs and unpacked data for StaticSignatureSet events raised by the WalletStage7702 contract. +type WalletStage7702StaticSignatureSetIterator struct { + Event *WalletStage7702StaticSignatureSet // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *WalletStage7702StaticSignatureSetIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(WalletStage7702StaticSignatureSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(WalletStage7702StaticSignatureSet) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *WalletStage7702StaticSignatureSetIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *WalletStage7702StaticSignatureSetIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// WalletStage7702StaticSignatureSet represents a StaticSignatureSet event raised by the WalletStage7702 contract. +type WalletStage7702StaticSignatureSet struct { + Hash [32]byte + Address common.Address + Timestamp *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterStaticSignatureSet is a free log retrieval operation binding the contract event 0xebf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1. +// +// Solidity: event StaticSignatureSet(bytes32 _hash, address _address, uint96 _timestamp) +func (_WalletStage7702 *WalletStage7702Filterer) FilterStaticSignatureSet(opts *bind.FilterOpts) (*WalletStage7702StaticSignatureSetIterator, error) { + + logs, sub, err := _WalletStage7702.contract.FilterLogs(opts, "StaticSignatureSet") + if err != nil { + return nil, err + } + return &WalletStage7702StaticSignatureSetIterator{contract: _WalletStage7702.contract, event: "StaticSignatureSet", logs: logs, sub: sub}, nil +} + +// WatchStaticSignatureSet is a free log subscription operation binding the contract event 0xebf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1. +// +// Solidity: event StaticSignatureSet(bytes32 _hash, address _address, uint96 _timestamp) +func (_WalletStage7702 *WalletStage7702Filterer) WatchStaticSignatureSet(opts *bind.WatchOpts, sink chan<- *WalletStage7702StaticSignatureSet) (event.Subscription, error) { + + logs, sub, err := _WalletStage7702.contract.WatchLogs(opts, "StaticSignatureSet") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(WalletStage7702StaticSignatureSet) + if err := _WalletStage7702.contract.UnpackLog(event, "StaticSignatureSet", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseStaticSignatureSet is a log parse operation binding the contract event 0xebf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1. +// +// Solidity: event StaticSignatureSet(bytes32 _hash, address _address, uint96 _timestamp) +func (_WalletStage7702 *WalletStage7702Filterer) ParseStaticSignatureSet(log types.Log) (*WalletStage7702StaticSignatureSet, error) { + event := new(WalletStage7702StaticSignatureSet) + if err := _WalletStage7702.contract.UnpackLog(event, "StaticSignatureSet", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// WalletStage7702DeployedBin is the resulting bytecode of the created contract +const WalletStage7702DeployedBin = "0x6080604052600436101561001e575b361561001c5761001c611dc8565b005b60003560e01c806223de291461018d57806313792a4a14610188578063150b7a02146101835780631626ba7e1461017e57806319822f7c146101795780631a9b2337146101745780631f6a1eb91461016f578063295614261461016a5780634fcf3eca1461016557806351605d8014610160578063540e3ad91461015b5780636ea44577146101565780638943ec02146101515780638c3f55631461014c57806392dcb3fc146101475780639c145aed14610142578063a65d69d41461013d578063aaf10f4214610138578063ad55366b14610133578063b93ea7ad1461012e578063bc197c8114610129578063f23a6e61146101245763f727ef1c0361000e57611562565b6114d5565b611403565b6112a4565b611258565b6111bf565b611150565b610fc1565b610f63565b610f27565b610ea3565b610e74565b610dbc565b610d83565b610c67565b610b80565b610a6f565b610a0c565b610957565b6108cf565b610842565b610745565b61024f565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b359073ffffffffffffffffffffffffffffffffffffffff821682036101b557565b9181601f840112156101b55782359167ffffffffffffffff83116101b557602083818601950101116101b557565b346101b55760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610286610192565b5061028f6101ba565b506102986101dd565b5060843567ffffffffffffffff81116101b5576102b9903690600401610221565b505060a43567ffffffffffffffff81116101b55761001c903690600401610221565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60e0810190811067ffffffffffffffff82111761032657604052565b6102db565b6040810190811067ffffffffffffffff82111761032657604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761032657604052565b6040519061039760e083610347565b565b6040519061039761012083610347565b359060ff821682036101b557565b359081151582036101b557565b67ffffffffffffffff81116103265760051b60200190565b67ffffffffffffffff811161032657601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192610422826103dc565b916104306040519384610347565b8294818452818301116101b5578281602093846000960137010152565b9080601f830112156101b55781602061046893359101610416565b90565b81601f820112156101b557803590610482826103c4565b926104906040519485610347565b82845260208085019360051b830101918183116101b55760208101935b8385106104bc57505050505090565b843567ffffffffffffffff81116101b557820160e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082860301126101b557610503610388565b9161051060208301610200565b83526040820135602084015260608201359267ffffffffffffffff84116101b55760e08361054588602080988198010161044d565b60408401526080810135606084015261056060a082016103b7565b608084015261057160c082016103b7565b60a0840152013560c08201528152019401936104ad565b9080601f830112156101b557813561059f816103c4565b926105ad6040519485610347565b81845260208085019260051b8201019283116101b557602001905b8282106105d55750505090565b602080916105e284610200565b8152019101906105c8565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82850301126101b55761065f610399565b9061066c816004016103a9565b825261067a602482016103b7565b6020830152604481013567ffffffffffffffff81116101b5578460046106a29284010161046b565b6040830152606481013560608301526084810135608083015260a481013567ffffffffffffffff81116101b5578460046106de9284010161044d565b60a083015260c481013560c083015260e481013560e083015261010481013567ffffffffffffffff81116101b5576004859161071b930101610588565b610100820152916024359067ffffffffffffffff82116101b55761074191600401610221565b9091565b346101b557610753366105ed565b909161010081019261076e61076985515161166a565b61168a565b9160005b855180518210156107d557906107cf6107aa61079083600195611708565b5173ffffffffffffffffffffffffffffffffffffffff1690565b6107b48388611708565b9073ffffffffffffffffffffffffffffffffffffffff169052565b01610772565b50508383866107ea336107b483515185611708565b526107f6818484611e9a565b50156108085760405160018152602090f35b61083e906040519384937ff58cc8b500000000000000000000000000000000000000000000000000000000855260048501611963565b0390fd5b346101b55760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610879610192565b506108826101ba565b5060643567ffffffffffffffff81116101b5576108a3903690600401610221565b505060206040517f150b7a02000000000000000000000000000000000000000000000000000000008152f35b346101b55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043560243567ffffffffffffffff81116101b55760209161092761092d923690600401610221565b91611988565b7fffffffff0000000000000000000000000000000000000000000000000000000060405191168152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b5576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126101b5576109da60209160243560443591600401611a31565b604051908152f35b7fffffffff000000000000000000000000000000000000000000000000000000008116036101b557565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576020610a51600435610a4c816109e2565b6120aa565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043567ffffffffffffffff81116101b557610ab9903690600401610221565b60243567ffffffffffffffff81116101b557610ad9903690600401610221565b9160027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610b5657610b309360027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55611b9b565b60017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b7f37ed32e80000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557600435303303610c39578015610c0f576020817f307ed6bd941ee9fc80f369c94af5fa11e25bab5102a6140191756c5474a30bfa927fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf855604051908152a1005b7f4294d1270000000000000000000000000000000000000000000000000000000060005260046000fd5b7fa19dbf00000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557600435610c9d816109e2565b303303610c395773ffffffffffffffffffffffffffffffffffffffff610cc2826120aa565b1615610d285760407fffffffff000000000000000000000000000000000000000000000000000000007f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19216610d19600082612eef565b815190815260006020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f1c3812cc000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b60009103126101b557565b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760206109da611c91565b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101b5576004359067ffffffffffffffff82116101b55761074191600401610221565b610e7d36610e2b565b90303303610c3957610e9361001c925a926121df565b90610e9d826128f4565b9061255e565b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557610eda610192565b5060443567ffffffffffffffff81116101b557610efb903690600401610221565b505060206040517f8943ec02000000000000000000000000000000000000000000000000000000008152f35b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760206109da600435612982565b346101b55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576040610f9f6004356129c8565b73ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b346101b557610fcf36610e2b565b9060027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5414610b565760027ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde5573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156111265733036110f857303b156101b5576110a29160009160405193849283927f6ea4457700000000000000000000000000000000000000000000000000000000845260048401611d87565b038183305af180156110f3576110d85760017ffc6e07e3992c7c3694a921dc9e412b6cfe475380556756a19805a9e3ddfe2fde55005b806110e760006110ed93610347565b80610d78565b38610b30565b6119d4565b7f1d6ddbf4000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b7fd13d78350000000000000000000000000000000000000000000000000000000060005260046000fd5b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101b55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b557602060006017303b146112195773ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6017600080303c60005162ef01008160e81c14611237575b50610a51565b73ffffffffffffffffffffffffffffffffffffffff915060481c1638611231565b346101b55760c061127460008061126e366105ed565b91612ac9565b92909190611280611c91565b821490604051958652602086015260408501526060840152608083015260a0820152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b5576004356112da816109e2565b6112e26101ba565b90303303610c395773ffffffffffffffffffffffffffffffffffffffff611308826120aa565b16611382577f0d7fc113eaf016db4681a1ba86d083ce3e0961f321062a75ac2b0aeb33deeed19173ffffffffffffffffffffffffffffffffffffffff7fffffffff000000000000000000000000000000000000000000000000000000006040931691166113758183612eef565b82519182526020820152a1005b7fffffffff00000000000000000000000000000000000000000000000000000000907f5b4d6d6a000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b9181601f840112156101b55782359167ffffffffffffffff83116101b5576020808501948460051b0101116101b557565b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55761143a610192565b506114436101ba565b5060443567ffffffffffffffff81116101b5576114649036906004016113d2565b505060643567ffffffffffffffff81116101b5576114869036906004016113d2565b505060843567ffffffffffffffff81116101b5576114a8903690600401610221565b50506040517fbc197c81000000000000000000000000000000000000000000000000000000008152602090f35b346101b55760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55761150c610192565b506115156101ba565b5060843567ffffffffffffffff81116101b557611536903690600401610221565b505060206040517ff23a6e61000000000000000000000000000000000000000000000000000000008152f35b346101b55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101b55760043561159c6101ba565b604435916bffffffffffffffffffffffff83168093036101b557303303610c39578273ffffffffffffffffffffffffffffffffffffffff836116277febf265acfac1c01de588ed7ef49743b9c3ce8d6d1edeaf510a1f5453228515b1967fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606097881b161785612e6b565b6040519384521660208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b906001820180921161167857565b61163b565b9190820180921161167857565b90611694826103c4565b6116a16040519182610347565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06116cf82946103c4565b0190602036910137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805182101561171c5760209160051b010190565b6116d9565b919082519283825260005b84811061176b5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b8060208092840101518282860101520161172c565b9080602083519182815201916020808360051b8301019401926000915b8383106117ac57505050505090565b9091929394602080827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0856001950301865288519073ffffffffffffffffffffffffffffffffffffffff8251168152828201518382015260c08061181f604085015160e0604086015260e0850190611721565b936060810151606085015260808101511515608085015260a0810151151560a085015201519101529701930193019193929061179d565b906020808351928381520192019060005b8181106118745750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101611867565b805160ff168252610468916020828101511515908201526101006118fe6118d860408501516101206040860152610120850190611780565b606085015160608501526080850151608085015260a085015184820360a0860152611721565b9260c081015160c084015260e081015160e0840152015190610100818403910152611856565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b9161197a61046894926040855260408501906118a0565b926020818503910152611924565b906119a5929161199661204f565b906003825260e0820152611e9a565b50156119cf577f1626ba7e0000000000000000000000000000000000000000000000000000000090565b600090565b6040513d6000823e3d90fd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156101b5570180359067ffffffffffffffff82116101b5576020019181360383136101b557565b909173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115611126578133036110f85780611ae5575b5050611ad57f1626ba7e0000000000000000000000000000000000000000000000000000000092610927836101007fffffffff000000000000000000000000000000000000000000000000000000009501906119e0565b1603611ae057600090565b600190565b813b156101b5576040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015291600091839160249183915af19283156110f3576109277fffffffff0000000000000000000000000000000000000000000000000000000093611ad5937f1626ba7e0000000000000000000000000000000000000000000000000000000096611b86575b5093505092611a7e565b806110e76000611b9593610347565b38611b7c565b91939290611baa905a936121df565b9160608301516080840151611bbe82612982565b818103611c5d57509060017f1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881920190611bf78282612eb0565b604080519182526020820192909252a1611c12828685611e9a565b929015611c25575061039793945061255e565b8361083e87926040519384937fa2b6d61b00000000000000000000000000000000000000000000000000000000855260048501611963565b917f9b6514f40000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b7fea7157fa25e3aa17d0ae2d5280fa4e24d421c61842aa85e45194e1145aa72bf85480610468575060405160208101907f53657175656e6365207369676e65723a0a00000000000000000000000000000082527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660318201526001604582015260458152611d25606582610347565b519020600052600160205260406000206000526000602052604060002060005273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016602052604060002090565b916020610468938181520191611924565b3d15611dc3573d90611da9826103dc565b91611db76040519384610347565b82523d6000602084013e565b606090565b600436108015611dd55750565b611e0b906000357fffffffff00000000000000000000000000000000000000000000000000000000811691611e5d575b506120aa565b73ffffffffffffffffffffffffffffffffffffffff8116611e295750565b60008091604051368382378036810184815203915af4611e47611d98565b9015611e5557602081519101f35b602081519101fd5b7fffffffff000000000000000000000000000000000000000000000000000000008092503660040360031b1b161638611e05565b901561171c5790565b611ecd611ea78484611e91565b357fff000000000000000000000000000000000000000000000000000000000000001690565b7f800000000000000000000000000000000000000000000000000000000000000080821614611f505750611f05926000928392612ac9565b905091909192808210611f20575050611f1d90613ce1565b91565b7ffd41fcba0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b7f0200000000000000000000000000000000000000000000000000000000000000908116146020820152611f86925090506128f4565b90611f90826129c8565b4281111561201d575073ffffffffffffffffffffffffffffffffffffffff81168015159081612012575b50611fc6575060019190565b7f8945c3130000000000000000000000000000000000000000000000000000000060005260048390523360245273ffffffffffffffffffffffffffffffffffffffff1660445260646000fd5b905033141538611fba565b7ff95b6ab700000000000000000000000000000000000000000000000000000000600052600484905260245260446000fd5b60405190610120820182811067ffffffffffffffff821117610326576040526060610100836000815260006020820152826040820152600083820152600060808201528260a0820152600060c0820152600060e08201520152565b73ffffffffffffffffffffffffffffffffffffffff906040517fffffffff0000000000000000000000000000000000000000000000000000000060208201927fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a120845216604082015260408152612121606082610347565b519020541690565b90612133826103c4565b6121406040519182610347565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061216e82946103c4565b019060005b82811061217f57505050565b60209060405161218e8161030a565b60008152600083820152606060408201526000606082015260006080820152600060a0820152600060c082015282828501015201612173565b909392938483116101b55784116101b5578101920390565b906121e861204f565b6000815291600190803560f81c827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818316016124b75750600060608601525b600761223760ff831660011c90565b1680612466575b50601081811603612438575060015b61225681612129565b604086019081526000925b82841061229e5750505050036122745790565b7f0bdf80380000000000000000000000000000000000000000000000000000000060005260046000fd5b9293919290918082013560f81c9060010194908560018083160361241657506122e8306122cc848751611708565b519073ffffffffffffffffffffffffffffffffffffffff169052565b6002808216146123f6575b6004808216146123a8575b600880821614612373575b9061235a61235460c0846123346010806001981614608061232b888c51611708565b51019015159052565b61234a60208083161460a061232b888c51611708565b1660061c60031690565b60ff1690565b60c0612367838751611708565b51015201929190612261565b946001919061235a906123549060c09086810135906020019990606061239a878b51611708565b510152939450505050612309565b946123f0908381013560e81c906003016123e96123d06123c8848461167d565b838c896121c7565b919060406123df888b51611708565b5101923691610416565b905261167d565b946122fe565b9482810135906020019590602061240e848751611708565b5101526122f3565b61243396508381013560601c9060140196906122cc848751611708565b6122e8565b60209081160361245557600282019181013560f01c905b9061224d565b600182019181013560f81c9061244f565b6124aa919383929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b929060808601523861223e565b80830135606090811c908701526014019250612228565b6124e6604092959493956060835260608301906118a0565b9460208201520152565b9261046896959260c09592855260208501526040840152606083015260808201528160a08201520190611721565b604090610468939281528160208201520190611721565b61254b61046894926060835260608301906118a0565b9260208201526040818403910152611721565b916000604082019384515190825b82811061257d575b50505050505050565b612588818851611708565b519361259760a0860151151590565b8061287b575b612841575060009360608101518015801580612838575b6128005784906125c76080850151151590565b156127ba57612672926125ee855173ffffffffffffffffffffffffffffffffffffffff1690565b91156127b457505a905b61266d8b61264160608d01516040890151908c8b604051998a967f4c4e814c000000000000000000000000000000000000000000000000000000006020890152602488016124f0565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284610347565b612e3e565b156126bb575b50600190867f5a589b1d8062f33451d29cae3dabd9b2e36c62aee644178c600977ca8dda661a604051806126b185829190602083019252565b0390a25b0161256c565b60c00180511561276b57600181511461272c57516002146126dc5738612678565b93505050507fc2c704302430fe0dc8d95f272e2f4e54bbbc51a3327fd5d75ab41f9fc8fd129b91925061270d612e50565b9061271d6040519283928361251e565b0390a238808080808080612574565b508461083e612739612e50565b6040519384937f7f6b0bb100000000000000000000000000000000000000000000000000000000855260048501612535565b50925060018093867f115f347c00e69f252cd6b63c4f81022a9564c6befe8aa719cb74640a4a306f0d6127ac61279f612e50565b604051918291868361251e565b0390a26126b5565b906125f8565b83516127f593925073ffffffffffffffffffffffffffffffffffffffff16916020850151916000146127fa57505a905b604085015192612e2c565b612672565b906127ea565b838861083e5a6040519384937f21395274000000000000000000000000000000000000000000000000000000008552600485016124ce565b50815a106125b4565b9350600190867f9ae934bf8a986157c889a24c3b3fa85e74b7e4ee4b1f8fc6e7362cb4c1d19d8b604051806127ac85829190602083019252565b50801561259d565b90604051907fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208301937f53657175656e6365207369676e65723a0a000000000000000000000000000000855260601b1660318301526045820152604581526128ee606582610347565b51902090565b6129566128ee61291461290e602085015115153090612f2e565b93613029565b60405192839160208301958690916042927f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201520190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610347565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e83526040820152604081526129c1606082610347565b5190205490565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612a07606082610347565b51902054906bffffffffffffffffffffffff8260601c921690565b60405190612a2f8261032b565b60006020838281520152565b60031115612a4557565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b908160409103126101b557602060405191612a8e8361032b565b805183520151602082015290565b60409073ffffffffffffffffffffffffffffffffffffffff61046894931681528160208201520190611721565b909491939291853560f81c600190938190612ae2612a22565b92612aec82612a3b565b60018203612cf6575b50600180871614612c95575060028581161460208501526007600286901c1688820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908096918196602016612b649060051c90565b612b6d9061166a565b8a820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101959098899a81612bb9846128f4565b988993612bc5936121c7565b91612bcf9361346b565b9098612be391600052602052604060002090565b90612bf691600052602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16612c1f91600052602052604060002090565b94815190868215159283612c8a575b505081612c7b575b50612c3e5750565b6040517fccbb534f000000000000000000000000000000000000000000000000000000008152815160048201526020909101516024820152604490fd5b90506020820151101538612c36565b141591508638612c2e565b909691939450612ca781989398612a3b565b612ccc57612cc19581612cb9936121c7565b93909261321e565b919394909293929190565b7ffdf132ad0000000000000000000000000000000000000000000000000000000060005260046000fd5b600097507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06040881601612af5578981013560601c9750601401915087878a84612d3f85612a3b565b60028503612d50575b505050612af5565b60038101965093945073ffffffffffffffffffffffffffffffffffffffff9381013560e81c92604092612dd5929091612da091612d99918a90612d93898361167d565b926121c7565b3691610416565b83519586809481937fccce3bc80000000000000000000000000000000000000000000000000000000083523060048401612a9c565b0392165afa80156110f357612df392600091612dfd575b509361167d565b9087388a81612d48565b612e1f915060403d604011612e25575b612e178183610347565b810190612a74565b38612dec565b503d612e0d565b9160009391849360208451940192f190565b9160009291839260208351930191f490565b3d90604051916020818401016040528083526000602084013e565b60405160208101917fc852adf5e97c2fc3b38f405671e91b7af1697ef0287577f227ef10494c2a8e868352604082015260408152612eaa606082610347565b51902055565b60405160208101917f8d0bf1fd623d628c741362c1289948e57b3e2905218c676d3e69abee36d6ae2e8352604082015260408152612eaa606082610347565b60405160208101917fbe27a319efc8734e89e26ba4bc95f5c788584163b959f03fa04e2d7ab4b9a1208352604082015260408152612eaa606082610347565b15612fde576000905b73ffffffffffffffffffffffffffffffffffffffff6040519160208301937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f85527f4aa45ca7ad825ceb1bf35643f0a58c295239df563b1b565c2485f96477c5631860408501527f2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de606085015260808401521660a082015260a081526128ee60c082610347565b4690612f37565b805160209091019060005b818110612ffd5750505090565b825173ffffffffffffffffffffffffffffffffffffffff16845260209384019390920191600101612ff0565b61010081015160405161304481612956602082018095612fe5565b51902090613053815160ff1690565b60ff8116806130cc575050906128ee61306f6040840151613d1b565b9261295660806060830151920151936040519485936020850197889094939260809260a08301967f11e1e4079a79a66e4ade50033cfe2678cdd5341d2dfe5ef9513edb1a0be147a284526020840152604083015260608201520152565b6001810361312a57505060a001518051602091820120604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466938101938452908101919091526060810192909252906128ee8160808101612956565b6002810361318057505060c00151604080517f11fdeb7e8373a1aa96bfac8d0ea91526b2c5d15e5cee20e0543e780258f3e8e4602082019081529181019290925260608201929092526128ee8160808101612956565b6003036131d4575060e00151604080517fe19a3b94fc3c7ece3f890d98a99bc422615537a08dea0603fa8425867d87d466602082019081529181019290925260608201929092526128ee8160808101612956565b7f048183200000000000000000000000000000000000000000000000000000000060005260ff1660045260246000fd5b906124e69060409396959496606084526060840191611924565b919492909260009560009560009560009560009561323a61204f565b60028152937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9460005b82811061329157505050505050508051151580613283575b612c3e5750565b50602081015184111561327c565b600381019d50959b50939950919750929091906132b5908b9085013560e81c61167d565b958287036133f5578a6001915b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c036133c65750613302916132fb898c9387896121c7565b908b612ac9565b9c939c9b929b9a919a99909a9b9d8e9d9e8f905b106133805750928b885114613377575b808b101561334557508a60c08501528992959295949194939093613264565b7f37daf62b0000000000000000000000000000000000000000000000000000000060005260048b905260245260446000fd5b60008852613326565b8d8f61083e61339185858c8e6121c7565b9390926040519485947fb006aba000000000000000000000000000000000000000000000000000000000865260048601613204565b979899809b926133db8b6133e294888a6121c7565b9086612ac9565b50929d919c909b929a9092918e8e613316565b8a6002916132c2565b908160209103126101b55751610468816109e2565b604090610468949281528160208201520191611924565b73ffffffffffffffffffffffffffffffffffffffff610468959360609383521660208201528160408201520191611924565b908160209103126101b5575190565b9391909360009460009460005b818110613486575050505050565b8481013560f881901c9860019092019788979692909160fc1c988915613c7a575060018914613c3a5760028914613a6d5760038914613a3e57600489146139bd576006891461391d57600589146138cf576007891461380857600889146137b2576009891461368957600a8914613526577fb2505f7c00000000000000000000000000000000000000000000000000000000600052600489905260246000fd5b90919293949596975060038916978815613678575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01169101908101908161359e9187876121c7565b6040517f898bd921000000000000000000000000000000000000000000000000000000008152939184916135d6918a60048501613413565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156110f35761361993600093613645575b5060ff909a168091019a613f7c565b90801561363f579061363391600052602052604060002090565b955b9392919093613478565b50613633565b60ff91935061366a9060203d8111613671575b6136628183610347565b81019061345c565b929061360a565b503d613658565b8084013560f81c985060010161353b565b909192939495969750600389169788156137a1575b8381013560601c90601401909960021c60031660ff1684820135600382901b6101008190039190911c600190911b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0116910190810190816137019187876121c7565b6040517f13792a4a00000000000000000000000000000000000000000000000000000000815293918491613739918b60048501611963565b038373ffffffffffffffffffffffffffffffffffffffff8d1691815a93602094fa9182156110f35761377b93600093613645575060ff909a168091019a613f7c565b90801561379b579061379591600052602052604060002090565b95613635565b50613795565b8084013560f81c985060010161369e565b9850602087019750949593949293919290918201356137d086613f23565b81146137e0575b61377b90613f3d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98506137d7565b975090919293949597600f169687156138bd575b6020600061382e61389b9a9b86613e56565b9c9092918a604051613871816129568a82019485603c917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008252601c8201520190565b51902092604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156110f35761377b9060ff6000519a1680910199612883565b600189019883013560f81c975061381c565b9850602087019750949593949293919290918201358085146138f5575b61377b90613ee4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98506138ec565b989091929394959662ffffff985061393f612354600c8416603f9060021c1690565b9182156139a9575b6003168015613998575b90819061397c90613974908781013560e81c906003019c168c01809c89896121c7565b90898b61346b565b91111561398f575b9061377b9291613e99565b99820199613984565b50600281019084013560f01c613951565b8482013560f81c9250600190910190613947565b975097613a13613a20929394959697600f613a2893169085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b92908301809386866121c7565b90868861346b565b9061379592980198600052602052604060002090565b98509650939492939192909190808201359060200196801561379b579061379591600052602052604060002090565b90919293949596975060038916978815613c29575b8084013560601c99613ae19160140190613aa19060021c600316612354565b9085929190928160031b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001821b019185013590610100031c16920190565b90810190613b4560208c613af785858b8b6121c7565b919073ffffffffffffffffffffffffffffffffffffffff8c604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501613413565b0392165afa9081156110f3577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091613bfb575b501603613bb757509060ff61377b92991680910199612883565b61083e613bc88c93899389896121c7565b906040519485947fb2fed7ae0000000000000000000000000000000000000000000000000000000086526004860161342a565b613c1c915060203d8111613c22575b613c148183610347565b8101906133fe565b38613b9d565b503d613c0a565b8381013560f81c9850600101613a82565b98600f91929394959697985016968715613c69575b601481019761377b9160ff9091169084013560601c612883565b8281013560f81c9750600101613c4f565b98509091929394959698600f16978815613ccc575b5060206000613ca261389b9a9b86613e56565b9c90916040519384938c859094939260ff6060936080840197845216602083015260408201520152565b60018101995083013560f81c97506020613c8f565b613ce9611c91565b1490565b805160209091019060005b818110613d055750505090565b8251845260209384019390920191600101613cf8565b9081517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613d61613d4b836103c4565b92613d596040519485610347565b8084526103c4565b0136602083013760005b8351811015613e3d5780613d8160019286611708565b5173ffffffffffffffffffffffffffffffffffffffff81511690602081015190604081015160208151910120906060810151608082015115159060c060a08401511515930151936040519560208701977f0603985259a953da1f65a522f589c17bd1d0117ec1d3abb7c0788aef251ef437895260408801526060870152608086015260a085015260c084015260e08301526101008201526101008152613e2961012082610347565b519020613e368285611708565b5201613d6b565b509091506040516128ee81612956602082018095613ced565b8101916040602084359401359201601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c0160ff81116116785791565b916040519160208301937f53657175656e6365206e657374656420636f6e6669673a0a00000000000000008552603884015260588301526078820152607881526128ee609882610347565b60405160208101917f53657175656e636520737461746963206469676573743a0a000000000000000083526038820152603881526128ee605882610347565b6129566128ee61291461290e600060208601511515612f2e565b60405160208101917f53657175656e636520616e792061646472657373207375626469676573743a0a83526040820152604081526128ee606082610347565b91604051917fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060208401947f53657175656e63652073617069656e7420636f6e6669673a0a00000000000000865260601b166039840152604d830152606d820152606d81526128ee608d8261034756fea264697066735822122070d2ccb5d2e8d1051d4fbeee4718ed4044611e6d09516015fc4e660973e187a464736f6c634300081c0033"